hdu 2018 Multi-University Training Contest 7
Age of Moyu: 跑一遍最短路即可
Sequence: 分段进行快速幂。很容易发现 p/n 在一段区间内是同一个值。 比如 p/3 (2) p/2 (1) p/1,所以采用从前往后递推的方式来做。当时,没有考虑p和n的关系,所以后面直接懵掉,应该是 只需要考虑到 min(n,p) ,然后保留下端点值,然后递推就好了。
注意:端点处的情况
Swordsman: 深受银行家算法的启发,结果没有做出来。 银行家算法是不可能的,复杂度太高了。但是,说实话一个任务,我们首先是整体来考虑,看这个任务可不可以做,但是ACM要的就是效率,他把一个任务拆开成,按照每个元素来排序。这样的话,就是子任务完成之后,大任务就会完成。之前,都是大任务可以做,小任务自然就会完成。哎,思维的转换还是差点。
注意:考虑子任务全部完成,大任务也可以完成,不要只考虑大任务可以做,才能完成。 或者说大任务可以完成,本身就是小任务全部可做。
GuGuFishtion:数论的题。考虑公式的转换,当时没有任何思路。题解告诉我们转化成gcd,其实想想欧拉函数的定义式,其实就是这样。然后一波莫比乌斯反演,或者说是容斥。
2018 Multi-University Training Contest 8
Character Encoding: 容斥原理。还是考虑分类,我们知道 没有限制的数量是C(k+m-1,m-1),然后这里是对每个框里面做了限制,不能超过n-1个,当时我们考虑了,拿出来n个,然后就是随便选,这样肯定就是有超过n,也就是不合法的数量。然后总数,减掉这个数值就是答案了。
当时,脑子里想的是一种方案不合法,也就是这种方案里面有一个桶肯定有超过n的球,所以把n拿出来,用剩下的球来做。这样的话,肯定都是不合法的。但是,减多了,因为有重复,考虑 A1,A2,A3,....Am,分别为第一个桶,第二个桶,..第m个桶,超过n的数量,别的桶的数量任意,我们最后的结果就是总数,减掉 |A1并A2...并Am| 的数量, 所以问题也就是 我们刚才算的 A1+A2+...Am ?= |A1并A2...并Am| ,很明显,不一定等于,因为可能Ap和Aq会有重叠,所以下面就是用容斥原理来做了,
Magic Square:模拟水题
Taotao Picks Apples:听说队友二分+单调栈。 回来再补。