poj2976(0-1分数规划)
0-1分数规划
设x[i]等于1或0.
则我们所求的比率 rate = ∑(cost[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m .
z( rate ) = ∑(cost[i] * x[i]) - rate* ∑(dist[i] * x[i])
二分法求解:在定出一个搜索范围和精度之后,可以使用二分法进行搜索:对于当前的搜索区间[left,right],mid=(left+right)/2
,根据z(mid)
的值及z(rate)
的增减性,对搜索区间进行更新:
若z(mid)>0
,上调区间,使left=mid
;
若z(mid)<0
,下调区间,使right=mid
;
经过有限次搜索之后便能找到所求比率。
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxx=10005;
const int inf=0x3f3f3f3f;
double cost[maxx];
double dist[maxx];
int n,k;
int Findmid(double rate){double sum=0;double dis[maxx];for(int i=1;i<=n;i++){dis[i]=cost[i]-rate*dist[i];}sort(dis+1,dis+n+1);for(int i=n;i>k;i--){sum+=dis[i];}return sum>=0;
}
int main(){while(scanf("%d %d",&n,&k)!=EOF){if(n==0&&k==0)break;for(int i=1;i<=n;i++){scanf("%lf",&cost[i]);}for(int j=1;j<=n;j++){scanf("%lf",&dist[j]);}double left=0,right=inf;for(int i=1;i<=105;i++){double mid=(left+right)/2;if(Findmid(mid)){left=mid;}else{right=mid;}} printf("%.0lf\n",left*100);}return 0;
}
poj2976(0-1分数规划)相关推荐
- poj2976(0-1 分数规划)
poj2976(0-1 分数规划) 题意 给定n个二元组 ( a i , b i ) (a_{i},b_{i}) (ai,bi)除去n个,剩下的n-k组成集合S作 ∑ i ∈ S a i ∑ i ...
- bzoj 3232 圈地游戏——0/1分数规划(或网络流)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...
- jzoj4017-逃跑【0/1分数规划,线段树,dp】
正题 题目链接:https://jzoj.net/senior/#contest/show/3011/2 题目大意 n+1n+1n+1个连续的地方,每个地方有(a,b,c)(a,b,c)(a,b,c) ...
- jzoj3852-单词接龙【0/1分数规划,负环】
正题 题目链接:https://jzoj.net/senior/#main/show/3852 题目大意 nnn个单词串,头尾有两个相同单词就可以连在一起,求一个最长的环使得平均单词长度最长. 解题思 ...
- [学习笔记]0/1分数规划
对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...
- #0/1分数规划,SPFA,负环#洛谷 1768 天路
题目链接 分析 可以发现,这是一道0/1分数规划的题目,需要二分答案,然后判定是否存在负环,所以说bfs貌似不高效,那就用dfs吧,若二分答案为0,即不合法 代码 #include <cstdi ...
- 转载二分 01 分数规划即最大化平均值的证明0/1分数规划、最优比率生成树、最优比率环
首页 新随笔 联系 管理 订阅 随笔- 20 文章- 0 评论- 9 [Algorithm]01分数规划--Update:2012年7月27日 [关键字] 0/1分数规划.最优比率生成树.最优比率 ...
- POJ2976——Dropping tests(0/1分数规划)
传送门 最简单的分数规划 对于最终答案ans,有 ans=Σai∗100Σbians=\frac{Σa_i*100}{Σb_i}ans=ΣbiΣai∗100 则 Σbi∗ans=Σai∗100Σ ...
- [JSOI2016] 最佳团体(0/1分数规划 + 树形dp)
problem luogu-P4322 solution 假设每个人是否被招募,用 xi={0,1}x_i=\{0,1\}xi={0,1} 代替,max∑pi∗xi∑si∗xi\max\frac{ ...
最新文章
- python 操作word页眉表格_python批量设置多个Excel文件页眉页脚的脚本
- 临河智慧城管:让城市更和谐
- DataGridView 中发生以下异常: System.Exception: 是 不是 Decimal 的有效值。 ---> System.FormatException: 输入字符串的格式不正确。
- AVFrame中data与linesize关系
- 火爆背后的挑战:直播平台的高并发架构设计丨视频PPT下载
- 在项目中寻找代码的坏味道(命名)
- sharepoint对象模型性能比较
- 装箱问题(信息学奥赛一本通-T1295)
- centos 6.3最小化安装,无法上网解决方法
- shell提取文件中的dojo mobile类
- python下载步骤-python3.8下载及安装步骤详解
- python免费课程400节-太原Python编程课哪家比较有优势
- python可以给你干什么-python可以做什么,你心动了吗?
- MySQL复制应用中继日志解析
- NXP IMX6ULL芯片时钟系统全概况
- php 截取图片像素,php 如何修改图片像素大小
- 华为手机通过ADB永久关闭系统更新
- mybatis/mybatis plus lambda会话缓存失效(1)
- 计算时间复杂度--(简单版)
- 鼠标拖拽盒子跟着鼠标在页面任意位置移动