POJ 2976 Dropping tests(二分答案)
2024-10-11 10:45:27
【题目链接】 http://poj.org/problem?id=2976
【题目大意】
给出每门成绩的总分和得分,去除k门成绩之后
使得剩余的成绩分数和除以总分得到的数字最大,要求精度在三位小数之内四舍五入到整数
【题解】
如果答案是x,那么必有选取的几门课程sigma(a*100)>=sigma(b*x)
至于选取,就可以根据a*100-b*x排序,贪心选取即可。
对于最后的精度处理问题,只要将数据放大处理末尾即可。
【代码】
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=1010;
struct data{long long a,b;}p[N];
int n,m,k;
bool cmp(data a,data b){return a.a*1000000-a.b*m>b.a*1000000-b.b*m;}
bool check(int x){
m=x;
sort(p+1,p+n+1,cmp);
long long cnt=0;
for(int i=1;i<=k;i++)cnt+=p[i].a*1000000-p[i].b*x;
return cnt>=0;
}
int main(){
while(~scanf("%d%d",&n,&k),n+k){
k=n-k;
for(int i=1;i<=n;i++)scanf("%lld",&p[i].a);
for(int i=1;i<=n;i++)scanf("%lld",&p[i].b);
int l=0,r=1000000,ans;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid))l=mid+1,ans=mid;
else r=mid-1;
}printf("%d\n",ans/10000+(ans%10000>=5000));
}return 0;
}
最新文章
- LinkedList实现队列和堆栈的代码
- WPF的二维绘图(二)——几何图形Geometry
- C# 操作鼠标移动到指定的屏幕位置方法
- class.forname()用法 转
- zxing 一维码部分深入分析与实际应用,识别卡片数量,Android数卡器
- gdb学习
- 配置域主DNS服务器
- 使用工具追踪Entity Framework生成的SQL
- 自然语言处理——NLTK中文语料库语料库
- HDU1243:反恐训练营
- 信息:Could not publish server configuration for Tomcat v6.0 Server at localhost. Multiple Context
- Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建
- Java_XML操作
- VB2012读取xml
- spring 源码之IOC 类图
- uboot启动阶段修改启动参数方法及分析
- java-两个jre目录和三个lib目录-转
- 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标
- Android开发之漫漫长途 Ⅴ——Activity的显示之ViewRootImpl的PreMeasure、WindowLayout、EndMeasure、Layout、Draw
- GET方式提交中文编码问题以及三种解决方式
热门文章
- Digital Roots(hdoj1013)
- EntityFramework+Autofac+MVC+EasyUI 搭建公司基本服务项目
- 利用Azure Backup备份和恢复虚拟机(2)
- Oracle EBS-SQL (INV-7):检查接收中记录数.sql
- java 编码 UTF-8、ISO-8859-1、GBK 【转】
- 【配置】电信华为HG8245 无线路由器配置 有贴图
- SSD和HDD的区别
- 杭电oj 2719
- QT 绘制按钮 paintEvent enterEvent leaseEvent mouseEvent
- 类加载器与methodinterceptor接口