省选前的做题记录
由于篇幅限制,只会简略地概括做法...
3.31
百度地图的实时路况
链接
不经过某点,就在floyd的时候跳过某点,用分治做这个过程\(O(n^3logn)\)
uoj310
很早就会了的题,正好在课件里,就写一下
loj6488
这也是一道很早就会了的但没写代码的题
有个坑点是做减法卷积,要把某一个数组下标做不进位减法,我下意识以为是二进制,就没有取反下标...
4.1
noi.ac#1758
dp套dp,所以为啥压\(2^{64+6}\)位,状态只有这么少啊/jk
zroi#1838
我也不知道为什么场上会这么sb:
令\(g(n)\)为\(k\)个数\(\text{lcm}\)为\(n\)的方案数,\(g=\mu *\sigma_0^k\)
然后答案为:
这显然可以洲阁筛,但我不会,于是就拿了暴力分跑路了
正解特别简单:
直接\(\text{min25}\)筛
tree
题意:
给定一棵带点权的树,两种操作:将某点点权增加一个正整数,查询所有点权\(\ge v\)的点的连通块个数
连通块个数等于点减边数
故我们维护\((u,v),min(a_u,a_v)\ge v\)的边数即可
将\(1\)定为根,每个点维护比自己大的儿子节点,暴力修改父亲
总复杂度\(O((m+n)(logn+logV))\)
4.2
cf1091H
注意到sg函数较小,直接bitset
gym102367K
结论题,证明类似nim
4.4
uoj607
觉得太占地方,新开了一篇
题解
4.5
cf1503c
cf1503d
最后是这样的形式
\(1,2,\ldots,n\)必须出现在\(c\)的前缀与\(d\)的后缀,故没有一张卡同时出现\([1,n]\)。
令\(f_i\)为数字\(i\)对面的数字。
对于一组合法的形式,可以看到\(c\)前缀(\([1,n]\)),随着\(c\)增大,\(d\)减小;\(d\)后缀,\(d\)减小,\(c\)增大。
这一意味着,有解当且仅当可以将\(f_1,f_2,\ldots,f_n\)分成两个递减的子序列。
分成两个递减子序列,是一个经典的贪心问题。
考虑\(\min\limits_{j\le i}f_j>\max\limits_{j>i}f_j\)的位置\(i\),将\(i\)到\(i+1\)放置隔板,那么整个序列被划分为了多个段。
这些段彼此独立,每个段选出任意一种方案,然后组合起来,这样还是两个递减子序列。
容易发现,每个段有唯一的分解方法,那么这种方法必定为贪心。
总复杂度\(O(n)\)。
4.6
usaco april open
打了场usaco,ak了,顺便还踩了b的标算??
icpc昆明
学了个新科技,复习了很久没做过的东西qwq
uoj608
一点结论都没猜出来...
4.7
uoj424
short LIS
arc101e
arc106e
\(O(nlogn)\)做法
4.8
【模板】AC自动机
arc101f
愤怒的小N
cf1437g
暴跳fail,\(O(\sum |S|\sqrt{\sum |S|})\)
cf587f
4.9
loj2197
\(\max (x\cdot x_0+y\cdot y_0)\)
\(b=x\cdot x_0+y\cdot y_0\)
\((-x)\cdot x_0+b=y\cdot y_0\)
根据\(y_0\)的正负性,分别在上凸壳和下凸壳二分