Watermelon Full of Water [ZOJ 4778]
2013-04-17 12:28
411 查看
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4778
优先队列优化下的DP,dp[i]记录的是吃到i天的最小花费,最后dp
即为答案。
View Code
优先队列优化下的DP,dp[i]记录的是吃到i天的最小花费,最后dp
即为答案。
View Code
const int MM = 111111; #define debug puts("wrong") typedef long long int64; //typedef __int64 int64; int64 N, cnt; struct Info{int64 x,y;}p[MM]; struct Tpoint{ int64 val,dead; //Tpoint(int v,int d):val(v),dead(d) {} bool friend operator<(Tpoint x,Tpoint y) { if(x.val!=y.val) return x.val>y.val; else return x.dead>y.dead; } }; priority_queue<Tpoint>que; void get_data() { int64 i,j,k; for(i=1;i<=N;i++) scanf("%lld",&p[i].x); for(i=1;i<=N;i++) scanf("%lld",&p[i].y); } int64 dp[MM]; void solve() { int64 i,j,k,tmp, mx; Tpoint tt, t1, t2; while(!que.empty()) que.pop(); t1.val=p[1].x, t1.dead=p[1].y; dp[1]=p[1].x; que.push(t1); for(i=2;i<=N;i++) { t1.val=dp[i-1]+p[i].x; t1.dead=i+p[i].y-1; que.push(t1); while(!que.empty() && que.top().dead<i) que.pop(); dp[i]=que.top().val; } printf("%lld\n", dp ); } int main() { while(scanf("%lld",&N)!=EOF) get_data(),solve(); return 0; }
相关文章推荐
- ZOJ 3632 Watermelon Full of Water(dp+线段树 单点修改)
- ZOJ Problem Set - 3632 Watermelon Full of Water
- TOJ 4369 ZOJ 3632 Watermelon Full of Water / 线段树优化DP
- Watermelon Full of Water - ZOJ 3632 dp+线段树
- ZOJ 3632 Watermelon Full of Water(dp+线段树或单调队列优化)
- ZOJ 3632 Watermelon Full of Water(单点更新,区间查询)
- ZOJ 3632 Watermelon Full of Water (线段树 区间更新 + dp)
- zoj 3632 Watermelon Full of Water
- ZOJ 3632 Watermelon Full of Water(SPFA)
- ZOJ-3632 Watermelon Full of Water 线段树+DP
- zoj 3632 Watermelon Full of Water
- ZOJ 3632 Watermelon Full of Water (线段树 区间更新 + dp)
- ZOJ 3632 Watermelon Full of Water 线段树
- zoj 3632 Watermelon Full of Water(DP+线段树)
- ZOJ 3632 K - Watermelon Full of Water 优先队列优化DP
- zoj3632 Watermelon Full of Water 线段树,dp
- BNU Watermelon Full of Water-单点更新,区间询问
- ZJU 3632 - Watermelon Full of Water
- ZOJ - 2575 Full of Painting
- zoj 2110 Tempter of the Bone【邻接阵,dfs】