从今年年初开始就没怎么碰oi,学了三个月文化课,然后就是省选到处跑(浪),进了省队后又去北京打(浪)了波(七)铁(天),回家后又生了一星期病,感觉自己noi凉透了。。。
ctsc因为运气的原因有人放弃D3自己才拿到au,apio什么牌都没拿到,自己这么菜的主要原因可能还是没怎么做题吧,五个月不碰oi,已经连dfs都不会了,还有两个月就noi了,再不训练又要为JS丢脸了,自己拿不到au却占了个省队名额,而阿老师邀请赛冠军的水平却没进省队,感觉自己不珍惜这个省队名额真的是说不过去
本文就记录一下本人noi前61天的日常,至少努力了,拿不到au也认了,计划每天做5道题,找一找做题的感觉
0521
上午看了场nba,刷了波妇联
中午做了一下AGC024F,感觉不难,只要类似高维前缀和一样每次删一位保证不重不漏就没了
下午学了波文化课
0522
上午做了CF238D,一开始想讨论最后的情况,但其实可以更简单,发现如果左边补全>的话就是对全串做的结果的一个片段
下午刷了银河护卫队和蜘蛛侠,还是好颓啊
0523
上午做了CF238E,如果直接从出发点考虑比较难,因为每次下车的地方不一定是必经点,而倒着考虑的话,可以通过dp来处理分叉的情况。类似差分约束系统,本题中可以将bus线路视为边,枚举每条边看能松弛哪些点,知道不能为止,由于没有负环,所以总复杂度有保证
中午看了场nba,又开始颓了,但是西决真的好看啊
晚上看了看CF240EF,学了一下朱刘算法
0524
颓了一天cs。。。
0525
上午写了下CF240EF,看了场西决
下午去学文化课了
晚上想了想CF241E
0526
上午写了CF241E,一开始想只要dp出可行长度的区间就行了,但发现这样对每个点选择的距离可能会不同。看题解发现这种距离未知的模型非常像差分约束系统,跑一下就没了。。
下午看了集跑男,想了想TCO18 Beijing的hard和Poland的hard,感觉都不难
晚上想了想CF241B和CF241D,B大概就是扫一扫然后计计数就没了,D看了题解,结论题,选的数不超过31就过了。
0527
上午看了场西决,中午做了下UOJ221,感觉自己杜教筛还是不太行啊 (ans = sum_{x = 1}^n sum_{y = 1}^m [(x, y) = 1][(y, k) = 1] = sum_{d = 1}^n mu(d) left lfloor frac{n}{d}
ight
floor sum_{b = 1}^{left lfloor frac{m}{d}
ight
floor} [(bd, k) = 1] = sum_{d = 1}^n [(d, k) = 1] mu(d) left lfloor frac{n}{d}
ight
floor sum_{b = 1}^{left lfloor frac{m}{d}
ight
floor} [(b, k) = 1]) 令 (f(n) = sum_{i = 1}^n [(i, k) = 1], g(n) = sum_{d = 1}^n [(i, k) = 1] mu(i))。推到这就直接暴力 (O(sigma_0(k)^2 sqrt{n})) 算了,看了TRCYX的做法发现比我的高明的不知道哪里去了。当 (n > k) 时,(f(n) = f(k) left lfloor frac{n}{k}
ight
floor + f(n mod k), g(n) = sum_{i = 1}^n[(i, k) = 1] mu(i) sum_{j = 1}^{left lfloor frac{n}{i}
ight
floor} [(j, k) = 1] - sum_{j = 2}^n [(j, k) = 1] g(left lfloor frac{n}{j}
ight
floor))
写的时候突然发现自己又忘了hash怎么写了。。。
杜教筛还是要多练。。。
晚上做了CF925E,根号重构之后建虚树模拟就没了,sxbk卡常题,一开始还以为自己哪边写搓了。。。辣鸡出题人,根号log只要811ms,我要4992ms。。
0528
凌晨打了一场cf,又是手速场。。F题最后做的意识模糊了,把五月份的最后一场cf打完noi前不想再打了。。。
白天太困了,就颓了颓cs
0529
上午看了场西决,本赛季最后一次看nba了
下午补了补觉
晚上打了场cf,又是手速+码农场,至少noi前不想打cf了,感觉熬了大半夜做这种质量的题真的体验极差。。。
0530
上午太困了就颓了颓综艺节目
下午补了补觉
晚上补了CF986D,结论就是指摆3和最多两个2,然后就是求 (3^{log(3, x)}),先用 (frac{len_{10}(x) * log(10)}{log(3)} - 10) 算出至少需要的次幂,再暴力乘判断。一个trick就是再求 (3^x) 快速幂的时候从高位到低位枚举,这样只有两个操作要么平方,要么 (* 3),而平方只需要两次 dft,常数只有 (frac{2}{3}) 倍,预处理的时候减少算 (cos) 和 (sin) 的次数也可以减少常数,这题是个很好的测试fft和高精度的板板题啊,以后可以来练打板子
晚上想了想CF986B和C,发现C傻逼了,不需要记录后多少位不用考虑,因为已经有vis数组了,所以直接暴力搜复杂度不会爆炸,B题有个bit解法就是交换任意两个数,逆序对数奇偶性改变
0531
上午做了SRM552 Hard,直接上min_25筛就没了,做了UOJ188复习了一下min_25筛
下午做了SRM553 Hard,建出差分约束系统之后二分最后范围的 (x),可以发现每一个负环都可以表示成关于 (x) 的函数 (kx + b),通过 (k) 和 (0) 的大小来确定 (x) 应该变大还是变小
下午做了SRM554 Hard,两倍模数都爆int了,fst了一发,做了SRM554 Medium
晚上补了CF986F,看dls的代码没有用dijkstra,感觉很妙,就是求距离的时候直接枚举一个数产生的贡献,会形成一个环,直接从环上一个起点开始绕两圈就行了
0601
上午补了CF981H,有点像CTSC2018D1T1,有 (n) 个物品,每个物品选不选都有不同的代价,这个看成 ((a + bx)) 就行了,之后就是多项式的事了
上午看了场总决,感觉还是忍不住看nba啊,下午去学校浪了浪
晚上做了SRM493 Hard
0602
上午做了SRM573 Hard,正解真的想不到。。由于直接算的话 (x) 移动步数 (+ y) 移动步数 (= m) 这个条件十分麻烦,需要同时考虑 (x) 坐标和 (y) 坐标,将坐标旋转 (45^{circ}) 即 ((x, y)) 变为 ((x + y, x - y)) 之后每次 (x) 坐标和 (y) 坐标都要移动一步,就可以分开算了。
上午做了SRM592 Hard,求 (sqrt{a + bi}) 时可以考虑在复平面上角度 ( imes 0.5),模长开根。一个关于 (0) 对称的序列 (dft) 后仍然关于 (0) 对称。
上午想了想SRM558 Hard,网络流要复习了,一些基础的建图模型有些忘了,题解里的话还是很有启发性的。
下午和晚上想了想CF917E,字符串题基本上也就是AC自动机(KMP),SAM,SA,后缀平衡树,ST搞搞,把每个都试一试就是喽。。。但发现好像还是只能离线。。。
0603
上午颓了颓跑男,下午补了补觉
晚上打了场AGC025F,看了看E和F,F推了推发现如果从低到高扫一遍算进位的贡献的话压一压只要最多三段,然后维护就行了,比较难受的就是 ((0, 0)) 比较难处理,感觉 (O(n)) 还是挺难写的就弃疗了。。。
0604
上午看了场总决,感觉还是裁判牛逼
上午补了下AGC025F,发现想清楚之后只有当前是 ((0, 0)) 和 ((1, 1)) 并且上一位进位是一坨 ((1, 1)) 的时候讨论一下整体位置 (+ 1),其余直接暴力就行了,比讨论好写多了,感觉以后做讨论的题目还是先讨论清楚之后再写,这样可能可以发现一些讨论是类似的减少代码量和出错率
下午补了AGC025E,对于最优化问题首先猜测答案的上届,然后考虑证(da)明(biao)是否可行。对于树上的一些结论一般有两种思路证明,一种是将根删掉,变成子问题,一种是将一个叶子删掉,变成子问题
下午写CF917E,sam如果是多串的话,求一个串插入之后的位置要等sam建好后再算。求 (l_1 + xd_1 = l_2 + yd_2) 的时候注意当 ((d_1, d_2)
eq 1) 时,(y mod frac{d_1}{gcd(d_1, d_2)})。
晚上补了AGC025D,题解很妙,给两个边集,保证都是二分图,求一个点集使得在两个图中都是独立集。对第一个图黑白染色,第二个图红蓝染色,之后一个点对应两个颜色,总共四种颜色,所以至少有一种颜色的点数 (geq frac{1}{4}|V|)。
晚上补了AGC025C,自己贪心好差啊。。有两种做法,一种是考虑 ([x, x + 1]) 要被经过多少次,观察可以发现最后肯定是形成了一个回路,所以直接把 (0) 看成 ([0, 0]) 插入其中也无妨。([x, x + 1]) 最多被经过 (2min() 右端点在 (x + 1) 左端的区间个数 $, $ 左端点在 (x) 右端的区间个数 ()),并且这样构造最后也能形成欧拉回路,那么直接计数就完了。还有一种做法是考虑一定是一左一右跳,枚举第一次跳到最左端还是最右端就行了。
0605
上午做了CF101806PQR,Q题需要复习一下manacher,打算学一下回文树。R题 (dp_i = max_{1 leq j leq i, F_j + j geq L_i + i} { dp_{j - 1} + (F_j + j) C_i} - i C_i),可以理解为在平面上 (j) 是一条直线 ((F_j + j) x + dp_{j - 1}),求 (x = C_i) 的最大值,由于 (C_i) 递增,所以只要保证所有直线按斜率排,计算一下每个直线消除的时间即可,这样就一个log了。还有一种对于 (C) 不单调的做法,就是建李超树。感觉通过直线的方式比点积的方式更好理解。。。注意千万别爆int,维护直线的话一定要更新删除直线的时间。
下午做了CF101806T,自己贪心要练练。这题首先要确定最后放气球的顺序,直接贪心通过考虑相邻两个的顺序,确定顺序之后依次考虑第 (i) 个气球选不选就行了。对于本题中确定相邻两个的顺序可以这样考虑,两个气球 ((l_1, d_1), (l_2, d_2)) 现在顺序是 (1) 在 (2) 前,但排序后的顺序是 (2) 在 (1) 前,并且不会更劣,则有不等式 (X + d_1 leq l_2, X + d_2 leq l_1),现求一组关于 (l_1, d_1, l_2, d_2) 的关系使得能由前者推到后者,一个比较自然的想法就是用前者加上一个不等式 (l_2 + d_2 leq l_1 + d_1)。
0606
上午写了CF101806R的李超树版本,作为一个板子。
下午去学校浪了浪,cs真好玩,感觉是我唯一能吊打杨教主的东西
晚上写了CF101806Q的回文树版本,作为一个板子。
晚上写了CF101806U,学了一下旋转卡壳,练凸包都挂了一发,好菜啊。。。sxbk卡常题,有个卡常方法就是在算 (i) 最远距离的时候倍增 (i + x) 直到不行为止,这样很多不可行的情况都会被跳过,比二分快的不知道哪里去了。
0607
上午做了CF101807VWX
下午做了APC001EF,感觉F题好妙啊。对于这种一下xor一段连续区间的题可以考虑差分,使得只有两个点的值会修改,本题中只有链两端的点附近的边只有一条被修改,就可以想到用相连的边的xor和算。
晚上做了APC001I,被卡复杂度了,标算是算出横着走经过 ([i, i + 1]) 的贡献,然后缩,这样最后bfs就行了。自己写了dijkstra卡了半天的常才过。。。
0608
上午做了AGC023E,注意 (0) 的情况就没了。。
下午做了AGC022E,感觉题解直接差分后转成 (0, 1, 2) 数列上考虑比较妙,也可以直接建个自动机直接正着消,可以证明正确性。
0609
上午做了场十连测,朱老大的题好神啊。。
T1学习了一波BM,作为一个板子。自己写的矩乘常数过大,被朱老大教做人了。矩乘的时候对于 (B) 矩阵求转置,并用 (unsigned long long) 可以快不少。
T2就想分开来二分,一直四个log,如果两维一起二分只要三个。std很妙,三分的时候可以考虑 (fib_n),如果 (r - l + 1 = fib_n),则另 (ll = l + fib_{n - 2}, rr = r - fib_{n - 2}),这样询问次数是 (2.88 log_2 n) 了。
T3是弦图相关,以后可以学学。
0610
早上做了AGC022D,感觉想到匹配就不难了
上午打了场模拟赛,刺激fst。。
T1博弈论中二分还是挺有启发性的
T2网络流题,自己已经不会网络流建图了。。经常可以通过加无穷大的边来限制不可以同时选择两个物品
T3被朱老大算法吊打。。像这种询问比较难处理的数据结构题,可以通过从一个新物品对询问的贡献来考虑
下午学(bei)了一波弦(jie)图(lun),看懂了朱老大昨天模拟赛T3的建图算法。感觉本身dp就挺巧妙的,团的size不大,所以正确性显然。
0611
上午打了场十连测,复习了一下sg值的结论
T2挺妙的dp,考场上大概想到了要考虑每条红色线段内的方案数但没仔细想就去卡常了,毕竟本机已经将常数卡到了 (frac{1}{6})。。。
T3一直以为是积分dp,后来朱老大说数值任意的积分dp段数会爆炸。。有一个结论,(x) 为 ([0, r]) 中随机实数, (x^k) 的期望为 (frac{r^k}{k + 1}),然后 (E((sum_{i = 1}^n x^i)^m) = sum_{j = 0}^m inom{m}{j} E(x_n^j) E((sum_{i = 1}^{n - 1} x_i)^{m - j}))。
下午继续学了下弦图,留个PQ树的坑,过两天填
晚上开了CF913H
0612
上午打了一场十连测,T1的证明挺秒的。不考虑 (= m) 的限制,直接变成总共是 (ml) 个数,然后通过调整来证明。
T3随机题,想不到。。好像一般有 (frac{1}{2}) 基本上都是随机?
下午尝试写了一波CF913H失败了,边界不太会处理,听杨教主说直接维护积分的分段函数就没了。
0613
上午打了一场十连测,又垫底了。。
T1最后来不及做了,一开始花了不少时间在找规律上,以后打表找规律的时间还是少一点比较好,毕竟这样挂了不少次了。。
T3经典问题不会做,(n) 个红点和 (n) 个蓝点相间排在圆上,红点只能向相邻的蓝点匹配,每个红点和蓝点都有一个权值,求最大流。可以直接枚举所有点权值最小的那个然后暴力跑,可以通过鸽巢原理证明复杂度是权值总和的。
下午补T1,两个int内质数乘爆了。。学习了一发卡常,数论题中求 (> sqrt{N}) 的数的下标的时候用 (* double) 快。
0614
上午打了一场十连测,又垫底了。。
上来开T2,推了个矩乘,特征多项式推了半天。。主要是矩阵建的不好。。对于多项式题推不出来的时候可以考虑组合意义,考虑一种可行的方案的构成。
自己不会多项式那套理论,题解直接推。。(F(x) = frac{A(x)}{M(x)}, G(x) = frac{1}{1 - F(x)} = frac{M(x)}{M(x) - A(x)})。有个结论 (G(x)) 的分母常数项非零,一定可以表示成线性递推的形式,将式子写成 ((M(x) - A(x))G(x) - M(x) = 0) 考虑 ([x^n] (M(x) - A(x))G(x)) 就行了。要复习一下多项式板子了,过两天重新写一个。。
T3学了一种sa建树,考虑按height合并的时候每次建立一个新节点连接两个子树,权值为 (lcp),然后就成数据结构题了。这种题竟然可以莫队。。可能是自己不太熟悉对于一次性处理全部左端点位于块内的询问了啊。。
晚上补了下T3,打算学一下exkmp
0615
上午打了一场十连测,又垫底了。。
T1感觉还是不会容斥啊。。又学了种新的容斥方法,对于要求两两不同的一般可以通过划分来要求强制相同,建图来考虑,参见。复习了一下栋栋的容斥blog,感觉worldwide_d的blog里讲的推容斥系数的方法更好理解。斯特林数容斥大概就是说原题限制太强,无法直接计数,考虑将其分成若干个联通块,每个块内需满足一定的限制,对于一个大小为 (n) 的块有容斥系数 (f(n)),满足对于一个最终所有方案中不合法的在所有划分中的容斥系数之和为 (0),合法的在所有划分中容斥系数之和为 (1),然后就变成了联通块图计数,在转移时乘上容斥系数即可。
T2打算回去推推式子补一补。
T3要复习一下这种计数题了,通过强制第一次到达和经过一个点来表示点的贡献。
晚上补了一下bzoj4671,容斥系数就是对于所有强制不满足题目要求的算。
0616
上午打了一场模拟赛,又垫底了。。
T1成功再次写挂凸优化,感觉每次都会挂个二三十分,被吊打。。凸优化dp的时候记录取到最优值的 $k $的范围,如果当前二分的 (W') 的最优值的 (k) 的区间包含了要求的 (K),直接输出当前的最优值(注意不需要减去当前选择 (W') 的代价) (-) 题目要求的 (K) 乘题目给定的 (C),可以拿LOJ2478连板子。
0617
上午打了一场模拟赛,又垫底了。。
T1傻逼数据结构想了半天,要赶快练练数据结构。。
T2学了一下数论三元环,推成 (sum_{x = 1}^N sum_{y = 1}^N sum_{z = 1}^N sum_{lcm(x, y) | i} F_A(i) sum_{lcm(x, z) | j} F_B(j) sum_{lcm(z, y) | k} F_C(k)) 之后对 (mu(u)
eq 0) 的值建点,两个点 (u, v) 连一条权值为 (lcm(u, v)) 的边当且仅当 (lcm(u, v) leq N)。打算学一下朱老大筛法。
T3第一步好妙啊,对于求 (T^K) 的时候不太可做,可以考虑用第二类斯特林数讲其变成下降幂的形式,然后就变成了选 (i) 个联通块的子图在多少个图中出现过。
0618
颓了一天。。
0619
写了NOI2017游戏,成功再次fst,建图的时候有个细节想错了
0620
写了NOI2017蔬菜,网络流想不到,但感觉贪心本来就挺好想的啊。注意不能用set要用multiset否则会重复
0621
上午学了一下弦图相关,clique tree的处理方法可以参见0609模拟赛T3的std
下午补了一下0611模拟赛的T3,经过第一步转化之后转成 (m! [x^m] Pi_{i = 1}^n F(t_ix)),其中 (F(x) = sum_{i = 0}^m x^i frac{1}{(i + 1)!})。由于 (Pi) 之后都是 (F(kx)) 的形式,直接做不太好处理,但可以考虑通过exp来解决,转化成 (m! [x^m] e^{sum_{i = 1}^n ln(F(t_ix))}),设 (ln(F(x)) = sum_{i = 0}^m p_i x^i),则有 (sum_{i = 1}^n ln(F(t_ix)) = sum_{i = 1}^n sum_{j = 0}^m p_j x^j t_i^j = sum_{j = 0}^m p_j(sum_{i = 1}^n t_i^j) x^j),(sum_{i = 1}^n t_i^j) 直接用ztr讲的分治fft做即可。
复习了部分多项式板子,需要复习一下一些导数。
0622
上午做了CF765F,zkw线段树的时候坐标从1开始
上午做了GCJ2018R3A,对于平面的题目常常可以考虑 (x, y) 坐标分开处理。
上午学了一下zzx的wc课件。学了一下斯坦纳树。
0623
上午对着zzx的ppt学了一下爬山和退火,看了一下2014集训队论文精细地实现程序,感觉分块莫队的大小和树分治中小的块暴力还是挺有用的。
上午做了一下NOI2016的题,下午做了NOI2016国王饮水记,好多dp的题可以写完暴力打个表看看是否有决策单调性,可以打个表看看是否长度超过一定限制(譬如 (1))的个数多不多。
翻到了一个手写rand的代码,可以背一下 link。
下午写了一下BZOJ5317,学了一波闵可夫斯基和,要注意凸包最后一条边要加入,debug的时候直接将一个矩形和一个三角形测一下就能发现问题。
晚上做了UOJ347,多叉树转二叉树的时候注意先只连和孩子的边,再跑一次dfs加入和父亲的边。由于求lca次数达到 (n log n) 级别,所以可以考虑 rmqlca,具体方法在标号的时候注意在dfs完一个子树的时候将这个节点加入。在启发式合并的时候,对于每种颜色,如果只有一个点,则保留这个点,否则保留直径的两个端点。
0624
上午写了一下BZOJ2655,复习了一下Bernoulli number。
上午做了BZOJ5093。第二类斯特林数有性质 (x^n = sum_{i = 0}^n S_2(n, i) (x)_i = sum_{i = 0}^n S_2(n, i) inom{x}{i} i!),所以直接枚举必须选的 (i) 条边,其余任意的情况就行了,这类转化往往在求 (x^n) 的时候用。快速的求 (S_2(n, m)) 可以通过容斥的角度考虑:有标号,强制 (i) 个格子不填球:(S_2(n, m) m! = sum_{i = 0}^m inom{m}{i} (m - i)^n)。
对于第一类斯特林数有 ((x)_n = sum_{i = 0}^n S_1(n, i) x^i),其中 (S_1(n, i)) 有符号。无符号第一类斯特林数 (left[{natop m}
ight] = [x^m] Pi_{i = 0}^{n - 1} (x + i))
上午写了CF917D,复习了一下matrix tree定理和拉格朗日差值。
下午写了CF908H,试了一下随机序列求最小染色,感觉zzx的课件中将最小染色转化成 (k) 个独立集覆盖后可以直接跑fwt,更简单。尝试了一下手写rand,效果不错,1e8内应该不会出现重复,C++的random_shuffle是从后往前进行的。
bitset不能开1e9级别。
晚上写了CF908G。看了题解还是不会做CF908E,傻逼选手不会计数。。。大概就是对每一位求所有and起来的结果,然后会分成块,以后找规律的时候可以尝试一下。
0625
上午做了CF908F。
上午学了位运算优化最长公共子序列。
下午做了ARC096D,对于背包问题,如果 (w) 或者 (v) 很小,则可以考虑将所有物品分成两块,一块是 ((w_i, v_i, min(total_i, C))),另一块是 ((w_i, v_i, total_i - min(total_i, C))),(C) 为所有物品的 (w) 或 (v) 的最大值。然后对第一块物品做dp,第二块物品贪心取就行了。
下午写了BZOJ4555,第二类斯特林数可以直接按照展开式展开。
晚上复习了一些约数相关的性质,(10^18) 以内的数约数个数最多的大约是 (10^5)。
0626
上午写了NFLSOJ198,bzoj上的pollard rho板子的快速乘炸了。。可以将这个题的代码作为一个板子,可以将 (998244353 * 10^9 + 7) 测试一下pollard rho的正确性。miller rabin 在 (2^64) 以内只用试 (2, 3, 5, ..., 37),(3e18) 以内只要试 (2, 3, 5, ..., 23),(2e12) 内只要试 (2, 3, 5, 7, 11),具体参见。。miller rabin在判到 (y = 1) 的时候就可以直接break了,因为再乘下去都是 (1)。
晚上打了一波TCO2C,傻逼选手不会特判,成功判错fst。oi水平不行,也不会手玩,离种田不远了。
0627
上午打了场省队集训,又垫底了。。
T1的fft的方法还是挺妙的。有个结论是 (1e9) 内质因数最多的是 (1200)。
T2感觉自己代码能力感人。。打算过几天好好练练set相关的题。
下午开火车题选讲,一些还是挺妙的,到时候可以补一补
听说odt比较有用,打算学一学
0628
上午打了场省队集训,又垫底了。。
T1的dp好妙啊,直接设一个状态的总收益,由于唯一性所以可以确定出下注的多少,并且可以与胜率一一对应。(sum_{0 leq j leq i} inom{t}{j}) 无法快速求。
T2有组合恒等式 (inom{x + k - i}{k} = sum_{j = 0}^k inom{x}{j} inom{k - i}{k - j})
T3复习了一下BM,BM打表找规律最好先估一下次数上界,譬如玲珑杯那个题。(F(i) = F(i - 1) + F(i - 2) + 1) 可以通过 (F(i) = F(i - 1) + F(i - 2) + (F(i - 1) - F(i - 2) - F(i - 3))) 来表示,那么如果后面为 (i^k) 也可以通过 (O(k)) 的递推来表示,并且所给数列必须长度要为递推长度的两倍以上。
下午atcoder神题选讲感觉自己都做过啊。。欧少堆有个直接用set的写法或者记录一下堆顶元素是否是最后一次push的status。学了一下AGC020F,打算补一下。
晚上写了个玲珑杯#22B,辣鸡网站根本注册不了。。
0629
上午打了场省队集训。。
T2中如果 (P) 为合数的情况,由于只做一次除法直接对 (nmP) 很妙。
下午补了AGC020F,神仙题。连续的情况没法做,要想办法转化成离散的情况。考虑固定最长的一条,将每条的起点的位置分成整数部分和小数部分,搜索出小数部分的前后关系然后进行dp。
0630
上午打了场省队集训,搬了两个cf题,素质好差。。。
两个半小时做不出一个现代题,太弱了。。
T2不会线性代数。。直接插特征多项式不好做,可以直接解 (f(A)x = 0),由于最后求的结果都乘 (x),就类似线性递推。正解是多次随机一个向量 (x),如果 (x) 是 (A) 的特征向量会错,但由于特征向量较少多随几次就行了。感觉这个可以吊打好多题的标算啊。。
T3直接算期望由于会有走不到最终状态的情况,所以先算概率,在成功的概率下算期望。
下午神tm心理辅导。。晚上讲课推迟到七点,体验极差。。
讲了些基础线性代数,zld:这不是普及组基本知识吗。orz,朱老大牛逼
感觉讲了一些应用自己之前想都没想过,可能现代就是好多不会用?
2.2中习题2.6(6)挺妙的,可以拆分矩阵加速矩阵乘法。这样感觉好多矩阵对角化都有用了啊。
2.2中习题2.28,如果知道零化多项式就可以快速求 (A + I) 的逆了。
对于矩阵A和特征向量 (v_1, v_2, ..., v_n),特征值 (lambda_1, lambda_2, ..., lambda_n)
求 (A^nb) 可以先将 (b) 分解成 (sum_{i = 1}^n c_i v_i),(A^nb = sum_{i = 1}^n lambda_i^n c_i v_i)
(A) 的特征多项式定义为 (F(x) = det(A - xI))
0701
上午打了场省队集训,又垫底了。。
T3发现自己mtt打的好慢,要背背板子了。。高精度写挂了两发。。证明挺秒的,由于是个 (P) 次多项式有 (P) 个根,所以 (Pi_{i = 0}^{P - 1} (x + i) = x^P - x mod P)。
T1傻逼选手不会计数。。做到一半听说下午又要提前上课就咕了去吃饭了。。有个结论,一个序列能分成两个上升子序列等价于不存在一个长度大于 (2) 的下降子序列。
T2学了一下后缀数组建后缀树,直接按照rnk顺序加入,每次插的时候在height的地方拆边就行了。
学了一下thusc的史莱姆,长链剖分分治ntt好妙啊。。
0702
上午打了场模拟赛,又垫底了。。
T2不会 (k) 次剩余。。任意模数 (k) 次剩余可以通过 (BSGS) 求出 (x = g^t mod p),(g) 为 (p) 的原根。由于只是随机特判,所以可以 gen 一个 (kt + 1) 的质数,判断 (x^{frac{kt + 1}{k}}) 是否为 (1)。
T1最后rush失败了。。打错了一个地方。。观察修改矩阵可以发现每行连续,所以直接 two-pointers 扫一下然后 fenwick tree 修改。
T3的线段树套堆打标记好妙啊,将一个数的贡献打上标记,用堆存储这样修改的时候插入删除就行了。。
0703
上午写了UOJ274,没过hack数据,原因是findr的时候return前没有splay,所以多次findr同一个点会炸。lct所有操作后都要splay一下。
0704
上午打了场模拟赛,又垫底了。。
T2自己算法被各种吊打。。拓扑排序后只要向之后第一个点连边就可以判断,因为要到所有点。还有种做法就是直接记录最长路,然后将图分层,一个点是真的必须是割点且在那层上只有一个点。
T3zld的算法好神仙啊,傻逼选手想不到。。由于只有 (O(m)) 条边会变,所以直接线段树分治。倒推的时候一开始直接维护 ([1, n]) 中对应的区间,情况很多,写的贼jb烦。。但是数据小可以暴力,数据大很难出错。。佛系做题,就算过了。。
0705
上午打了场模拟赛,又垫底了。。
T2没拍成功fst,感觉noi的时候还是要苟一苟,拍一拍。发现题读错了,感觉到noi就爆蛋了。。尝试了一下sa写st,感觉不难写。。忘了sam那套理论了,要赶快补一补。
T3不会群那套理论,可以学一学这种推法。
晚上写了一发CF506E,练了一波bm板子。。感觉现在矩乘已经被吊打了。。暴力dp的时候直接记加了多少个字符转移太复杂,直接记长度就行了。
0706
上午打了场模拟赛,又垫底了。。
T1的按deg的折半方法好妙啊。。
T3度数最小点最大 (sqrt{m}) 直接搜。
T2差分不行可以试试前缀和,但是没想到。。
0707
上午打了场模拟赛,又垫底了。。
T2有个变量打错调了一会儿。。感觉代码能力还是不行,要赶快提升一下代码能力。
T1感觉就我乱搞。ytq好神仙啊,(ax + b = bx + a) 就可以判断是否为 (1) 了。
T3签到题最后却没时间做,被吊打,感觉每题还是要留至少二十分钟的思考时间,避免签到题没分的情况。
0708
上午打了场模拟赛,又垫底了。。
T1直接容斥考虑哪些不可行。
T2考虑对一段取反,会导致其它一些取反,建图计算就行。
T3感觉ytq真神仙,这都听得懂,感觉他碰杯稳了。。
0709
上午做了CF896C,学了一下ODT,感觉只要随机数据并且有区间覆盖操作就可以上odt。