[BZOJ]2131: 免费的馅饼 DP+树状数组
来源:互联网 发布:麦迪和艾弗森对位数据 编辑:程序博客网 时间:2024/05/16 14:19
Description
题解:
这题好神啊!首先要会最简单的DP:先按t从小到大排序,
我们又注意到,满足第2、3条不等式,那么第1条就一定满足。那么对于第2、3条,移项可得:
设
代码:
#include<bits/stdc++.h>using namespace std;#define pa pair<int,int>#define LL long longconst int Maxn=100010;const int inf=2147483647;int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();} return x*f;}int w,n,f[Maxn],Y[Maxn],ans=-1;struct A{int t,p,v,x,y;}a[Maxn];bool cmpxy(A a,A b){return((a.x==b.x)?a.y<b.y:a.x<b.x);}int mx[Maxn];void change(int x,int y){for(;x<=n;x+=(x&-x))mx[x]=max(mx[x],y);}int getmax(int x){int re=-1;for(;x;x-=(x&-x))re=max(re,mx[x]);return re;}map<int,int>o;int main(){ w=read();n=read(); for(int i=1;i<=n;i++) { int t=read(),p=read(),v=read(); a[i].t=t,a[i].p=p,a[i].v=v; a[i].x=2*t+p;a[i].y=Y[i]=2*t-p; } sort(a+1,a+1+n,cmpxy); sort(Y+1,Y+1+n);int num=0; for(int i=1;i<=n;i++) { if(Y[i]!=Y[i-1]||i==1)o[Y[i]]=++num; else continue; } for(int i=1;i<=n;i++) { int t=o[a[i].y]; ans=max(ans,f[i]=getmax(t)+a[i].v); change(t,f[i]); } printf("%d",ans);}
阅读全文
0 0
- bzoj 2131: 免费的馅饼(树状数组+DP)
- [BZOJ]2131: 免费的馅饼 DP+树状数组
- [BZOJ2131]免费的馅饼(DP+树状数组)
- [BZOJ2131]免费的馅饼-树状数组优化DP
- [BZOJ]2131 免费的馅饼 DP + 绝对值转化
- bzoj 2131: 免费的馅饼
- BZOJ P2131 免费的馅饼
- DP+滚动数组-HDU-1176-免费馅饼
- HDU 1176免费馅饼 树上的dp
- Problem HDU-1176 免费的馅饼 DP
- HDOJ1176 免费馅饼 简单的二维DP
- DP免费馅饼~
- 免费馅饼(dp)
- hdu1176免费馅饼 dp
- HDU1176:免费馅饼(DP)
- hdoj1176 免费馅饼 (DP)
- hdu1176免费馅饼(DP)
- DP:免费馅饼
- jsonp原理详解
- muduo::StringPiece
- 【codevs 1191】数轴染色
- HDU 1159(动态规划-最长公共子序列)
- POJ 3492 Knapsack II (最短路)
- [BZOJ]2131: 免费的馅饼 DP+树状数组
- Navi.Soft31.微信WinForm框架(含下载地址)
- CCF-CSP认证备考要点
- weka遇到java.util.zip.ZipException: invalid LOC header (bad signature)
- 当敦煌月牙泉遍布Wi-Fi:一个“新型智慧城市”打开方式是这样的
- 如果你想要“一百种”方法玩转天猫双11,这里是一份完整版指南
- 跟大师学习系统编程---操作系统加载(4)
- nysql主从负责
- 车联网的智慧大脑