经验教训
1.string中的substr的参数是(左端点,长度)
2.DFS搜索顺序(取出之后 / 放入之前)
3.STL容器不能边用迭代器遍历边改动容器
4.不开 见祖宗
5.多测不清空,考试两行泪
6.strcmp很玄学,一定要用 和
7.大样例不一定靠谱
8.DP最忌惮似是而非
除非自己写出来,不然永远不要相信自己能写出来
第一题
题目
题解
字典序:按顺序依次比较两个串的第i 个字符,如果不同则为字符的大小比
较结果,如果相同则比较下一位。
本题有两种写法,使用 char 数组可以使用strcmp 来比较字典序,然后手写
一个substr 函数提取子串;
使用string 可以使用substr 来提取子串,然后直接使用小于号来比较字典
序。
第二题
题目
题解
只需要检查一个点i 是否能同时满足有一条1 到i 的边以及i 到n 的边。
所以,读入边(u, v) 后,如果u = 1,那么将v 打上一个标记;如果v = n,
那么将u 打上另一个标记,最后看是否有一个点被打了两次标记即可。
另外:不要写最短路!
第三题
题目
题解
类似于上周周赛的思想,如果可以对所有数字任意执行减法,根据辗转相减
法原理,那么最后能得到的最小的数字便是所有数字的gcd。
所以求出所有数字的gcd,答案便是最大的数字除以这个gcd。
第四题
题目
题解
设f(i, j) 表示前i 场,现在连赢了j 局的方案数,j = 0 表示现在输了一局。
那么自然有转移方程: {
} ,
其中
表示连赢 j 场获得的奖励分数。
这里的 可以直接开桶来记录连赢 j 场的得分。O(nm)。