UESTC 2017 Summer Training #11~15补题
UESTC 2017 Summer Training #11 Div.1
E \(AC\)自动机+\(dp\)
- 比较常规的\(AC\)自动机计数。加了几个限制条件。首先必须包含一个大写字母一个小写字母一个数字,这个条件可以用状压表现在状态中。然后有些数字可以当作字母,在转移中直接当作字母处理即可。
- 在转移中:大写字母当作小写字母转移,小写字母正常转移,\(0\)、\(1\)、\(3\)、\(5\)、\(7\)转移成小写字母,至于\(2\)、\(4\)、\(6\)、\(8\)、\(9\)因为在\(AC\)自动机里没法匹配(只有小写字母),所以直接都转移到\(0\)节点上。
H 一般\(dfs\)+记忆化搜索
- 题目给了提示,既是求\(x_1+x_2+...+x_D=H-1\)的解\(\varphi_i\),然后求这些解对应的\(pascal\)值。
- 求值中用了记忆化,而且题目又提醒你一个解\(\varphi_i\)的不同排列的\(pascal\)值是相同的,故搜索的时候排序后再搜索。
UESTC 2017 Summer Training #12 Div.1
B(暂时不用补)0
D(暂时不用补)1
E 数论题,首先\((0,1,k)\)是满足题中等式的,其次,可以发现如果\((a,b,c)\)是一组满足条件的解的话,那么 \((k*(a+b)-a,b,c)\)也满足条件。那么可以从\((0,1,k)\) bfs 求得其他解,而出现过的数则存入set中。
[Megumin的代码] (代码什么的,当然是不存在的呀
H 图论
G(暂时不用补)0
I(暂时不用补)0
J
L(暂时不用补)1
UESTC 2017 Summer Training #13 Div.1
E 贪心,首先,我们应优先选择结束时间早的节目,那么先对节目按结束时间升序排序,其次,当我们要放入一个节目时,应贪心选取比这个节目开始时间早的,且结束时间最迟的节目进行替代。
[Megumin的代码] (代码什么的,当然是不存在的呀)
H DP(暂时不用补)1
I 数学(暂时不用补)0
J Trie | DP
UESTC 2017 Summer Training #14 Div.1
I题 随机化算法 本题肯定有解,解的数量很多,传统的寻找方法复杂度会很高,因而考虑随机化
UESTC 2017 Summer Training #15 Div.1
A 二分+dfs
B (暂时不用补)0
C 字符串\(KMP\)
- 一道利用\(KMP\)原理的题。其中为了快速得到出现的个数可以开个数组递推,否则T。
- 一个坑点是会重复加入一样的字符串到集合里,用\(vis[]\)数组判断即可。
E (暂时不用补)1
J 模拟+想法
K 字符串\(hash\)
- 枚举第二个字符串的分割点,对这三个字符串计算\(hash\)值。怎样判断能组成第一个字符串呢?注意到只分成了三个字符串,那么我们可以枚举三个字符串的组合顺序!!!对每种顺序计算第一个字符串的三个\(hash\)值,再与第二个字符串的\(hash\)值比较。
- 有一步思想转换:很难对第一个字符串再做操作=>枚举第二个字符串的三个分解字符串的组合顺序。