P1741观光公交

Accepted
标签:贪心数据结构NOIP提高组2011

描述

风景迷人的小城Y市,拥有n个美丽的景点。由于慕名而来的游客越来越多,Y市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0分钟出现在1号景点,随后依次前往2、3、4……n号景点。从第i号景点开到第i+1号景点需要Di分钟。任意时刻,公交车只能往前开,或在景点处等待。

设共有m个游客,每位游客需要乘车1次从一个景点到达另一个景点,第i位游客在Ti分钟来到景点Ai,希望乘车前往景点Bi(Ai<Bi)。为了使所有乘客都能顺利到达目的地,公交车在每站都必须等待需要从该景点出发的所有乘客都上车后才能出发开往下一景点。假设乘客上下车不需要时间。

一个乘客的旅行时间,等于他到达目的地的时刻减去他来到出发地的时刻。因为只有一辆观光车,有时候还要停下来等其他乘客,乘客们纷纷抱怨旅行时间太长了。于是聪明的司机ZZ给公交车安装了k个氮气加速器,每使用一个加速器,可以使其中一个Di减1。对于同一个Di可以重复使用加速器,但是必须保证使用后Di大于等于0。

那么ZZ该如何安排使用加速器,才能使所有乘客的旅行时间总和最小?

格式

输入格式

第1行是3个整数n, m, k,每两个整数之间用一个空格隔开。分别表示景点数、乘客数和氮气加速器个数。

第2行是n-1个整数,每两个整数之间用一个空格隔开,第i个数表示从第i个景点开往第i+1个景点所需要的时间,即Di。

第3行至m+2行每行3个整数Ti, Ai, Bi,每两个整数之间用一个空格隔开。第i+2行表示第i位乘客来到出发景点的时刻,出发的景点编号和到达的景点编号。

输出格式

共一行,包含一个整数,表示最小的总旅行时间。

样例1

样例输入1[复制]

3 3 2
1 4
0 1 3
1 1 2
5 2 3

样例输出1[复制]

10

限制

1s

提示

样例说明:

对D2使用2个加速器,从2号景点到3号景点时间变为2分钟。

公交车在第1分钟从1号景点出发,第2分钟到达2号景点,第5分钟从2号景点出发,第7分钟到达3号景点。

第1个旅客旅行时间7 - 0 = 7分钟;
第2个旅客旅行时间2 - 1 = 1分钟;
第3个旅客旅行时间7 - 5 = 2分钟。

总时间7 + 1 + 2 = 10分钟。

数据范围:

对于10%的数据,k = 0;
对于20%的数据,k = 1;
对于40%的数据,2 ≤ n ≤ 50,1 ≤ m ≤ 1,000,0 ≤ k ≤ 20,0 ≤ Di ≤ 10,0 ≤ Ti ≤ 500;
对于60%的数据,1 ≤ n ≤ 100,1 ≤ m ≤ 1,000,0 ≤ k ≤ 100,0 ≤ Di ≤ 100,0 ≤ Ti ≤ 10,000;
对于100%的数据,1 ≤ n ≤ 1,000,1 ≤ m ≤ 10,000,0 ≤ k ≤ 100,000,0 ≤ Di ≤ 100,0 ≤ Ti ≤ 100,000。

来源

NOIp2011提高组Day2第三题

代码:

#include<cstdio>
#include<algorithm>
#define maxn 1000
#define maxm 10000
using namespace std;int n,m,k,d[maxn+20];
int t[maxm+20],a[maxm+20],b[maxm+20];
int people[maxn+20],go[maxn+20],arrive[maxn+20];int main()
{int i,j,x,y,z,ans=0;scanf("%d%d%d",&n,&m,&k);for(i=1;i<n;i++)scanf("%d",&d[i]);for(i=1;i<=m;i++){scanf("%d%d%d",&t[i],&a[i],&b[i]);people[b[i]-1]++;go[a[i]]=max(go[a[i]],t[i]);}for(i=2;i<=n;i++)arrive[i]=max(go[i-1],arrive[i-1])+d[i-1];while(k--){x=y=z=0;for(j=n;j>1;j--){if(arrive[j]<=go[j])z=0;z+=people[j-1];if(d[j-1]>0 && z>x)x=z,y=j-1;}if(y==0)break;d[y]--;for(i=y+1;i<=n;i++)arrive[i]=max(arrive[i-1],go[i-1])+d[i-1];  } for(i=1;i<=m;i++)ans+=arrive[b[i]]-t[i];printf("%d\n",ans);              return 0;
}

noip2011 观光公交 (贪心)相关推荐

  1. [luogu]P1315 观光公交[贪心]

    [luogu]P1315 [NOIP2011]观光公交 --!x^n+y^n=z^n 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车, ...

  2. NOIP2011 观光公交

    话说,我终于AC了这个题 这是一个贪心,说实话开始做的时候......完全没看出来QAQ.. 可能有人说这是个dp,但这真不是(dalao请无视) 这真的只是个贪心.... 首先对于每个点当然是能走就 ...

  3. Luogu 1315 【NOIP2011】观光公交 (贪心)

    Luogu 1315 [NOIP2011]观光公交 (贪心) Description 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供 ...

  4. 【洛古 P1315】 [NOIP2011 提高组] 观光公交

    [NOIP2011 提高组] 观光公交 题目背景 感谢 @Transhumanist 提供的一组 Hack 数据 题目描述 风景迷人的小城 Y 市,拥有 n n n 个美丽的景点.由于慕名而来的游客越 ...

  5. 【做题记录】[NOIP2011 提高组] 观光公交

    P1315 [NOIP2011 提高组] 观光公交 我们想在 \(k\) 次加速每一次都取当前最优的方案加速. 考虑怎样计算对于每一条边如果在当前情况下使用加速器能够使答案减少的大小. 如果当前到达某 ...

  6. 观光公交削弱_削弱Web开发人员和Internet的7大障碍

    观光公交削弱 As a web developer I periodically take a step back from the text editor and look at the lands ...

  7. 观光公交削弱_您的工作可能如何削弱您的技术技能

    观光公交削弱 对简单的入门和故障安全环境的渴望使开发人员感到自我破坏. 现代软件应用程序是巨大的. 甚至小型公司产品也可以由抽象的层次组成. 根据与您最紧密合作的那一层,您可能会错过很多东西. Mar ...

  8. 【NOIP2011 Day 2】观光公交

    [问题描述] 小城Y市,拥有n个景点.由于慕名而来的游客越来越多,Y市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第0分钟出现在1号景点,随后依次前往2.3.4--n号景点.从第 ...

  9. 洛谷P1315 观光公交

    SB贪心......暴露了我代码能力巨弱的本质. 题面 解:首先我们应该想到DP(但是我想到了贪心......) 然后分析题目本质,每个点有个限制,最早开走时间不得早于最晚上车时间. 然后我们就可以把 ...

  10. jzxx2852观光公交

    题目描述 风景迷人的小城 Y 市,拥有 n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1 号景点,随后依次前 ...

最新文章

  1. 鸿蒙系统和微软,击败苹果和微软,全球第一的操作系统,有望被华为鸿蒙打破垄断...
  2. 什么原因可能导致主备延迟?
  3. python课件_如何20小时搞定Python量化期权实战?
  4. 用JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办
  5. python函数的目的与意义_Python函数__new__及__init__作用及区别解析
  6. c/c++学习系列之memset()函数
  7. 大家好,我是谢公子,来自深信服—深蓝攻防实验室
  8. Vue-Node安装教程
  9. java支付宝第三方支付前置流程
  10. 疫情渐消,政策向好,车企的春天要回来了?
  11. shell脚本之正则表达式
  12. 四大名著丨折射中国人性的四面镜子
  13. 美通企业日报 | 微软和宝马推出开放式制造平台;爱彼迎Plus在中国发展势头强劲...
  14. 没有植入的内容就是TM在逗我
  15. 微信,新浪登录分享遇到的问题
  16. 真假PSP的一些鉴别方法~~希望对准备入手PSP的玩友有帮助!!
  17. 获取seekbar thumbar位置_运汽车-牡丹江到昆明汽车托运公司-查看位置
  18. Flutter开发 - 重力感应和陀螺仪相关功能的开发
  19. 快递100 实时查询
  20. 情感分析中处理否定问题的伪代码

热门文章

  1. 鸡蛋,必须放在合适的篮子里
  2. R 语言的表格合并(实际运用)
  3. CSAPP ArchLab
  4. redis 附近的人_Redis怎么实现查找附近的人,请看特殊数据类型Geospatial
  5. mysqldb python linux,Linux下安装 MySQLdb模块
  6. php收付同分账,php微信分账功能 —— app支付
  7. Seurat SingleCellExperiment anndata相互转化
  8. RHY融获基金数字资产投资,海外扩建加速
  9. freeotp使用教程_软件使用教程
  10. 天地三才阵——【Java三大特征】