码迷,mamicode.com
首页 > 其他好文 > 详细

neerc训练记录

时间:2017-12-19 00:49:18      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:答案   problem   直线   个数   训练   复杂   -o   log   spfa   

[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训练记录

标签:答案   problem   直线   个数   训练   复杂   -o   log   spfa   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!