【jzoj3029】【NOIP2011DAY2】【观光公交】【贪心】
来源:互联网 发布:小说阅读网软件 编辑:程序博客网 时间:2024/06/02 16:21
题目大意
有n个排成一列的公交站,两个站之间要花费一定时间,有一些乘客某个时间从某个站到另一个站,车要等齐人才能开车,我们有k次机会减少两个站的时间,求旅客花的时间最少是多少。
解题思路
计算每个站到达的时间,计算能影响到多少人,贪心地使用每一次机会。
code
#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define min(a,b) ((a<b)?a:b)#define max(a,b) ((a>b)?a:b)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=1000;int n,m,k,d[maxn+10],dep[maxn+10],arr[maxn+10],far[maxn+10],cnt[maxn+10],cnt2[maxn+10];int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%d%d%d",&n,&m,&k); fo(i,2,n)scanf("%d",&d[i]); int ans=0; fo(i,1,m){ int t,a,b;scanf("%d%d%d",&t,&a,&b);ans-=t; dep[a]=max(dep[a],t);cnt[b]++; } fo(i,1,n)cnt[i]+=cnt[i-1]; for(;k;){ fo(i,2,n)arr[i]=max(arr[i-1],dep[i-1])+d[i]; far[n]=n;int mx=-1,pos; fd(i,n,2){ if((mx<cnt[far[i]]-cnt[i-1])&&(d[i]>0)){ mx=cnt[far[i]]-cnt[i-1]; pos=i; } if(arr[i-1]<=dep[i-1])far[i-1]=i-1; else far[i-1]=far[i]; } if(mx==-1)break; d[pos]--; k--; } fo(i,2,n)printf("%d\n",d[i]); fo(i,2,n)arr[i]=max(arr[i-1],dep[i-1])+d[i]; fo(i,2,n)ans+=arr[i]*(cnt[i]-cnt[i-1]); printf("%d",ans); return 0;}
0 0
- 【jzoj3029】【NOIP2011DAY2】【观光公交】【贪心】
- 【贪心】NOIP2011day2观光公交
- [NOIP2011day2]观光公交 贪心
- 观光公交[贪心解析]
- NOIP2011 观光公交(贪心)
- NOIP2011Day2第三题观光公交的费用流解法
- noip2011 观光公交 (贪心)
- 【贪心】NOIP2011观光公交详解
- noip2011观光公交贪心详解
- 【NOIP2011提高组T6】观光公交-贪心
- NOIP 2011 观光公交 贪心+递推
- WikiOI 1139 观光公交 (NOIP2011) 贪心
- noip2011 观光公交 递推+贪心
- 观光公交
- NOIP2011 观光公交
- noip2011-观光公交
- Vijos P1741 观光公交
- vijos P1741 观光公交
- 《霸王别姬》
- 关于__autoreleasing,你真的懂了吗?
- 嵌入式系统开发之嵌入式开发工具
- LeetCode 123. Best Time to Buy and Sell Stock III| 动态规划
- cp命令介绍
- 【jzoj3029】【NOIP2011DAY2】【观光公交】【贪心】
- C# ASP.net写WebService中类的成员变量什么时候创建,赋值的问题。
- FPGA——频率计(3)
- 静态导入
- 设计模式之开篇---面向对象的六大原则
- 使用python进行汉字与二进制之间的转换
- Python Challenge 0-9
- JSTL表达式与EL表达式用法*更新版*
- 总线设备驱动模型---platform篇