3.31
(1) 如何确定对那些题目进行深入思考
(2) 即使全打暴力不见得打得完
(3) 数论?
(4) SC DP?
GDOI 2011 Day1分析[未实现]
P1, 直接模拟, AC.
P2, 生成子集+高精变形, 8
P3, 暴力模拟, ?
P4, 快排, 4
P5, 暴搜, 12
大概是40 + 8 + ? + 4+ 12 = 64.
4.7
US Open Silver Division, 2h, 未实现
P1_unlock[DFS-ID + 二分]
[Brief]
在10*10的方格中, 有三个连通块, 对于每个连通块可以向四个方向移动, 求使得三个连通块互不相邻所需的最小移动次数.
[Solution]
---------|
-++++++++|
--------+|
*******|+|
*******|+|
*******|+|
*******|+|
*******|+|
*******|+|
*******|||
分析:
(1) 大概最小移动次数的最大值不会超过20, 如上图. 移动次数的上限大概略大于 相连的边数/2.
(2) 可以发现, 每次的决策必然小于3*4 = 12种, 可以利用一次Floodfill得到不同连通块之间的相接关系, 显然只有相对方向有一方相连, 或者均不相连的部分可以移动.
可能的优化:
(1) 两个相连的连通块, 向相反方向移动是互相等价的.
(2) 若在某个方向能够移动的话, 一次移动到位.
*复杂度很难分析, 应该能通过大部分测试数据.
P2_bookshelf[DP]
[Brief]
给定N个长为W_i, 宽为H_i的书, 书的放置必须按照给定顺序, 每层的长度限制为L, 试求书柜高度最小值.
[Solution]
很明显是O(N^2)的动态规划, 但是我只想到了O(N^2*L)的, 似乎是有限制的背包问题.
[状态] f[i][j][k]表示放了i本书, 在第j层, 该层剩余宽度为k的最小值
[方程] 略, 讨论第i-1本书放在哪层即可.
*正解可能通过单调队列或是别的手段降维, 也可能是重新设计状态.
P3_running[数据结构]
[Brief]
N头牛, 跑L圈, 圈长C. 给出每头牛的速度v_i, 求跑的最快的牛到达终点是, 牛群中超车了多少次.
[Solution]
正解复杂度大概是O(NlogN).
可以知道T = C*L / max{v_i}, 然后对于每头牛i跑了C_i = T*v_i/C圈, Σ[C_i-C_j]即为答案. 复杂度O(N^2).
大概可以总结几点:
(1) 对题目的分析能力显著下降
(2) 实现能力是个问题
(3) 如何恰当的对拍, 减少时间成本, 又不损失正确率
4.9
GDOI 2011 Day2 分析[未实现]
P1, 读题无能, 完全不能找到"瞬移水只能作用于到过的点的描述". 做法是prim+heap或kruskal
P2, 时间常数比较大, 很难写, 不一定能AC
(1) 读入每部小说后, 对小说中每个单词进行排序(字典序), 注意不区分大小写, O(n*NlogN)
(2) 将排序后的单词按照顺序插入动态数组(指针/数组模拟链表/vector实现), O(N)
(3) 按照时髦值对小说进行间接排序, O(NlogN)
(4) 对于每个询问, 在每部小说中进行二分查找, O(QlogN)
总复杂度是O(n*NlogN), n = 1000, N <= 20000, 预计能通过大部分测试数据
P3, 数论题, AC做法需要用到中国剩余定理, 下面是50%的做法
(1) 构造素因子表判断A的合法性
(2) 对每个1..N除去因子后, 求乘积末位
(3) 记录构成K的因子的次数, 计算多余部分乘积末尾
(4) 输出结果
复杂度是O(QN)
P4, 计算几何, 这种做法大概能通过大部分数据
对于每个方案, 计算每个点和其中相连两点构成三角形面积之和(利用行列式), 并检测点是否在五边形上, 复杂度是O(5MN)
P5, treeDP, 看不出来...比较容易想到O(N!)的暴搜
(1) 利用儿子兄弟表示法建树
(2) 生成N!种顺序, 判断其合法性(利用树的层次关系?)
(3) 维护最小值
可能的分数大概是40? + 40- + 20 + 40- + 12?
考虑实际情况, 可能是0 + 32 + 20 + 24 + 0 = 76.
于是综合考虑两天, 大概是64 + 76 = 140, 差不多二等了. 可能的预计是, 题目方向变化, 难度提升.
4.15 ~ 4.28
用CTex写的, 虽然只是徒劳的努力, 不过也有些初窥门径的味道. 结局意料之外情理之中, 倒也罢了. 段神说他是反面教材, 我是反面教材2.0
省赛备战实录.pdf
4.28
一个idea, 算法模板, 并准备若干测试数据, 以测试模板.