DIV1
250P RouteIntersection
一个人在N(1-10^9)维空间里行走, 从(0...0)原点开始,每次选择其中的一维增加1或者减少1,其他维的值不变,现在给出每次行走选择的维数,给出是在该维增加还是减少,问有没有重复走到之前经过的点。
这道题很容易从二维和三维推导开来,如果重复走到某一点,那么第二次到该点与第一次到该点之间的行动应该是抵消的,也就是说如果中间在K维增加了1,那么必定又有一次移动使K维减少1,所以中间那段的行动全是可以抵消的。我很暴力地用O(n^2)来枚举重复的区间,O(n)枚举区间中的元素,O(n)统计区间中该元素是否抵消,总共O(n^4)的复杂度,对于n<=50还是能够承受,千万不要怀疑TC的服务器。CHA人的时候看到许多人用到map,set之类的,赛后写了一下map映射离散化+模拟。
500P TreesCount
给定无向图N个点的距离邻接矩阵,求构成最短路径树的方法数。
比赛时候思维混乱,YY了各种解法,都证明不了。。后来参考hhanger大牛的方法,求出最短路以后,按从小到大的顺序依次求前面所有点到当前点为最短路的方法数,然后一直连乘下来。大牛从第一个点的方法数,到第二个点的方法数,然后推导到前k个点的方法数。思路非常清晰,这种推导也不难,问题在有压力紧张、遇到不会的题的时候,大牛依旧能冷静地见招拆招。
1000P GameWithGraphAndTree
留空
DIV2
250P PalindromesCount
给定两个字符串A, B, 可以将整串B插入到A字符串中的任意的间隔位置(包括A首字母的前面,和A尾字母的后面),问操作后形成的所有的字符串中有多少个是回文字符串。
模拟水题,直接枚举A中插入B字符串的位置,然后写个判断,统计一下即可。
500P TreesCount
同DIV1 250P
1000P SquaresCovering
留空