观光公交noip<贪心>
题目链接:https://www.oj.swust.edu.cn/problem/show/1190
思路:
每在一段路上使用一次加速器,就会对某些人或者说某些路段上的人产生影响,目的是使产生的影响最大。
假设在路段x(x路段链接的是x--x+1两个景点)上使用了一次加速器,并且,到达x+1点后,需要等待,那么这次加速只会影响x+1点下车的人。
对以后的点没有影响。因为加速的那段时间被等待了。什么情况下才要等待呢?在不加速的情况下等待或者时间刚好的时候。如果不等待,那么这次在x路
段的加速相当于也在x+1路段上加速了。那么这个影响可以用递推的方式一次性全部求出来。设g[x]表示在x路段上加速会影响的景点。
g[n-]=n;
for(int i=n-;i>;i--)
{
if(ti[i+]>t[i+])//表示车到达i+1点的时间要大于人到齐的时间
g[i]=g[i+];
else
g[i]=i+;
}
求得了可以影响的最远的点,那么就可以影响的总时间就等于在每个被影响的点下车的人数相加,维护前缀和就行,最后要去每次加速影响的最大值就行。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=;
struct node
{
int arr,st,ed;//到达车站的时间,起点,终点。
}id[maxn*];
int t[maxn];//最晚时间
int ti[maxn];//到达时间
int sum[maxn];//effect
int dis[maxn];//
int g[maxn];
int n,m,k;
void init ()
{
memset(t,,sizeof(t));
memset(sum,,sizeof(sum));
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&k))
{
init();
for(int i=;i<n;i++)
scanf("%d",&dis[i]);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&id[i].arr,&id[i].st,&id[i].ed);
t[id[i].st]=max(t[id[i].st],id[i].arr);//到大某点的最晚时间
sum[id[i].ed]++;//到达某点的人数
}
for(int i=;i<=n;i++)
sum[i]+=sum[i-];
for(int i=;i<=n;i++)
ti[i]=max(ti[i-],t[i-])+dis[i-];
int ans=;
for(int i=;i<=m;i++)
ans+=ti[id[i].ed]-id[i].arr;
while(k)//
{
g[n-]=n;
for(int i=n-;i>;i--)
{
if(ti[i+]>t[i+])
g[i]=g[i+];
else
g[i]=i+;
}
int pos=,ma=;
for(int i=;i<n;i++)
{
if(dis[i]&&(sum[g[i]]-sum[i])>ma)
{
ma=sum[g[i]]-sum[i];
pos=i;
}
}
if(!ma)
break;
k--;
dis[pos]--;
ans-=ma;
for(int i=;i<=n;i++)
ti[i]=max(ti[i-],t[i-])+dis[i-];
}
printf("%d\n",ans);
}
return ;
}
观光公交noip<贪心>的更多相关文章
- Luogu 1315 【NOIP2011】观光公交 (贪心)
		
Luogu 1315 [NOIP2011]观光公交 (贪心) Description 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供 ...
 - vijos1741 观光公交 (贪心)
		
https://www.vijos.org/p/1741 P1741观光公交 请登录后递交 标签:NOIP提高组2011[显示标签] 描述 风景迷人的小城Y市,拥有n个美丽的景点.由于慕名而来的游 ...
 - [NOIP2011] 观光公交(贪心)
		
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
 - 观光公交 [NOIP 2011] [思维推导]
		
Description 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第0 分钟出现在1号景点,随后依 ...
 - 洛谷P1315 观光公交 [noip2011D2T3] 贪心
		
正解:贪心 解题报告: 这里是链接! 唔我觉得还是很容易想到是贪心的,这个难就难在怎么贪心 下面列一下常见的几个贪心思想: 1)根据车上的人数排序,人最多的那条路用加速器 错误,人数多并不意味着加速的 ...
 - 观光公交  2011年NOIP全国联赛提高组(贪心,递推)
		
观光公交 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 风景迷人的小城 Y 市 ...
 - noip 2011观光公交
		
P1315 观光公交 95通过 244提交 题目提供者该用户不存在 标签贪心递推2011NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 风景迷人的小城Y 市,拥有n 个美 ...
 - [luogu]P1315 观光公交[贪心]
		
[luogu]P1315 [NOIP2011]观光公交 ——!x^n+y^n=z^n 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车, ...
 - NOIP观光公交
		
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...
 
随机推荐
- deque (STL)
			
//双端队列 //deque的成员函数 c.assign(beg, end); //将[beg, end]区间中的数据赋值给c c.assign(n, elem); //将n个elem的拷贝赋值给c ...
 - 转载-ACPI的知识
			
ACPI – the Advanced Configuration & Power Interface. ACPI是OS,BIOS和硬件之间的抽象层.它允许OS和平台独立的发展,比如新的OS可 ...
 - error while loading shared libraries: libseaudit.so.4: cannot open shared object file: Error 40
			
安装共享库后要注意共享库路径设置问题, 如下: 1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令 ldconfig命令的用途, 主要是在默认搜寻目录( ...
 - Python基础学习笔记---5.输入\输出 I\O文件操作目录
			
在很多时候,你会想要让你的程序与用户(可能是你自己)交互.你会从用户那里得到输入,然后打印一些结果.我们可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,你也可以使用多种 ...
 - redis----查询keys(模糊匹配)
			
keys * 返回所有的key keys h?llo 类似数据库的匹配使用 keys h*lleo 类似数据库的匹配使用 keys h[ae]llo 只能是a或e的匹配 一次设置多个keys ms ...
 - ADPCM编码和解码
			
原文:http://www.znmcu.cn/znx_51_alltest_shell_fj_adpcm1.html ADPCM音频解码,其实放在这里有些不太合适. 在编写ZN-X开发板整板测试程序的 ...
 - 开发MOSS自定义字段类型
			
前段时间,由于刚好项目定制的需要,笔者就开发了几个自定义字段类型.在这抽空做个详细笔记,方便初学者学习.这方面的资料也很多,如果自身觉得不大明白可以参考下SDK和网上的相关文章.本章的目的主要是给新手 ...
 - android网络开发之测试机连接到服务器上面
			
1:本人使用Tomcat作为服务器软件,首先打开Tomcat.(可以在浏览器中输入http://www.127.0.0.1:8080/查看) 2:服务器后台使用Servelt开发,这里不再讲解. 3: ...
 - AC Me
			
AC Me Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
 - Mysql:输出到文件
			
mysql>tee /home/a.txt mysql>show processlist; mysql>exit tee命令能重定向输出,同时屏幕会同步显示.