[DP]Atcoder CODE FESTIVAL 2017 Final (Parallel) D
来源:互联网 发布:恋夜秀场破解软件酷安 编辑:程序博客网 时间:2024/06/06 20:35
只要按照H+P排序一下DP就好了,至于为什么按H+P排序自己分类讨论一下就懂了。
代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 5005#define ll long longinline char tc(void){ static char fl[10000],*A=fl,*B=fl; return A==B&&(B=(A=fl)+fread(fl,1,10000,stdin),A==B)?EOF:*A++;}inline int read(void){ int a=0;char c; while((c=tc())<'0'||c>'9'); while(c>='0'&&c<='9')a=a*10+c-'0',c=tc(); return a;}struct Zab{ int h,p,s; inline bool operator<(const Zab&a)const{return s<a.s;}}a[N];int n,ans;ll f[N][N];int main(void){ register int i,j; n=read(); for(i=1;i<=n;++i) a[i].h=read(),a[i].p=read(),a[i].s=a[i].h+a[i].p; sort(a+1,a+n+1); for(i=1;i<=n;++i) for(j=n;j;--j){ if((f[i-1][j-1]^(j==1))&&f[i-1][j-1]<=a[i].h) f[i][j]=(f[i][j]==0?f[i-1][j-1]+a[i].p:min(f[i][j],f[i-1][j-1]+a[i].p)),ans=max(ans,(bool)f[i][j]*j); if(f[i-1][j])f[i][j]=min(f[i][j],f[i-1][j]); if(!f[i][j])f[i][j]=f[i-1][j]; } printf("%d",ans); return 0;}
阅读全文
0 0
- [DP]Atcoder CODE FESTIVAL 2017 Final (Parallel) D
- AtCoder Code festival 2017qualC-D-dp+优化
- Atcoder CODE FESTIVAL 2017 Final 简要题解
- Atcoder CODE FESTIVAL 2017 qual C D
- [Atcoder CODE FESTIVAL 2017 qual C]D
- 【AtCoder CODE FESTIVAL 2017 qual C】D
- [待补完]CODE FESTIVAL 2017 Final (Parallel) A,B,C(搜索)
- Atcoder Code Festival 2016 Qual A D
- Atcoder CODE FESTIVAL 2017 qual C 总结+ABCD题解
- atcoder CODE FESTIVAL 2017 qual A 手速(雾)赛
- 【二分图染色】AtCoder CODE FESTIVAL 2017(qual B)C[3 Steps]题解
- Code Festival 2017 qualA D Four Coloring[构造]
- [构造] CODE FESTIVAL 2016 Grand Final G. FESTIVAL
- [DP]Atcoder ARC 087 D
- CODE FESTIVAL 2017 qual B
- CODE FESTIVAL 2017 qual B
- CODE FESTIVAL 2017 qual A
- CODE FESTIVAL 2017 qual C
- debain9的亮度调整失败
- 鼠标事件的使用
- 闭包的理解
- 批量给pdf添加目录(最完整详细方法)
- LeetCode14. Longest Common Prefix
- [DP]Atcoder CODE FESTIVAL 2017 Final (Parallel) D
- Lambda 表达式
- 串行通信
- 图的广度遍历-邻接链表表示
- jvm学习之jvm基础
- 精通正则表达式:4
- R语言——自定义函数求置信区间
- python学习系列(五)字典
- 初学一周犯错经验总结