洛谷P1315 观光公交 [noip2011D2T3] 贪心
正解:贪心
解题报告:
唔我觉得还是很容易想到是贪心的,这个难就难在怎么贪心
下面列一下常见的几个贪心思想:
1)根据车上的人数排序,人最多的那条路用加速器
错误,人数多并不意味着加速的贡献就大.很容易举反例,比如车上有$100$个人都是在$A$站上车,$50$人在$B$站下车$50$人在$C$站下车,然后$B$站有个人来得比车晚.
那根据这个猜想的话就会要$AB$路上加速,但这显然是错的鸭.AB上加速完全没意义欸$QwQ$
2)根据缩短最多人数的路径排序
也就是说按照站点一个个来,然后我们很容易得知每个站点有没有迟到的人,没有的话我们就可以在它前面用,然后最后再看哪条路加速加的人最多就欧克了,这个倒序求下可以$O(n)$做.
欧克代码见下
1 #include<bits/stdc++.h>
2 using namespace std;
3 long long d[1010],t[10010],a[10010],b[10010],off[1010],ti[10010],sum[10010],ans,us[10010],lst[1010];
4 long long read()
5 {
6 char ch=getchar();long long x=0;
7 while(ch>'9' || ch<'0')ch=getchar();
8 while(ch>='0' && ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=getchar();
9 return x;
10 }
11 int main()
12 {
13 long long n=read(),m=read(),k=read();
14 for(long long i=1;i<n;i++)d[i]=read();
15 for(long long i=1;i<=m;i++)t[i]=read(),a[i]=read(),b[i]=read(),off[b[i]]++,lst[a[i]]=max(lst[a[i]],t[i]);
16 for(long long i=2;i<=n;i++)ti[i]=max(ti[i-1],lst[i-1])+d[i-1];
17 for(long long i=1;i<=n;i++)sum[i]=sum[i-1]+off[i];
18 for(long long i=1;i<=m;i++)ans+=ti[b[i]]-t[i];
19 ti[1]=lst[1];us[n]=us[n-1]=n;
20 while(k--)
21 {
22 for(long long i=2;i<=n;++i)ti[i]=max(ti[i-1],lst[i-1])+d[i-1];
23 for(long long i=n-2;i;--i)
24 {
25 if(ti[i+1]>lst[i+1])us[i]=us[i+1];
26 else us[i]=i+1;
27 }
28 long long nn=0,mm=0;
29 for(long long i=1;i<n;++i)
30 if(sum[us[i]]-sum[i]>nn && d[i])nn=sum[us[i]]-sum[i],mm=i;
31 ans-=nn,d[mm]--;
32 }
33 cout<<ans<<endl;
34 return 0;
35 }
没有注释,但这个想法其实很容易想到的所以我也懒得写注释了,$QwQ$
然后随便优化下可以优化成$n^2$
数据结构优化下似乎可以到$nlogn$,详见$gzy$贪心$ppt$
洛谷P1315 观光公交 [noip2011D2T3] 贪心的更多相关文章
- 洛谷 P1315 观光公交 —— 贪心
题目:https://www.luogu.org/problemnew/show/P1315 问题是想不明白改动一条边会对后面造成怎样的影响: 实际上影响的会是一段,当某个车站出发时间受其来人牵制时, ...
- NOIP2011 洛谷P1315 观光公交
题目传送门 先解释一下数组的意义: d[i]表示公交车从第i个点到第i+1个点需要的时间 pas结构体中:t表示这个乘客到公交站牌的时间,u表示起点,v表示终点 wait[i]表示公交车在第i个站点等 ...
- [NOIP2011] 提高组 洛谷P1315 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- 洛谷P1315 观光公交
SB贪心......暴露了我代码能力巨弱的本质. 题面 解:首先我们应该想到DP(但是我想到了贪心......) 然后分析题目本质,每个点有个限制,最早开走时间不得早于最晚上车时间. 然后我们就可以把 ...
- 【题解】洛谷P1315 [NOIP2011TG] 观光公交(前缀和+贪心)
次元传送门:洛谷P1315 思路 思路大概想到了 可是代码实现却没想到 所以参考题解了 D2T3的贪心果然有难度 我们考虑在每次用加速器有两种情况 到下一个点还需要等待:以后的时间就不再影响了 到下一 ...
- 洛谷P1315 [NOIP2011提高组Day2T3] 观光公交
P1315 观光公交 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号 ...
- Luogu 1315 【NOIP2011】观光公交 (贪心)
Luogu 1315 [NOIP2011]观光公交 (贪心) Description 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供 ...
- [luogu]P1315 观光公交[贪心]
[luogu]P1315 [NOIP2011]观光公交 ——!x^n+y^n=z^n 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车, ...
- vijos1741 观光公交 (贪心)
https://www.vijos.org/p/1741 P1741观光公交 请登录后递交 标签:NOIP提高组2011[显示标签] 描述 风景迷人的小城Y市,拥有n个美丽的景点.由于慕名而来的游 ...
随机推荐
- buildroot 编译问题
buildroot 编译的时候,出现 g++: internal compiler error: Killed (program cc1plus) 这个是因为虚拟机内存不足的原因, 加上一些内存即可 ...
- Genymotion模拟器出现INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法
下载插件: http://files.cnblogs.com/files/feijian/genymotion-arm-translation_v1.1.zip 步骤: 将模拟器运行起来,然后将下载好 ...
- Mac/Linux如何查找应用所安装路径
Linux.Mac中查看某 个软件的安装路径(地址)有时显得非常重要.比如某个文件的快速启动项被删除,或者你要建立快速启动项,或者想删除. 添加安装文件等等,很多地方都要用到查案文件安装路径的命令. ...
- Linux时间变慢解决方法
情景:系统为CentOS-5.4,硬件时间正确(查看硬件时间的方法见下面),系统时间每隔24小时会慢20分钟左右Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Cl ...
- Spring源码学习:day2
前言: 我还是太懒了,连截图都懒得粘贴,故直接用书上说的话的截图吧. 代码的编写过程都是应该有一个入口的,所有的代码最终都是为了那个入口更加方便更加简单而产生的. 看代码的过程,就应该抓住主线,顺着主 ...
- python之WSGI与Guincorn
WSGI与Guincorn WSGI WSGI (Web Server Gateway Interface),WSGI是为Python语言定义的Web服务器和Web应用程序之间的一种通用接口. 如下图 ...
- Tomcat -- 启动错误 -- 解决锦集
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter :在Tomacat7的context.xml文 ...
- IOS开发之--iPhone XR,iPhone XS Max适配
因为iPhone X和iPhone XS的尺寸比是一样的,只需要把这两张图片补上就行. 具体原理性的东西就多说了,因为iPhoneX系列都一样,本文只说明一下具体怎么做,要适配屏幕,首先得让他以正确的 ...
- 腾讯云Badjs镜像使用入门
版权声明:本文由王少飞 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/498929001487125840 来源:腾云阁 ...
- Linux Kafka集群管理工具kafka-manager的安装使用
一.kafka-manager简介 kafka-manager是目前最受欢迎的kafka集群管理工具,最早由雅虎开源,用户可以在Web界面执行一些简单的集群管理操作.具体支持以下内容: 管理多个集群 ...