A
判有无以顶点1为起点的欧拉路径, 可以是通路或者回路, 根据节点度的奇偶规则。
若为通路, 则1的度为奇数, 并且此时有且仅有另一个度为奇数的结点; 若为回路, 则所有点的度数都为偶数。
B
两次DP
第一次DP, v[cost] 求得买某种礼物花费cost所能获得的最大价值, 转移方程: v[ci*k]=max(v[ci*k],ai+k*(k-bi)^2)
第二次DP, 对于每个cost和v[cost]可以看作是一个费用cost, 价值v[cost]物品, 共m件物品, 去背容量为m的完全背包(此处感谢大狼修正)。转移方程: f[i]=max(f[i],f[i-j]+v[j])。
C
背包: 对于每种礼物, 可以根据送几次转变为多个该种礼物的组合, 即该种礼物取k时, 看成费用ci*k,价值ai-k*bi的物品。
用这些新的组合物品去背容量为m的分组背包。因为每种礼物的各个组合只能选择一个组合, 所以在生成该种礼物的组合时, 就将其用来更新dp值。
D
将给出的第一条边的向量以终点为转轴旋转对应正多边形角度, 得到下一条边的终点, 依次求出所有顶点。
E
(1) 人工枚举打表
(2) 深搜出每种符合的情况
(3) 同F题
F
DP方程 : d[i][j]=(sum(d[i-1][j-t]))%1000000007 (0<=t<=j) , d[i][j]表示使用了i个数字, 和为j的方案数
G
将1000000内的所有为"平方和性质"的数枚举出来, 每输入一个R, 可以枚举在R范围内的"平方和性质"数等价于(x^2+y^2)征题,判断此时R-x^2-y^2是否也为"平方和性质"。平方和性质即该数为两个平方数的和。
H
最大值: 排序后,利用贪心的思想依次两两组合
最小值:最小的n/2个人分开到n/2组
I
题目所给的实际上为多个链(或环), 搜索每条链(或环)的长度len, 则该链(或环)上最少可以组的组数为(len+1)/2, 求和即为答案
J
(1) 快排串后相邻的比较计数
(2) 使用stl中的map给每个串一个int值, map数组直接计数
(3) hash每个串后进行hash查找计数
(3) 字典树, 为每个串奇数, 每个字符下开27个子结点存放26个字母和空格