poj 2976 drop texts(二分搜索)
来源:互联网 发布:雷欧团灭mac的怪兽 编辑:程序博客网 时间:2024/05/19 17:09
题目链接:点击打开链接
二分搜索答案。
若 某些a[i]的和/某些b[i]的和>=x; 则某些a[i]的和-这些b[i]*x的和>=0 ;这样只要从大到小选n-k个a[i]-b[i]*x求和,如果和大于等于0就可行(这个公式其实很好理解)
根据这个公式去2分搜索答案即可
代码:
#include <iostream>#include <cstdio>#include <cstring>#define eps 1e-7#include <algorithm>using namespace std;int a[1005];int b[1005];double p[1005];int n,k;bool cmp(double a,double b){ return a>b;}bool C(double mid){ for(int i=1;i<=n;i++){ p[i]=a[i]-mid*b[i]; } sort(p+1,p+n+1,cmp); double sum=0; for(int i=1;i<=k;i++){ sum+=p[i]; } if(sum>=0) return 1; return 0;}int main(){ while(~scanf("%d%d",&n,&k),n){ k=n-k; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=1;i<=n;i++){ scanf("%d",&b[i]); } double l=0,r=1; double mid; while(r-l>eps){ mid=(r+l)/2; if(C(mid)) l=mid; else r=mid; } printf("%.0f\n",100*(mid+eps)); } return 0;}
0 0
- poj 2976 drop texts(二分搜索)
- POJ 3104&&POJ 2976 继续二分搜索。。。
- POJ - 2976 Dropping tests(二分搜索:最大化平均值)
- POJ 2976 Dropping tests、3111 K Best (二分搜索)
- POJ 2976 - Dropping tests(二分搜索)
- POJ - Cable master (二分搜索)
- POJ - 3104 Drying (二分搜索)
- poj 3258 River Hopscotch(二分搜索)
- POJ 1003 Hangover(二分搜索)
- POJ 1064 Cable master (二分搜索)
- POJ 2456 Aggressive cows (二分搜索)
- POJ 3258 River Hopscotch (二分搜索)
- POJ 3273 Monthly Expense (二分搜索)
- POJ 3104 Drying (二分搜索)
- POJ 3579 Median (二分搜索)
- POJ 3685 Matrix (二分搜索)
- POJ 1759 Garland (二分搜索)
- POJ 3484 Showstopper (二分搜索)
- Linux网络编程之socket:由一个进程发起多个连接
- Leetcode LRU Cache
- poj1094注意事项
- Oracle -- plsql异常处理
- Xcode6中自动布局autolayout和sizeclass的使用
- poj 2976 drop texts(二分搜索)
- fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏=》 解决办法
- 用calloc分配10块大小为4字节的内存空间,打印指针地址,并且打印出内存中的内容
- Linux权限管理-chown
- 磁力搜索引擎-RunBt
- 使用malloc分别分配2KB,6KB的内存空间,打印指针地址
- DG 单实例与RAC实例 metalink ID
- UVA - 11059 Maximum Product
- s3c2410 MMU(存储器管理单元)讲解