cf774 div2
补题:
A:
题意:给定n和s,共有n+1个数,s为数的总和。每个数要么在[0,n)范围内的整数,要么为n^2。问有几个数为n^2。
思路:cnt = s/(n*n)
吐槽:记得longlong。。。
B:
题意:有n个数,分成两个分组(每个数可以任意选一个分组,也可以不分),使一个分组内的数比另外一个分组内的数量更少,总和却更大,问是否能实现。
思路:排序后,分个数奇偶讨论,看前面的数能否比后面的数大。
C:
题意:问一个数范围为10^12,能否分解成若干个二次幂和阶乘的和,求分解的个数最小的数
思路:整数都可以用二进制表示,最坏的情况下答案即为二进制1的个数;然后暴力dfs去选择阶乘看能否省个数
吐槽:现场时想了个暴力把全部二次幂和阶乘枚举出来存到一个数组,然后变成硬币找零问题,但是金额数太大无法枚举;
D:
题意:有n个顶点和n-1条给定的边,每个顶点可以任意分配权重,若该顶点的权重等于与其相连的顶点权重之和 则称其为good。问其good的顶点数量最多的方法;若顶点数量最多的方法有多种,则使其权重之和最小。
思路:树形DP