[JOISC2014]バス通学

题目大意:

有\(n(n\le10^5)\)个点和\(m(m\le3\times10^5)\)条交通线路。第\(i\)条交通线路可以让你在时间\(x_i\)从\(a_i\)出发,并在\(y_i\)时到达\(b_i\)。\(q(q\le10^5)\)次询问,每次询问若要在时间\(l_i\)到达\(n\)点,最晚什么时候要从\(1\)点出发。

思路:

将每条交通线路拆成两种操作:出发和到达。

用\(f_i\)表示乘上第\(i\)辆车最晚几点出发,\(g_i\)表示到达第\(i\)个点最晚几点出发。

将所有操作按照发生的时间\(t_i\)排序,对于出发和到达,分别进行以下两种操作:

  1. 出发:询问\(g_{a_i}\)。
  2. 到达:用\(f_i\)更新\(g_{b_i}\)。

而对于最后的询问,也相当于第一种操作。

时间复杂度\(\mathcal O((m+q)\log(m+q))\)。

源代码:

#include<cstdio>
#include<cctype>
#include<vector>
#include<algorithm>
inline int getint() {register char ch;while(!isdigit(ch=getchar()));register int x=ch^'0';while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');return x;
}
const int N=1e5+1,M=3e5;
int f[M*2],g[N];
struct Query {int x,t,id;bool type;//0->Start, 1->Endbool operator < (const Query &rhs) const {if(t==rhs.t) return type>rhs.type;return t<rhs.t;}
};
std::vector<Query> v;
int main() {const int n=getint(),m=getint();for(register int i=0;i<m;i++) {const int x=getint(),y=getint(),s=getint(),t=getint();v.push_back((Query){x,s,i,0});v.push_back((Query){y,t,i,1});}const int q=getint();for(register int i=0;i<q;i++) {v.push_back((Query){n,getint(),m+i,0});}const int k=v.size();std::sort(v.begin(),v.end());std::fill(&g[2],&g[n]+1,-1);for(register int i=0;i<k;i++) {const int &x=v[i].x,&id=v[i].id;if(v[i].type) {//Endg[x]=std::max(g[x],f[id]);} else {//Startf[id]=x!=1?g[x]:v[i].t;}}for(register int i=0;i<q;i++) {printf("%d\n",f[m+i]);}return 0;
}

转载于:https://www.cnblogs.com/skylee03/p/10112626.html

[JOISC2014]バス通学相关推荐

  1. 如何有效抑制路段车速 保障通学、生活道路安全?

    导  语 "城市管理要像绣花一样精细",随着我国城市管理对精细化与人性化要求的不断提升,学生通学.居民生活区域的道路交通安全保障已成为热门话题.他山之石,可以攻玉,日本在提升通学路 ...

  2. 大学生有必要学python吗_大学生学python到底有没有用?

    当你开始想这个问题的时候,很好,你已经意识到了学习,但是不知道需不需要.那么我的建议是,思考,因为每个人的答案都不会一样.我列出几个问题自己尝试回答一下,之后就知道这个问题的答案了. 1. 目前你是否 ...

  3. C语言/C++编程学习:不找C/C++的工作也要学C/C++的原因

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  4. 【python教程入门学习】python值得学吗,怎么自学?

    python值得学吗,怎么自学?python有用吗?有以下工作内容的人python一定有用的: python能做什么,python自学行吗? (1)长期和数据excel打交道的人,或者整理文本等数据格 ...

  5. 学语言·写博客·分享交流——《我是一只IT小小鸟》读书笔

    学语言·写博客·分享交流 --<我是一只IT小小鸟>读书笔记(8) 原贴地址:http://byourselves.ycool.com/post.2507061.html 刘未鹏的故事现在 ...

  6. 鼎力成功【心灵幸福学】第20期青年企业家特训营

    [心灵幸福学]演讲会 朋友,上帝安排我们认识,有其原因与目的.人生充满了变数,一直在变,变是不变.人,生来平凡,都是凡人,凡人只有遇到贵人,才变贵人.也许你出身贫寒,也许你相貌平淡,也许知识.也许能力 ...

  7. 屋顶打字通(三)--总结

    当我发现,添加文件,计时器,刷新列表出现问题后,我又翻出屋顶打字通代码做了一番修改,勉强添加了显示英的样式,把刷新列表的问题用绝对路径解决了,至此,我的屋顶打字通算是完成了它的第二个版本,这份代码也没 ...

  8. 计算机要先学什么,新手学电脑打字手法-学电脑,先要学什么科目 爱问知识人...

    2005-02-02 11:21:46 上网 全部 2005-02-02 11:21:46 2005-01-27 14:12:03 其实最好从学玩游戏开始!为什么这么说,理由有三:首先,从培养兴趣开始 ...

  9. C语言/C++编程学习:不找C/C++的工作也要学C/C++的原因!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

最新文章

  1. 用上Pytorch Lightning的这六招,深度学习pipeline提速10倍!
  2. 案例驱动python编程入门-python实现事件驱动
  3. VTK:PolyData之SelectPolyData
  4. iBatis.Net(C#)数据库查询
  5. python中面向对象编程简称为_Python基础-面向对象编程
  6. 工作250:uniapp--实战--flex布局--星级评分
  7. 编译原理(简单自动词法分析器LEX)
  8. 在 TMG 更新中心中使用 WSUS进行每日的定义更新
  9. Golang实践录:调用C++函数的优化
  10. JavaScript格式化金额及格式化输出
  11. 测试电脑cpu性能软件,怎么使用软件来测试CPU性能
  12. hmcl启动器java下载_HMCL启动器|Hello Minecraft! Launcher 3.2 —— Win/Mac苹果系统/Ubuntu|2亿次使用...
  13. windows11设置chrome谷歌浏览器为默认浏览器
  14. TeX系列: dot2tex 和 dot2texi 配置步骤
  15. 写乐100道练习题_写乐大型21K详细评测(文长慎入)
  16. TFTP文件传输协议
  17. 北京航空航天大学公开课:应用数学分析 笔记:微积分发展史,牛顿,莱布尼茨,拉格朗日,欧拉,柯西,黎曼
  18. 二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真
  19. 综合素质能力测试软件,【北森能力题库_员工能力测试管理系统】员工素质测评题库_员工综合素质测评表_免费在线试用_选软件网...
  20. 英语流利说l4u1p2_L4-U1-P2-1Listening:ATriptoYosemitePark1 英语流利说 懂你英语

热门文章

  1. 一种清除windows通知区域“僵尸”图标的方案——Windows7系统解决方案
  2. Python3中raise用法
  3. 图片像素、英寸、厘米之间的单位换算
  4. 大学计算机科学系口号,各大学学院口号
  5. resin php,resin竟然开始支持PHP
  6. java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
  7. python元组转字典_python中怎么将元组、字典转化为列表
  8. ios 项目的.gitignore
  9. iOS中你可能没有完全弄清楚的(二)自己实现一个KVO源码及解析
  10. 小程序云开发获取手机号完整代码 云函数中网络请求第三方接口