$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. Android 在图片的指定位置添加标记

    这些天,项目里加了一个功能效果,场景是: 假如有一个家居图片,图片里,有各样的家居用品: 桌子,毛巾,花瓶等等,需要在指定的商品处添加标记,方便用户直接看到商品,点击该标记,可以进入到商品详情页 .实 ...

  2. Jmeter监控

    https://www.cnblogs.com/saryli/p/6596647.html JMeter是一款压力测试工具,我们也可以用它来监控服务器资源使用情况. JMeter正常自带可以通过Tom ...

  3. ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏

    相信做app应用开发的,绝对都接触过ViewPager,毕竟ViewPager的应用可以说无处不在:APP第一次启动时的新手导航页,APP中结合Fragment实现页面滑动,APP中常见的广告栏的自动 ...

  4. oracle函数 round(x[,y])

    [功能]返回四舍五入后的值 [参数]x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位. [返回]数字 [示例] se ...

  5. torch.nn.LSTM()函数维度详解

    123456789101112lstm=nn.LSTM(input_size,                     hidden_size,                      num_la ...

  6. H3C 帧中继与水平分割(续)

  7. java super关键字和调用父类构造方法

    表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法. 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另 ...

  8. SpringBoot2.X 项目使用外置绝对路径的配置文件

    spring-boot-absolute-config 前言 该工程是为解决应用部署应用时指定配置文件存放位置的问题. SpringBoot项目默认加载以下位置的配置文件: ? 1 2 3 4 cla ...

  9. SpringBoot项目改变图片临时文件的存储路径

    springboot项目,部署到服务器后,运行一段时间后,处理文件上传的接口时,后报异常. Could not parse multipart servlet request; nested exce ...

  10. 2018-9-3-C#-const-和-readonly-有什么区别

    title author date CreateTime categories C# const 和 readonly 有什么区别 lindexi 2018-9-3 16:52:7 +0800 201 ...