【POJ 2976】 Dropping Tests
2024-08-24 11:39:53
【题目链接】
http://poj.org/problem?id=2976
【算法】
0/1分数规划
【代码】
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std;
#define MAXN 1010
const double eps = 1e-; int i,n,k;
double l,r,mid,ans;
long long a[MAXN],b[MAXN];
double d[MAXN]; inline bool cmp(double a,double b)
{
return a > b;
}
inline bool check()
{
int i;
double sum = ;
sort(d+,d+n+,cmp);
for (i = ; i <= n - k; i++) sum += d[i];
return sum >= ;
} int main()
{ while (scanf("%d%d",&n,&k) != EOF && !(n == && k == ))
{
for (i = ; i <= n; i++) scanf("%lld",&a[i]);
for (i = ; i <= n; i++) scanf("%lld",&b[i]);
l = ; r = ;
ans = ;
while (r - l > eps)
{
mid = (l + r) / 2.0;
for (i = ; i <= n; i++) d[i] = 1.0 * a[i] - mid * b[i];
if (check())
{
l = mid;
ans = mid;
} else r = mid;
}
printf("%lld\n",(long long)(ans*+0.5));
} return ; }
最新文章
- JavaScript的客户端存储
- [Unity3D]导入模型并且设置相应的属性
- Mark Down 尝试
- [SGU495] Kids and Prizes (概率dp)
- MyEclipse 选中右侧编辑的文件时自动展开左侧目录树
- ubuntu 编译oce Open CASCADE
- sqlite数据库执行full outer join
- starling 笔记
- hadoop cdh 4.5的安装配置
- hdu1824-Let&#39;s go home:图论2-SAT
- JS 三目运算符和RETURN
- python基础教程——函数
- lesson - 11 课程笔记
- eslint 入门项目搭建过程
- SpringBoot添加自定义拦截器
- 2.SSM整合_多表_一对一或多对一的增删改查
- XAMPP 虚拟主机配置,实现多域名访问本地项目
- Python 多个分隔符 读取逗号和空格分开的数据
- js拷贝实例;
- js簡介