$Luogu$

$Sol$

觉得这题贪心要想很多事情,不适合我这种没脑子选手$ovo$.看题解还理解了很久.

最开始是这样想的:把所有的路段上的乘客按大小排个序用加速器就好了,这个想法被自己轻松$hack.$因为,假如一个路段的终点没人下车而且又要等乘客很久才能出发,那前面用加速器也没意义了.由这个反例似乎可以推出用$1$个加速器能减少的时间?由这个起点向后枚举点,看用了加速器到达后是否还需要等乘客,如果不是,那么这个加速器对于这站下车的乘客就是有帮助的.由此也可以看出用加速器之后可能会对后面的出发时间有影响,这里需要一个变量来维护.

具体来说:

$off[i]$表示第$i$站下车的乘客数量.

$arr[i]$表示第$i$站乘车的乘客的最晚到达时间.

$dd[i]$表示汽车到达$i$站的时间.

$d[i]$表示第$i$站到第$i+1$站所需要的时间.

$dd[i]=max(dd[i-1],arr[i-1])+d[i-1].$

$aff[i]$表示假设$(i,i+1)$这段路程所需时间减少$1$,那么在$aff[i]$下站的人是最后的受益者.

差不多就是维护上面的变量就好了,具体看代码叭.

$Code$

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define yes(i,a,b) for(Rg int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define int long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Rg int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
const int N=;
int n,m,k,as,off[N],arr[N],dd[N],sum[N],d[N],aff[N];
struct node{int t,u,v;}a[N*];
main()
{
n=read(),m=read(),k=read();
go(i,,n-)d[i]=read();
go(i,,m)
{
a[i]=(node){read(),read(),read()};
off[a[i].v]++;
arr[a[i].u]=max(arr[a[i].u],a[i].t);
}
go(i,,n)dd[i]=max(dd[i-],arr[i-])+d[i-];
go(i,,n)sum[i]=sum[i-]+off[i];
go(i,,m)as+=dd[a[i].v]-a[i].t;
arr[n]=inf;
while(k--)
{
int maxs=,qwq=;
yes(i,n-,)
if(dd[i+]>arr[i+])aff[i]=aff[i+];
else aff[i]=i+;
go(i,,n-)
if(sum[aff[i]]-sum[i]>maxs&&d[i])
maxs=sum[aff[i]]-sum[i],qwq=i;
as-=maxs;d[qwq]-=;
go(i,,n)dd[i]=max(dd[i-],arr[i-])+d[i-];
}
printf("%lld\n",as);
return ;
}

随机推荐

  1. HDU - 6534 Chika and Friendly Pairs

    这个题其实也是很简单的莫队,题目要求是给一个序列,询问l-r区间内部,找到有多少对答案满足 i < j 并且 | a[ i ] -a[ j ] | <=k 也就是有多少对,满足差值小于k的 ...

  2. day1_python流程控制、For循环

    一.流程控制 条件语句 1.1.单分支 ? 1.2.多分支 ? 需求一.用户登陆验证 #!/usr/bin/env python name=input('请输入用户名字:') password=inp ...

  3. 一个简单的hexo搭建博客网站的故事

    首先安装hexo mkdir hexo #创建一个文件夹 cd hexo #切换到hexo目录下面 npm install -g hexo-cli npm install hexo --save 然后 ...

  4. History和Location

    Location 对象属性属性 描述hash 设置或返回从井号 (#) 开始的 URL(锚).host 设置或返回主机名和当前 URL 的端口号.hostname 设置或返回当前 URL 的主机名.h ...

  5. SQL 三个表练习(student,teacher,score)

  6. linux下C调用lua的第一个程序

    linux下C调用lua的第一个程序 linux的环境是Fedora 18,运行在VM workstation中,以开发模式安装,自带了lua 5.1.4,可以在命令行上直接用lua命令进入到lua环 ...

  7. HDU 1286

    欧拉函数 φ函数的值 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数.φ(1)=1 ...

  8. gradle 生成 pom,引用mybatis-plus源代码到自己的工程中

    一 前情概要 自己的maven工程使用mybatis-plus,然后想用热部署加载mapping文件.经过各种探索之后实现了,但是修改了xml文件后,就不断在控制台提示“mapper xxx is i ...

  9. 2019-1-29-WPF-设置输入只能英文

    title author date CreateTime categories WPF 设置输入只能英文 lindexi 2019-1-29 15:8:4 +0800 2018-2-13 17:23: ...

  10. H3C 静态默认路由配置