题目
每次把加速器用在可以是答案减少最多的地方就即可。(这不是废话吗?)
具体而言,我们处理出:
\(sum_i\)到\(i\)为止下车人数之和。
\(t_i\)在\(i\)最晚的上车的人的上车时间。
\(a_i\)表示到达\(i\)的时间。
那么我们做\(k\)次,每次先处理出:
\(l_i\)表示在\(i\)使用加速器,能够使得出发时间减一的最后位置。
然后找贡献最大的,更新\(t,a,l\)即可。

#include<bits/stdc++.h>
using namespace std;
int read(){int x=0;char c=getchar();while(!isdigit(c))c=getchar();while(isdigit(c))x=x*10+c-48,c=getchar();return x;}
int max(int a,int b){return a>b? a:b;}
const int N=1001,M=10001;
int d[N],T[M],A[M],B[M],t[N],s[N],a[N],l[N];
int main()
{
    int n=read(),m=read(),k=read(),ans=0,mx,p,i;
    for(i=1;i<n;++i) d[i]=read();
    for(i=1;i<=m;++i) T[i]=read(),A[i]=read(),B[i]=read(),t[A[i]]=max(t[A[i]],T[i]),++s[B[i]];
    for(i=2;i<=n;++i) s[i]=s[i]+s[i-1];
    for(a[1]=0,i=2;i<=n;++i) a[i]=max(a[i-1],t[i-1])+d[i-1];
    for(i=1;i<=m;++i) ans+=a[B[i]]-T[i];
    while(k--)
    {
        l[n-1]=n,mx=0;
    for(i=n-2;i;--i) l[i]=a[i+1]<=t[i+1]? i+1:l[i+1];
    for(i=1;i<n;++i) if(s[l[i]]-s[i]>mx&&d[i]) mx=s[l[i]]-s[i],p=i;
        ans-=mx,--d[p];
        for(i=p+1;i<=n;++i) a[i]=max(a[i-1],t[i-1])+d[i-1];
    }
    return !printf("%d",ans);
}

\(O(n^2)\):
考虑性质,原图由于必须要等乘客的缘故,肯定被分成若干段。
每段选最靠左的端点必定最优,我们找出最优的段,一直加满,直到新增了一段。
这样每次操作必定增加一段,只会进行\(O(n)\)次。
\(O(nlog\ n)\):
由于段之间是没有影响的,所以可以用优先队列来维护不同的段的最大值,再用数据结构维护每段还需要加多少才会满。

Luogu P1315 [NOIP2012]观光公交的更多相关文章

  1. 【题解】洛谷P1315 [NOIP2011TG] 观光公交(前缀和+贪心)

    次元传送门:洛谷P1315 思路 思路大概想到了 可是代码实现却没想到 所以参考题解了 D2T3的贪心果然有难度 我们考虑在每次用加速器有两种情况 到下一个点还需要等待:以后的时间就不再影响了 到下一 ...

  2. 洛谷题解 P1315 【观光公交】

    这道题很多人都用的模拟(或者暴力),今天我就写一个"标准"的贪心发给大家.(我这段代码差点超时···也差点超内存···) 主要思路:通过贪心求得最小值即可,把加速器用到乘客最多的两 ...

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

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

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

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

  5. 洛谷P1315 [NOIP2011提高组Day2T3] 观光公交

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

  6. noip 2011观光公交

    P1315 观光公交 95通过 244提交 题目提供者该用户不存在 标签贪心递推2011NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 风景迷人的小城Y 市,拥有n 个美 ...

  7. luoguP1315 观光公交 题解(NOIP2011)(贪心)

    P1315 观光公交 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<cm ...

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

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

  9. vijos1741 观光公交 (贪心)

    https://www.vijos.org/p/1741 P1741观光公交 请登录后递交 标签:NOIP提高组2011[显示标签]   描述 风景迷人的小城Y市,拥有n个美丽的景点.由于慕名而来的游 ...

随机推荐

  1. 【shell】sed后向引用替换文本

    要求如下: 原文 <server name="92服" port="10092" os="android" hidden=" ...

  2. MongoDB学习笔记 1.1

    //1.安装MongoDB数据库 cd D:\Software\MongoDB\data\bin mongod --dbpath "D:\Software\MongoDB\data\db&q ...

  3. python+selenium封装UI自动化框架

    seleinum框架 框架的思想:  解决我们测试过程中的问题:大量的重复步骤,用自动化来实现    1)配置和程序的分离    2)测试数据和程序的分离    3)不懂编程的人员可以方便使用:使用的 ...

  4. java8中接口default、static新特性,与抽象类区别

    之前Java接口中的方法默认都是public abstract,成员变量默认都是public static final,偶然发现接口中可以有default类型的方法,才知道java8中接口可以有自己的 ...

  5. IDEA中Springboot静态文件加载(热部署)

    Springboot项目静态文件加载 昨天写项目的时候碰到一个问题,就是静态文件css无法读取到项目中,我仔细思考了下,总结了下,可能有两个问题 1.页面未加载更新 这个可能性非常大,Chrome就是 ...

  6. 策略模式------《Head First 设计模式》

    第一章---策略模式 xzmxddx 学习方式:书籍<Head First 设计模式>,这本书通俗易懂,所有知识点全部取自本书. 面向对象设计原则 封装变化 多用组合,少用继承 针对接口编 ...

  7. Codeforces 950D A Leapfrog in the Array ( 思维 && 模拟 )

    题意 : 给出 N 表示有标号 1~N 的 N 个数,然后从下标 1 开始将这 N 个数每隔一位放置一个,直到 N 个数被安排完,现在有一个操作就是每次将数列中最右边的数向离其左边最近的空缺处填上,一 ...

  8. Devexpress MVC DateEdit 设置默认的Time

    当用户没有选择日期的时候, 默认显示当前的时间给TimeEdit. 只有当用户选了日期后, 才会把时间带进去. 效果图: 实现 C# Helper Code public static Action& ...

  9. js,正则实现金钱格式化

    https://blog.csdn.net/qq_36279445/article/details/78889305 https://github.com/jawil/blog/issues/30

  10. 【转】UNITY中相机空间,投影空间的正向问题

    原文链接1:https://www.cnblogs.com/wantnon/p/4570188.html 原文链接2:https://www.cnblogs.com/hefee/p/3820610.h ...