UVA - 10280 Old Wine Into New Bottles
来源:互联网 发布:ismo软件 编辑:程序博客网 时间:2024/05/23 19:49
首先觉得总容量很大,瓶子种类很多,直接完全背包肯定不行。但是既然数据大的离谱,肯定有别的方法可以降低复杂度。我的大致思路对了,就是找到完全背包的上界,但是在具体实现上碰到了一些问题,包括最后对复杂度还是没有自信。
两个方面,一个是完全背包上界:maxx=min(maxx,s[i][0]*s[i][0]/(s[i][1]-s[i][0]));
另一方面是粗算瓶子种类有180*100=18000种,但细算实际上最多4500种,这里没想到让我一直tle
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define MAXN 110#define MAXM 4505using namespace std;int s[MAXN][2],l,n,maxx;int dp[MAXN*MAXM],bottle[MAXM],maxbottle,lastbottle[MAXM];void init(){cin>>l>>n;maxx=0x7f7f7f7f;int all=0;for(int i=0;i<n;i++){cin>>s[i][0]>>s[i][1];all+=s[i][1]-s[i][0];maxx=min(maxx,s[i][0]*s[i][0]/(s[i][1]-s[i][0]));}maxx=maxx+10;memset(dp,0,sizeof(dp));dp[0]=1;memset(bottle,0,sizeof(bottle));}void solve(){if(l*1000<maxx){for(int i=0;i<n;i++){for(int j=s[i][0];j<=s[i][1];j++){bottle[j]=1;}}maxbottle=0;for(int i=0;i<MAXM;i++){if(bottle[i])lastbottle[maxbottle++]=i;}for(int i=0;i<maxbottle;i++){for(int j=lastbottle[i];j<maxx&&j<=l*1000;j++){dp[j]|=dp[j-lastbottle[i]];}}for(int i=l*1000;i>=0;i--){if(dp[i]){cout<<l*1000-i<<endl;break;}}}else{cout<<0<<endl;}}int main(){int T;cin>>T;while(T--){init();solve();if(T)cout<<endl;}return 0;}
0 0
- UVA - 10280 Old Wine Into New Bottles
- uva 10280 - Old Wine Into New Bottles
- UVA 10280 - Old Wine Into New Bottles
- uva 10280 - Old Wine Into New Bottles
- UVA - 10280 Old Wine Into New Bottles
- uva 10280 - Old Wine Into New Bottles(完全背包)
- UVA 10280 Old Wine Into New Bottles(dp完全背包)
- UVa 10280 Old Wine Into New Bottles / 完全背包
- Old Wine Into New Bottles - UVa 10280 dp
- UVA - 10280 Old Wine Into New Bottles 剪枝+完全背包
- uva 10280 Old Wine Into New Bottles 有剪枝的完全背包
- UVA - 10280Old Wine Into New Bottles(完全背包+剪枝)
- uva 10280 Old Wine Into New Bottles (有剪枝的完全背包)
- uva10280 - Old Wine Into New Bottles
- (中等)动态规划 HOJ 1770 Old Wine Into New Bottles
- POJ 2614 Old Wine Into New Bottles 笔记
- 304. New wine in old bottles. 旧瓶装新酒
- mysql 触发器 NEW OLD
- 【PHP】PHP中__get()和__set()的用法实例详解
- OGG_Manager 进程
- 编译器括号检查原理(C)
- CSDN下载手机客户端,存在 BUG,两个苹果下载图标
- rac下最简单归档开启方法
- UVA - 10280 Old Wine Into New Bottles
- SQL Server 2008 学习笔记(二)利用语句修改数据表
- HDU 5326 Work
- python 函数式编程
- suse10下nodejs安装时提示openssl not found的问题解决办法 1、首先确认openssl有没有安装,使用命令 openssl version 2、明明已经安装了openssl
- 聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index)介绍
- zoj 3549 (模运算)
- 安装AS出现的问题
- HDU 4185 — Oil Skimming 二分匹配