首页 > 其他 > 详细

neerc训练记录

时间:2017-12-18 20:35:55      阅读:248      评论:0      收藏:0      [点我收藏+]

[upd 12.18] 老年选手也该看看欧洲的acm了,不然以后就再也没有机会了

neerc 17

[problem A] 挺牛逼的结论,与y轴平行的直线最多只会经过$O(\log C)$个点,拿一个线段树维护一下每个x对应哪些圆即可。复杂度$O(n\log n\log C)-O(n)$

[problem B] 对每种图讨论即可

[problem C] 建出一棵dfs树,假设当前与$1$构成强联通的集合为$S$,bfs每次找到一个不在$S$中的点指向$S$中点的边,把不在$S$中的点到根路径加入$S$即可。复杂度$O(n+m)-O(n+m)$

[problem D]

[problem E] 随便匹配匹配

[problem F]

[problem G]

[problem H]

[problem I] 

[problem J] 考虑枚举第k大的边的数值x,把小于x的边全部修改为0,跑一边恰好有k个非0边的最短路,这样是O(nm^2)的。考虑转为一般最短路,对于一条路径,如果其非0边的数量大于k,那么显然有更优的方案被别的数值统计,不会影响答案;如果小于,补足k个数值x后也不影响答案。那么把非0的权值减去x,那么最后最短路加上$xk$就是权值$x$的答案,数据会卡spfa。复杂度$O(m^2\log n)-O(m+n)$

[problem K] 

[problem L] 按照链的长度从大到小排序,这样就不会出现某个线被后面严格包含。扫一遍整条路径,如果有被搞过的点那么就是NO,否则把一端为路径上点的路径全部取出来,这样问题就变到了数列上:询问是否存在x1<y2,x2<y1,按照左端点排序,那个单调栈维护类似括号序列的东西,去掉右端点小于的区间,检查最后一个区间即可。复杂度$O(n\log n)-O(n\log n)$

 

neerc训练记录

原文:http://www.cnblogs.com/rqgao2014/p/8034390.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!