noip2014普及组初赛答案_观光3路公交车路线

noip2014普及组初赛答案_观光3路公交车路线话说,我终于AC了这个题这是一个贪心,说实话开始做的时候……完全没看出来QAQ。。可能有人说这是个dp,但这真不是(dalao请无视)这真的只是个贪心。。。。首先对于每个点当然是能走就走,不能走就等待,这是无法控制的。所以只考虑氮气加速器加在哪里可以使时间总和尽量少。所以如果选择加速,可能会使后面等待的时间更长,或者更短,对后面都会有影响。但是沿着一条边加速会影响后面的所…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

话说,我终于AC了这个题

这是一个贪心,说实话开始做的时候……完全没看出来QAQ。。

可能有人说这是个dp,但这真不是(dalao请无视)

这真的只是个贪心。。。。

首先对于每个点当然是能走就走,
不能走就等待,这是无法控制的。
所以只考虑氮气加速器加在哪里可以使时间总和尽量少。

所以

如果选择加速,可能会使后面等待的时间更长,或者更短,对后面都会有影响。

但是沿着一条边加速会影响后面的所有边么?

这可不一定

来来来,我们分类讨论一下:

1.到下一个点还需要等待:以后的时间就不再影响了
2.到下一个点不需要等待:对以后的时间还会加速直到……出现情况1(或者到最后一个点)!!

即每次用加速器都会对后面的人有影响,

用 $ sum_i $ 记录到i的人数,前缀和处理, $ g_i $ 代表每个点所能影响到的最远点,

那么 $ sum_{i + g_i} – sum_i $ 即是能影响到的人数

这样就很容易想到选择影响尽量大的点减掉(在这里贪心)。

CODE:

/*last[i] : 最后一个人到达i站点的时间。 sum[i] : 到i站点的总人数。 enter[i] : 公交车到i站点的最少时间。 g[i] : 每个站点所能影响到的最远站点,即要求的影响。*/ #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define N 30001 using namespace std; int n,m,k; int dis[N],last[N],g[N],enter[N]; int ans,sum[N],maxx = -1; struct node { int time,start,end; }a[N]; inline void bus(int x) { while(x) { --x; g[n] = g[n - 1] = n; int tar; maxx = -1; for(int i = n - 2 ; i >= 1 ; -- i) { if(enter[i + 1] <= last[i + 1])//下一个点如果等待 g[i] = i + 1;//最多影响到下一个 else //不等待 g[i] = g[i + 1];//继续减少后面的时间 } for(int i = 1 ; i < n ; ++ i){//for边数 int tmp = sum[g[i]] - sum[i];//最多影响的人数 if(tmp > maxx && dis[i] > 0){ maxx = tmp; tar = i;//标记最优情况减的点 } } ans -= maxx;//更新ans dis[tar] --;//减掉dis for(int i = 2 ; i <= n ; ++ i) enter[i] = max(enter[i - 1],last[i - 1]) + dis[i - 1];//重新更新enter } return; } int main(){ scanf("%d%d%d",&n,&m,&k); for(int i = 1 ; i < n ; ++ i) scanf("%d",&dis[i]); for(int i = 1 ; i <= m ; ++ i) scanf("%d%d%d",&a[i].time,&a[i].start,&a[i].end); for(int i = 1 ; i <= m ; ++ i) { last[a[i].start] = max(last[a[i].start],a[i].time);//最后一个人到a[i].start站点的时间 和到这个点的时间取max sum[a[i].end] ++; } enter[1] = last[1]; for(int i = 1 ; i <= n ; ++ i) sum[i] += sum[i - 1];//到i站点的总人数 前缀和处理 for(int i = 2 ; i <= n ; ++ i) enter[i] = max(enter[i - 1],last[i - 1]) + dis[i - 1];//公车到i站点的最少时间 和最后到的时间取max for(int i = 1 ; i <= m ; ++ i) ans += enter[a[i].end] - a[i].time;//处理出不加加速器的answer,后面就可以直接减啦~ bus(k); printf("%d \n",ans); return 0; }

真的是考验智商QAQ…

转载于:https://www.cnblogs.com/Repulser/p/10665627.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189785.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • armv6、armv7、armv7s、arm64 与开发静态库(.a)

    armv6、armv7、armv7s、arm64 与开发静态库(.a)声明:本帖系列均为在转载和摘抄的基础上进行补充。若转载请备注原文出处。/** 第一部分 初步认识*/ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,它的性能在同等功耗产品中也很出色,几乎所有手机都是使用它的。Armv6、armv7、armv7s、arm64都是arm处理器的指令集,所有指令集原则上都是向下兼容

    2022年6月29日
  • 免费各种查询API接口

    免费各种查询API接口

    2021年11月5日
  • gamma校正什么意思_串联滞后校正对系统性能的影响

    gamma校正什么意思_串联滞后校正对系统性能的影响【Gamma的由来】首先,要区分照度和亮度,照度是一个客观的量,亮度是一个主观的量,不同的人看相同照度的物体所感受到的亮度是不一样的。对于照度线性变化的物体,人眼感受到的亮度不是线性的。人眼对于低照度的物体更敏感,这意味着对于照度为2、3、4的三个物体,人眼能够区分,而对于照度为222、223、224的三个物体,人眼不能区分。其次,我们存储颜色的空间是有限的,常用的RGBA32格式,每个颜色通道只有8位,最多能表示256种照度,而现实世界中的照度远超256。基于人眼对照度的感知特点,我们不能线性的去

    2022年9月22日
  • html实战-制作静态网页「建议收藏」

    html实战-制作静态网页「建议收藏」教程视频:http://edu.csdn.net/course/detail/535 从42开始制作的网页:http://www.cnos.co/整体思路:先布局再CSS控制骨架搭好了,初始化样式,后再弄CSS样式。注意:将CSS的样式导入到外部样式表时,要注意图片的位置,以及对外部样式表的引入  1、头部的背景图片的高度128px来自素材的图片高,容器的宽度大

    2022年9月5日
  • c语言运行后电脑很卡,如何让电脑提速,电脑卡是什么原因?

    c语言运行后电脑很卡,如何让电脑提速,电脑卡是什么原因?前言昨天的文章被限制了,正在申诉刚好最近有网友问小编这样一个问题:花了六千买的独显笔记本,用了才一年就卡的不行了,请问电脑卡是什么原因?小编对电脑还算颇有研究,看了网友电脑配置并不算低,导致电脑卡的原因主要在于系统优化与一些硬件方面的问题,下面小编就来说说如何让电脑提速。正文电脑卡是什么原因?导致电脑卡的原因有很多,综合来看,无非就是软件与硬件的问题。其中,软件层面主要是系统优化,硬件方面则主要是…

    2022年6月7日
  • dreamweaver导入站点_站点创建成功咋办

    dreamweaver导入站点_站点创建成功咋办
    在“文件”面板中,单击“文件”下方列表框的下拉箭头,从下拉列表框中单击“管理站点”菜单项,如下图所示。
    弹出“管理站点”对话框,如下图所示。
    点击“新建”-“站点”,如下图所示。
    弹出“未命名站点1的站点定义为”对话框,在“基本”选项卡,“您打算为您的站点起什么名字?”一栏输入站点的名字,如:Fuersen。在“您的站点的HTTP地址(URL)是什么?”输入“http://www.Fuersen.com/mysite”,如下图所示。
    点击“下

    2022年10月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号