HDU 4001--Dp--(第一道dp)
来源:互联网 发布:猫叔100的淘宝 编辑:程序博客网 时间:2024/06/10 03:54
因为是偏序关系所以很明显dp,先排序再dp就得到结果了。
1.注意理解dp的思想
2.注意这里的排序。从低到高按最容易满足条件的并且要求最高的开始排
3.用int直接算面积会溢出,要么设为long long 要么不直接算面积
代码:
#include<iostream>#include<algorithm>#include<cmath>using namespace std;int n;long long ans,dp[1009];struct h{int len,wid,thk,d;}code[1009];bool cmp(h a,h b){if(a.len!=b.len) return a.len<b.len; if(a.wid!=b.wid) return a.wid<b.wid; return a.d>b.d;}void DP(){ans=-2;for(int i=1;i<=n;i++){if(code[i].d==0)for(int j=i-1;j>0;j--){if(code[j].len<=code[i].len&&code[j].wid<=code[i].wid&&(dp[j]+code[i].thk)>dp[i]) dp[i]=dp[j]+code[i].thk;}else if(code[i].d==1)for(int j=i-1;j>0;j--){if(code[j].len<=code[i].len&&code[j].wid<=code[i].wid&&(code[j].len<code[i].len||code[j].wid<code[i].wid)&&(dp[j]+code[i].thk)>dp[i])dp[i]=dp[j]+code[i].thk;}elsefor(int j=i-1;j>0;j--){if(code[j].len<code[i].len&&code[j].wid<code[i].wid&&(dp[j]+code[i].thk)>dp[i])dp[i]=dp[j]+code[i].thk;}if(ans<dp[i]) ans=dp[i];}}int main(){while(cin>>n){if(!n) break;for(int i=1;i<=n;i++){cin>>code[i].len>>code[i].wid>>code[i].thk>>code[i].d;if(code[i].len<code[i].wid) swap(code[i].len,code[i].wid);}sort(code+1,code+n+1,cmp);for(int i=1;i<=n;i++) dp[i]=code[i].thk;DP();cout<<ans<<endl;}}
0 0
- HDU 4001--Dp--(第一道dp)
- hdu 2059 第一道DP
- hdu 3008 Warcraft,第一道dp题。。。
- 状态dp 第一道
- 第一道概率dp,
- 人生第一道 DP
- HDU 3555 我的第一道数位DP
- 第一道插头DP!HDU1693
- 第一道 状态压缩dp
- 自己的第一道dp题(hdu 2059龟兔赛跑)
- hdu 1520 Anniversary party(我的第一道树形DP)
- HDU 1978 How many ways(第一道记忆化搜索+DP)
- poj 1163 The Triangle(第一道DP~~~~)
- hdu 4001(dp)
- hdu 1412 搬寝室 (很好的一道dp题)
- hdu 1158(很好的一道dp题)
- 一道DP
- POJ3691 - AC自动机的第一道DP
- C++运算符重载
- Objective C基础(六)---单例模式
- Linux-(15)YUM软件仓库
- linux防火墙和SELinux
- 黑马程序员IOS基础---C语言学习之流程控制
- HDU 4001--Dp--(第一道dp)
- 2015最新省市地区数据级联效果
- error: overloaded function with no contextual type information
- FTP文件上传与下载
- IDF2015现场报道:PMC展现高速IOPS方案
- 看电影网站合集
- mysql插入操作--插入中文的时候报错的解决方法
- 学会作笔记
- [学习笔记]Objective-C与C学习交接(3)