分数规划
2016-04-04 09:46
204 查看
#include<algorithm> #include<iostream> #include<cstdio> using namespace std; int a[1000+10],b[1000+10]; int n,m; double c[1000+10]; bool cmp(double a,double b){ return a>b; } bool judge(double k){//判断当前k是否满足要求,即是否<=ans for(int i=1;i<=n;i++) c[i]=a[i]-k*b[i]; sort(c+1,c+n+1,cmp); double sum=0.00; for(int i=1;i<=m;i++) sum+=c[i]; if(sum>=0) return true; return false; } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);//数对(ai,bi) double k,l=0,r=100000; for(int i=1;i<=80;i++){//i枚举二分次数 double mid=(l+r)/2; if(judge(mid)) l=mid;//如果k满足小于ans则枚举比k大的数 else r=mid; } printf("%lf\n",l); return 0; } /*2 7 10 3 5 6 100 101 2----1.666667*/ /* ans>=k ∑ai/∑bi>=k ∑ai>=∑k*bi ∑(ai-k*bi)>=0 */
相关文章推荐
- OC中Category的注意点
- OC高效率52之熟悉系统框架
- 理解js中的this对象
- 711 无法加载远程访问连接管理服务 Remote Access connection Manager 126 找不到指定的模块
- 求俩数的平均值(不用公式)
- Dalvik指令集
- SSMS报1222错误
- 我与Django
- Free Pascal保留字
- Java面向对象
- Contiki移植到STM32F103VC
- VS中智能提示无法显示中文
- JS中的prototype
- Android中添加监听回调接口的方法
- 二进制位模式从左到右翻转后的值
- vc 中各种类型的数据相互转换
- R语言笔记 plot 画图
- R语言构建配对交易量化模型
- SpringMvc国际化
- R语言构建配对交易量化模型