洛谷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个美丽的景点.由于慕名而来的游 ...
随机推荐
- 【转】在Win7的IIS上搭建FTP服务及用户授权
[转]在Win7的IIS上搭建FTP服务及用户授权 [转]在Win7的IIS上搭建FTP服务及用户授权 FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属 ...
- 转载 :配置ssh密钥认证自动登录
原文地址 :https://segmentfault.com/a/1190000000481249 在客户端来看,SSH提供两种级别的安全验证.[摘自wikipedia] 第一种级别(基于密码的安全验 ...
- 《FPGA全程进阶---实战演练》第七章 让按键恢复平静
1基础理论部分 A:“怎么按键按下去之后,结果不正常?”,B:“按键你消抖了吗?”A:“消什么抖,还要消抖?”, B:“先检测按键变化,然后消抖过滤波动信号,最后输出稳定信号”,A:“我好像漏掉了什 ...
- python中用修饰器进行异常日志记录
当脚本中需要进行的的相同的异常操作很多的时候,可以用修饰器来简化代码.比如我需要记录抛出的异常: 在log_exception.py文件中, import functools import loggi ...
- ASP.NET MVC 4 (十二) Web API
Web API属于ASP.NET核心平台的一部分,它利用MVC框架的底层功能方便我们快速的开发部署WEB服务.我们可以在常规MVC应用通过添加API控制器来创建web api服务,普通MVC应用程序控 ...
- Hbase学习之windows单机版搭建
1. 下载hadoop-common-2.2.0-bin-master hbase-1.0.2 并解压 2. 配置 修改 三个个环境变量 2.1 JAVA_HOME(如果没有配置请先配置 确保电 ...
- 排查java进程cpu占用高的问题
一.思路 分两步,主要是找出占用cpu高的进程,再找出该进程内到底是哪个线程占用cpu高. 二.找出占用cpu高的进程 参考: https://blog.csdn.net/hfhwfw/article ...
- File not found 错误 nginx
这个错误很常见,很明显找不到文件. 原因是php-fpm找不到SCRIPT_FILENAME里执行的php文件,所以返回给nginx 404 错误. 那么两种情况要么文件真的不存在,要么就是路径错误. ...
- day_5.04py
Pycharm默认不依赖系统环境下安装的requests 打开 File->Settings->Project:你的Project名 点击“+”号 搜索requests并安装 长见识了 # ...
- 在服务器上搭建git仓库
文档 管理全部用户的公匙 /tmp/id_rsa.ajanuw.pub // 这里全部放在 /tmp目录下 在服务器上创建一个名叫 git 的用户 adduser git // 一路回车 passwd ...