2016-E16-team2

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

||User||Problem||Result||Memory||Time||Language||Length||Submit Time||
||TaZoF||B||AC||22592||1513||G++||1648||2016-10-29 14:20:17||
||TaZoF||B||WA|| || ||G++||1633||2016-10-29 14:11:24||
||TaZoF||F||AC||9144||1419||G++||1291||2016-10-29 13:16:56||
||TaZoF||H||AC||3160||1466||G++||1719||2016-10-29 13:02:58||
||TaZoF||H||WA|| || ||G++||1718||2016-10-29 12:58:32||
||TaZoF||D||AC||1808||15||G++||3936||2016-10-29 12:50:00||
||TaZoF||D||WA|| || ||G++||3919||2016-10-29 12:18:21||
||TaZoF||D||TLE|| || ||G++||3856||2016-10-29 12:12:08||
||TaZoF||D||WA|| || ||G++||2132||2016-10-29 11:13:23||
||TaZoF||J||AC||1596||265||G++||846||2016-10-29 11:01:55||
||TaZoF||D||WA|| || ||G++||2131||2016-10-29 10:25:12||
||TaZoF||C||AC||1572||0||G++||336||2016-10-29 09:46:46||
||TaZoF||E||AC||1580||156||G++||754||2016-10-29 09:41:18||
||TaZoF||A||AC||1564||0||G++||237||2016-10-29 09:35:29||

== 流水账 ==
=== TsReaper ===
开场我们很快通过了简单题A,E和C,'''A1y5''','''E1y11''','''C1y16'''。之后我看到D题,想用限制bfs步数的方式去做,但怎么也无法答对。我做D的时候hzf学长一下就推出了J的公式,'''J1y91'''。最后我的D实在调不出来,starve学长就用另外的方法写了D,'''D5y200'''。

starve学长写D时,我也想到了H是双头队列的做法,输出的时候格式弄错了一下,'''H2y212'''。hzf学长F题也想到了队列的做法,'''F1y226'''。最后我们给B题想了一个听起来不太科学的并查集做法,不过starve学长写一写'''B2y290''',还算不错吧。

== 总结 ==

== 题解 ==
A,C,E都很简单,略过...

=== B - Prediction ===
用m个并查集维护原图的连通性。对于magic tree上的一个点,就用一个并查集维护把从根走到它的所有边连起来后,原图的连通性如何。处理询问的时候把被询问的点的并查集合并起来就好了。

=== D - Coconuts ===
因为障碍物最多200个,所以有用的x坐标和y坐标也就几百个。把坐标离散化一下再bfs就好了。

=== F - Auxiliary Set ===
实际上求的是给出的点中,有几个点会变成重要点。把询问点按深度排序,并且要维护每个询问点“重要儿子”的个数。一开始每个点的重要儿子个数就等于它儿子的个数。如果一个询问点的重要儿子>=2个,那么它就变成了重要点;否则它父亲的重要儿子个数-1。用队列维护就好了。

=== H - Basic Data Structure ===
由NAND运算的性质可知,这题求的实际上就是一个双头队列从左边看/从右边看,末尾连续1的个数的奇偶性。这个用双头队列维护就好。

=== J - Mission Possible ===

== 补题 ==
UserProblemResultMemoryTimeLanguageLengthSubmit Time
TaZoFBAC225921513G++16482016-10-29 14:20:17
TaZoFBWA G++16332016-10-29 14:11:24
TaZoFFAC91441419G++12912016-10-29 13:16:56
TaZoFHAC31601466G++17192016-10-29 13:02:58
TaZoFHWA G++17182016-10-29 12:58:32
TaZoFDAC180815G++39362016-10-29 12:50:00
TaZoFDWA G++39192016-10-29 12:18:21
TaZoFDTLE G++38562016-10-29 12:12:08
TaZoFDWA G++21322016-10-29 11:13:23
TaZoFJAC1596265G++8462016-10-29 11:01:55
TaZoFDWA G++21312016-10-29 10:25:12
TaZoFCAC15720G++3362016-10-29 09:46:46
TaZoFEAC1580156G++7542016-10-29 09:41:18
TaZoFAAC15640G++2372016-10-29 09:35:29

流水账

TsReaper

开场我们很快通过了简单题A,E和C,A1y5E1y11C1y16。之后我看到D题,想用限制bfs步数的方式去做,但怎么也无法答对。我做D的时候hzf学长一下就推出了J的公式,J1y91。最后我的D实在调不出来,starve学长就用另外的方法写了D,D5y200

starve学长写D时,我也想到了H是双头队列的做法,输出的时候格式弄错了一下,H2y212。hzf学长F题也想到了队列的做法,F1y226。最后我们给B题想了一个听起来不太科学的并查集做法,不过starve学长写一写B2y290,还算不错吧。

总结

题解

A,C,E都很简单,略过...

B - Prediction

用m个并查集维护原图的连通性。对于magic tree上的一个点,就用一个并查集维护把从根走到它的所有边连起来后,原图的连通性如何。处理询问的时候把被询问的点的并查集合并起来就好了。

D - Coconuts

因为障碍物最多200个,所以有用的x坐标和y坐标也就几百个。把坐标离散化一下再bfs就好了。

F - Auxiliary Set

实际上求的是给出的点中,有几个点会变成重要点。把询问点按深度排序,并且要维护每个询问点“重要儿子”的个数。一开始每个点的重要儿子个数就等于它儿子的个数。如果一个询问点的重要儿子>=2个,那么它就变成了重要点;否则它父亲的重要儿子个数-1。用队列维护就好了。

H - Basic Data Structure

由NAND运算的性质可知,这题求的实际上就是一个双头队列从左边看/从右边看,末尾连续1的个数的奇偶性。这个用双头队列维护就好。

J - Mission Possible

补题

附加文件