HDU 4001
来源:互联网 发布:话剧暗恋桃花源知乎 编辑:程序博客网 时间:2024/05/20 13:08
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4001
思路很简单,就是转化成最长上升子序列,但是各种细节错误,导致了一直不能AC。。= =!!
尤其是在求面积的时候, __int64 s=a*b; 如果a,b为int类型的一定要对a或b进行强制转化,不然会越界的!!
应该写成__int64 s=(__int64 )a*b。
下面是AC代码:
#include<iostream>using namespace std;struct node{ int a,b,c,d; __int64 s;}block[1010];__int64 dp[1010];int cmp(const void *a,const void *b){ node *p1=(node *)a; node *p2=(node *)b; if(p1->a!=p2->a) return p1->a > p2->a?1:-1; if(p1->b!=p2->b) return p1->b > p2->b?1:-1; return p1->d > p2->d ?1:-1;}int main(){ int n,i,j,t; while(cin>>n&&n>0){ for(i=0;i<=1000;i++) dp[i]=0; for(i=0;i<n;i++){ cin>>block[i].a>>block[i].b>>block[i].c>>block[i].d; if(block[i].a<block[i].b){ t=block[i].a; block[i].a=block[i].b; block[i].b=t; } block[i].s=(__int64)block[i].a*block[i].b; //没有对乘数进行强制转化,导致错了N次!!!! } qsort(block,n,sizeof(block[0]),cmp); // for(i=0;i<n;i++) // cout<<block[i].a<<" "<<block[i].b<<endl; dp[0]=block[0].c; for(i=1;i<n;i++){ dp[i]=block[i].c; for(j=0;j<i;j++){ if(block[i].d==0){ if(block[i].b>=block[j].b&&block[i].a>=block[j].a){ if(dp[i]<dp[j]+block[i].c) dp[i]=dp[j]+block[i].c; } } else if(block[i].d==1){ if(block[i].b>=block[j].b&&block[i].a>=block[j].a&&block[i].s>block[j].s) if(dp[i]<dp[j]+block[i].c) dp[i]=dp[j]+block[i].c; } else if(block[i].d==2){ if(block[i].a>block[j].a&&block[i].b>block[j].b){ if(dp[i]<dp[j]+block[i].c) dp[i]=dp[j]+block[i].c; } } } } __int64 ans = dp[0]; for(i=1;i<n;i++) if(ans<dp[i]) ans=dp[i]; printf("%I64d\n",ans); } return 0;}
- hdu 4001
- HDU 4001
- hdu 4001
- HDU 4001 DP LIS
- hdu 4001(dp)
- hdu 4001解题报告
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- performSelectorOnMainThread 对参数的引用计数
- Linux查看进程打开多少文件描述符命令-lsof
- PHP底层工作原理
- http://acm.hdu.edu.cn/showproblem.php?pid=3791&&二叉搜索树
- 网络访问消息: 无法显示此页
- HDU 4001
- hibernate学习笔记(数据库事物,隔离级别)
- 《Practical WPF Charts and Graphics 》翻译——之五
- Bug 跟踪管理系统 Mantis 在 IIS5 下安装指南
- Drupal的工作原理
- 《Practical WPF Charts and Graphics 》翻译——之六
- 触摸屏代码分析——实现按下中断
- Android-点击两次退出
- MFC CListCtrl 锁定表头的方法