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

论如何滚粗??——模拟赛报告大合集

时间:2016-10-07 11:25:43      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

2016.10.06

//貌似是bzoj十连测???orz。。。I know nothing about it.

(T1)master(100/100):我直接二分了QAQ......题解是暴力+贪心,,好有道理的样子......还有人用dp,不明觉厉

(T2)tour(70/100):70%:O(n^3),我的做法是先预处理出每个节点的度,然后枚举前三个点,可用O(1)时间算出第四个点可行的方案数,不会重复算。对于这种sb的方法竟然给了70%的数据,窝真是内牛满面T_T

                              100%:O(n^3/32),看了看题解,100%的做法是在70%的基础上加以优化。枚举a->b->c->d中的b,c两点,ans=(du[b]-1)*(du[c]-1)-sum,sum表示经过b,c的三元环个数。也就是说若可以用O(1)时间计算出每个b,c的sum,那么就能愉快地A了。我们只要知道同时连向b,c的点的个数就行了,题解说用压位即可(然而salt fish并不谁压位,马上去补orzz)

(T3)walk(20/100):20%:(这题实力大滚粗,我也不知道怎么就得了20分)

                               40%:预处理+bfs水过

                               80%:(zyf的nb解法)每个节点只能bfs一遍。于是维护一条链表,每次顺序访问链表中的点,看是否能与当前点联通。每bfs一个点就从链表中删去。。。(考试时候因为忘了对拍程序怎么写于是不敢写链表orrrz)

                               70%:val<=2^15。(这是题解给出的做法,非常有启发性!)先把m条边建好。考虑新增的2^15个点(全部入图),每个点向它的子集连一条权值为0的边。每个点i向自己的val[i]连一条权值为1的边,每个val[i]向i连一条权值为0的边,然后跑一遍bfs。时间复杂度为O(2^15+n+m)。

                              100%:val<=2^30。我们知道"&"具有传递性,又因为val到val的边权值为0,跑的边数并不影响最终的结果。于是我们建边时只需建比val缺一位1的val,这样边数就大大减少了WAW

                             

论如何滚粗??——模拟赛报告大合集

标签:

原文地址:http://www.cnblogs.com/didyxdi/p/5935480.html

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