【标程】黑龙江大学程序设计竞赛(重现赛)标程
首先解释下题目为何这么简单,因为当时出题时被要求针对非ACM选手,越简单越好...... (然后难度被削的不像个程序竞赛了)
标程可以在提交里,搜索我的名字 I_LOVE_RQZY_OOO 看到.
A题
本来每次询问N范围是2^31-1,但作为签到题,就改了下范围。
(1) 可以暴力生成这个串,然后直接输出即可。
(2) 可以二分一下是第几个串,或者开根 ,然后对26取个膜即可
B题
对于这个公式化简下,推个前后缀和即可
C题
N和N+1互质,反证法易证
D题
(1)由于ST,ED很小,直接差分即可。
(2)甚至线段树维护区间最大值,区间加。
(3)如果ST,ED很大,可以先排序,然后multiset里维护每个任务结束时间,每次查询multiset里第一个小于当前st的那个数即可。
E题
看到字符串总长度5000直接枚举相邻,暴力即可O(N^2)。
用两个hash维护下,正向哈希,反向哈希(大小写互换的), 然后二分check下答案。
其实本题也可以用manacher算法,改变下manacher算法匹配的规则即可,线性。
F题
比较赤裸的线段树裸题。护卫区间1的个数和区间GCD.
更新时,如果某一段区间1的个数等于区间长度,则不向下更新,否则暴力更新。
可以证明每个数开多少次变为1,是log2(log2(N))的级别。
所以复杂度就是O(N*logAi*logN*loglogN)
G题
可以看成一堆石子,每个人轮求取,先取完的输,bash博弈,也可以倒推观察下sg函数。
H题
每个格子(i,j)的最后一天被背就是i行的最大值或者第j列最大值。
I题
dp[n] = min(dp[n], dp[d] + (n-d)^2) n是d的倍数。
J题
假设i < j,展开下式子即可。维护四个最值
K题
贪心凑9