当前位置: 代码迷 >> 综合 >> 【队内训练】20162017-acmicpc-neerc-central-subregional-contest题解
  详细解决方案

【队内训练】20162017-acmicpc-neerc-central-subregional-contest题解

热度:67   发布时间:2023-12-29 02:47:58.0

20162017-acmicpc-neerc-central-subregional-contest


A Fried Fish (签到) 84 / 304
B Hanoi tower (推公式) 12 / 48(赛后过掉)
C Desktop (构造) 16 / 71 (赛后过掉)
D Weather Station (签到) 66 / 104
E Cupcakes (推公式) 24 / 99
F Vitamins (并查集暴力) 12 / 47(赛后过掉)
G Sphenic numbers(签到) 82 / 270
H Non-random numbers(脑洞题) 69 / 100
I Land Division 4 / 19
J Architect of Your Own Fortune(二分图) 31 / 67
K Polymorphic code 0/0


题解
ADGH:sb题
B:需要理解题意是要在完整的汉诺塔移动过程中寻找3柱数目相等的第一个状态,然后理解一下汉诺塔移动的规则,分奇偶看一下发现在偶数的时候第一个相等的状态是先移动(2/3)*n-1片到一个柱子B上,然后移动第2/3*n片到C柱,接着把B柱上面的1/3*n-1片移动过去就可以了,奇数的时候第一个相等的状态是先移动(2/3)*n-1片到B柱子上,然后移动第2/3*n片到C柱,然后将B柱最上方的(1/3)n片移动到C柱上(这里需要都多移动一个棋子,因为所求是在移动整个汉诺塔的过程中出现各柱相同的情况。举例子总共有9片,当移动完前5片在b柱上之后,将第六片移动到c柱,此时移动b柱上的片,正常情况下不会出现1,2片出现在c柱的情况,而是1,2片在a柱上,3在c柱上,所以必须移动b柱上的1,2,3个片才会出现2,3片在c柱上,1片在b柱上,此时各个柱子都是有3个)
https://paste.ubuntu.com/p/f2fdqZNQRP/
C:分奇偶情况讨论,将奇数情况转化为偶数情况,这类题都要想出一个肯定正确的状态,然后把不确定的状态转换为这个肯定正确的状态
https://paste.ubuntu.com/p/SXqVdhTZKT/
E:一个类似博弈的推公式,分别计算每一段必胜态存在区间的最小值和最大值,然后判断给定的蛋糕数是不是在段必胜态之间即可
https://paste.ubuntu.com/p/ctqxgFbB5M/
F:并查集加暴力枚举;因为只有1000个点可以用n^2的算法过题。因为会有=号的存在,所以会有一种情况1>2,3>4,2=3.这种情况下,必须要将2,3合并在一起才能知道所有点的关系。而将所有同层次的点连接在一起的一个方法就是并查集,所以首先扫描所有的边将=号相连的两个点放入并查集中,然后再扫描一遍所有边,将此边连接在两个端点的祖先节点上,这样就能将分散的边集中在一起。然后扫描一遍所有点,将有父节点,且有根节点的点的祖先节点的等级标记为1,然后将儿子节点的祖先节点等级标记为2,同理父亲为0.最后再扫描一边所有点,看本店的祖先节点的等级是什么,然后由等级输出wrs,0对应w。
https://paste.ubuntu.com/p/mpqW59jMkR/
J:一个裸的二分图,首先将所有车票记录下来,然后A车票的前三位记录为num1[i][0],后三位为num1[i][1],T车票同样记录下来,然后n^2扫点,如果a车票的前三位等于t车票的后三位,t车票的前三位等于a车票的后三位,这样就将i向j连边,这样图建好后,跑一边匈牙利算法,就能得到最大匹配,然后根据linker[v](t车票跟哪个a车票相连),输出相应的两个车票序号。
https://paste.ubuntu.com/p/ZShYwk7zSC/

  相关解决方案