PKU1821 Fence
来源:互联网 发布:淘宝开店怎么描述小铺 编辑:程序博客网 时间:2024/06/14 08:52
Description
A team of
Being the team’s leader you want to determine for each worker the interval that he should paint, knowing that the total income should be maximal. The total income represents the sum of the workers personal income.
Write a program that determines the total maximal income obtained by the
Input
The input contains:
Semnification
Output
The output contains a single integer, the total maximal income.
Sample Input
8 4
3 2 2
3 2 3
3 3 5
1 1 7
Sample Output
17
Hint
Explanation of the sample:
the worker 1 paints the interval [1, 2];
the worker 2 paints the interval [3, 4];
the worker 3 paints the interval [5, 7];
the worker 4 does not paint any plank
Source
Romania OI 2002
思路
单调队列优化dp。
令
再用单调队列优(luan)化(gao)就AC了。
代码
#include <cstdio>#include <algorithm>const int maxk=100;const int maxn=16000;struct data{ int l,p,s; bool operator <(const data &other) const { return s<other.s; }};int f[maxk+10][maxn+10];int n,k;data d[maxk+10];int q[maxn+10],head,tail;int main(){ scanf("%d%d",&n,&k); for(int i=1; i<=k; i++) { scanf("%d%d%d",&d[i].l,&d[i].p,&d[i].s); } std::sort(d+1,d+k+1); for(int i=1; i<=k; i++) { head=0; tail=1; q[1]=0; for(int j=1; j<d[i].s; j++) { f[i][j]=std::max(f[i][j-1],f[i-1][j]); while((head!=tail)&&(f[i-1][q[tail]]-q[tail]*d[i].p<f[i-1][j]-j*d[i].p)) { tail--; } tail++; q[tail]=j; } for(int j=std::max(1,d[i].s); j<=n; j++) { f[i][j]=std::max(f[i][j-1],f[i-1][j]); if(d[i].s<=j-d[i].l) { continue; } while((head!=tail)&&(q[head]<j-d[i].l)) { head++; } f[i][j]=std::max(f[i][j],f[i-1][q[head]]-q[head]*d[i].p+j*d[i].p); } } printf("%d\n",f[k][n]); return 0;}
- PKU1821 Fence
- pku1821 dp的优化
- fence
- Fence
- Fence
- Fence
- Memory Fence
- Electric Fence
- poj1031 fence
- Memory Fence
- Electric Fence
- Fancy Fence
- Fence Repair
- Fence Repair
- Fence Repair
- Electric Fence
- Fence Loops
- Fence Rails
- 折半查找插入排序
- 作业 10_01
- 调用系统相机拍照 并保存进SD卡
- 详解KMP算法
- DNS服务原理解析
- PKU1821 Fence
- Gemini Blueprint参考文档 第11章 纲要服务
- jdk动态代理应用
- QNX驱动开发——中断处理
- mysql的常用命令
- 网络请求图片ImageLoader
- docker + sudo
- 范数
- 卡特兰数