POJ 2976 裸的01分数规划
2016-04-04 20:43
441 查看
题意:给你n个数对(认为是a数组和b数组吧),从中取n-m个数对,如果选第i个数对,定义x[i]=1,求R=∑(a[i]*x[i])/∑(b[i]*x[i])取得最大值时R的值。输出R*100(保留到整数)
输入:第一行 n,m。第二行 a数组的值,第三行b数组的值。以n=m=0结束。
原题:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; int n,m,a[10005],b[10005]; double c[10005]; bool cmp(int a,int b) { return a>b; } bool judge(double k) { for(int i=1;i<=n;i++) { c[i]=a[i]-b[i]*k; } sort(c+1,c+1+n,cmp); double sum=0.0; for(int i=1;i<=m;i++) { sum+=c[i]; } return sum>=0.0; } int main() { while(scanf("%d%d",&n,&m)&&(n||m)) { double left=0,right=0x3fffffff; m=n-m; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=n;i++) { scanf("%d",&b[i]); } for(int i=1;i<=100;i++) { double mid=(left+right)/2.0; if(judge(mid)) { left=mid; } else right=mid; } left=left*100; printf("%.0f\n",left); } }
相关文章推荐
- bzoj 3531: [Sdoi2014]旅行 树链剖分
- linux下查看已经安装的jdk 并卸载jdk
- stm单片机之STM32F4-Discovery资料汇总 (转载自http://blog.163.com/thinki_cao/blog/static/83944875201362493134992/)
- 出现次数最多的数
- 页面布局学习(二)
- Android笔记37: Sensor.TYPE_ORIENTATION 方向传感器,转向晕了个头
- Linux 内核源码分析 chap 2 存储管理 (5)
- bzoj 3530: [Sdoi2014]数数 AC自动机&动态规划
- linux 64位操作系统安装配置java JDK
- Mysql主从同步备份策略分享(实验修正版)
- java毕向东听课笔记10(异常)
- 周记
- 数据结构-- 广义表
- 笔记:struts 2.3.20 + log4j1.2.9 jar包
- Octave-Plotting Data---Coursera ML笔记
- Joystick手柄输入
- Class 'PDO' not found 错误
- 如何解决struts2中上传文件大小限制的问题
- 字符串的全排列和组合
- Spring记录之模拟IoC(二)