首页 > 其他分享 >0/1分数规划

0/1分数规划

时间:2023-04-18 22:46:24浏览次数:27  
标签:分数 cow int double bool include 规划 dp

1.0/1分数规划模板

例题:poj2976

二分求解M,M即为答案

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
struct Pair{
	int a,b;double y;
}p[1005];
bool cmp(Pair a,Pair b){
	return a.y>b.y;
}
int n,k;
bool check(double x){
	for(int i=0;i<n;i++)p[i].y=p[i].a*1.0-x*p[i].b;
	sort(p,p+n,cmp);
	double f=0;
	for(int i=0;i<k;i++)f+=p[i].y;
	return f<0;
}
int main(){
        ios::sync_with_stdio(false);cin.tie(0);
	while(cin>>n>>k&&n+k){
		k=n-k;
		for(int i=0;i<n;i++)cin>>p[i].a;
		for(int i=0;i<n;i++)cin>>p[i].b;
		double l=0,r=0;
		for(int i=0;i<n;i++)r+=p[i].a;
		for(int i=0;i<50;i++){
			double mid=l+(r-l)/2.0;
			if(check(mid))r=mid;
			else l=mid;
		}
		printf("%d\n",(int)(100*(l+0.005)));
	}
	return 0;
}

  

2.最优比率背包

例题:洛谷P4377

本题有Σwisi>=w的限制,其余就是最优比率背包的模板了

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f,N = 255,WW = 1e3+5;
struct x{int w,t;double y;}cow[N];
double dp[WW];
int n,W;
bool check(double x){
	int i,j;
	for(i=1;i<=n;i++)cow[i].y=(double)cow[i].t-x*cow[i].w;
	for(i=1;i<=W;i++)dp[i]=-INF;dp[0]=0;
	for(i=1;i<=n;i++){
		for(j=W;j>=0;j--){
			if(j+cow[i].w>W)dp[W]=max(dp[W],dp[j]+cow[i].y);
			else dp[j+cow[i].w]=max(dp[j+cow[i].w],dp[j]+cow[i].y);
		}
	}
	return dp[W]<0;
}
int main(){
	cin>>n>>W;
	for(int i=1;i<=n;i++)cin>>cow[i].w>>cow[i].t;
	double l=0,r=0;for(int i=1;i<=n;i++)r+=cow[i].t;
	for(int i=0;i<50;i++){
		double mid=l+(r-l)/2.0;
		if(check(mid))r=mid;
		else l=mid;
	}
	cout<<(int)(l*1000);
	return 0;
}

  

标签:分数,cow,int,double,bool,include,规划,dp
From: https://www.cnblogs.com/zhanghx-blogs/p/17331473.html

相关文章

  • 动态规划:剑指 Offer 63. 股票的最大利润
    题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 限制:0<=数组长度<=10^5    classSolution{publicintmaxProfit(intprices[]){//状态定义:dp[i]记为利润profit//前i......
  • 【LeetCode动态规划#07】01背包问题一维写法(状态压缩)实战,其二(目标和、零一和)
    目标和(放满背包的方法有几种)力扣题目链接(opensnewwindow)难度:中等给定一个非负整数数组,a1,a2,...,an,和一个目标数,S。现在你有两个符号+和-。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数S的所有添加符号的......
  • 【路径规划】基于人工势场法实现多机器人系统的群集编队控制附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 动态规划:剑指 Offer 42. 连续子数组的最大和
    题目描述:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 提示:1<= arr.length<=10^5-100<=arr[i]<=100   classSolution{publicintmaxSubArray(intnums[]){intres......
  • 2-207-通过(LeetCode-509)熟悉动态规划的解题步骤
    1.题目 运态规划的定义   动态规划的解题步骤  2.解法2.1递归 publicstaticintfibonacci(intn){if(n==0){return0;}if(n==1){return1;}returnfibonacci(n-1)+fibonacci(n-2);}2.2运态规划+递归......
  • 团队、职业规划、技术应用和出书的对话
    Tony说:最近没见有更新Blog,忙咨询工作?青润说:上周末更新了几篇,你没有过去看么?赫赫青润说:最近的确比较忙,也比较乱,所以,就少了一些。呵呵Tony说:有看,不过比较技术类的比较少青润说:技术类的最近比较少讨论,所以,相对少了一些。青润说:程序员杂志最新一期上有一篇是我写的,还有一篇我写了......
  • [企业管理]从责任编辑的职业发展规划到中国企业的信用状态
    2004-12-22 21:09:01 Rainningheart 你的公司怎么样了?2004-12-22 21:09:09 Rainningheart 成立了没2004-12-22 21:09:27 青润 成立了。元旦正式开始运营。2004-12-22 21:09:43 Rainningheart 呵呵,不错,恭喜啦2004-12-22 2......
  • [企业管理]规划和项目建议书的随意对话
    规划和项目建议书2007-05-2312:16:24 伊达项目还未确定之前,用户只是有个大致的想法,这时候不是要出《系统建议方案》吗?2007-05-2312:17:06青润这种方案说实话,很多都是骗骗人而已,意义不是很大,用户如果想做,不写,也一样.用户不想做,写得再好,也没人看. 2007-05-2312:17:43青润我......
  • 技术人员怎么做职业规划
    最近两年整个IT行业冲击很大,特别是今年IT行业就业环境真的非常冷可以说是“惨淡”。过去疫情期间IT行业就业环境还不会那么差,今年疫情后遗症特明显。以前做得不好可以甩锅给疫情,今年做不好就没有锅可甩了。最近我也在思考职业规划一些问题,结合这么多年从业心得体会,写写技术人员......
  • 第3章 高可用负载均衡集群规划
    作者:田逸(formyz) 开篇之初,先举几个反例,来说明事前规划的重要性。案例一:某广告媒体公司,需要部署一套媒体播放系统,由一台应用服务器和一台数据库服务器组成,让人没想到的是,为了这两台服务器,花了几十万采购了一台网络端口超过96个的三层核心交换机。询问相关人员,这样配备是基于什么考虑......