摘要: Nim 博弈 可以证明当 \(a_1\oplus a_2 ... \oplus\ a_n=0\) 时,后手必赢。 否则先手必赢。证明略。 阶梯博弈 可以证明当 \(a_1\oplus a_3 \oplus\ a_5 ...=0\) 时,后手必赢。 否则先手必赢。证明略。 Pro:此题单向移动是可以的 阅读全文
posted @ 2021-09-18 16:00 Saintex 阅读(106) 评论(0) 推荐(0)
摘要: 图论专场? 前言 A、B 略。 C 考场上用了 20min A了这道题,其中 12min 都在理解题意,我在线谢谢出题人我的英语。/wx 转 \(4\) 次。每次判断两矩形是否平移后相同即可。 判断也很简单,分别将两个矩形的左上角靠在 \((1,1)\),看看他们是不是完全一样。 #include 阅读全文
posted @ 2021-09-11 23:54 Saintex 阅读(97) 评论(0) 推荐(0)
摘要: 降智了( A、B、C、D 略。 E 降智了。 一开始发现可以用树状数组+queue(que)做掉。具体地,每次加入点在que中,如要排序,就将que中的点全部插入树状数组。询问的时候,在树状数组上二分(只是我懒打了个2log),有的话输出删掉,否则就输出、删掉que.front()。 考完发现自己降 阅读全文
posted @ 2021-09-06 14:09 Saintex 阅读(116) 评论(0) 推荐(0)
摘要: link 又是喜闻乐见的推式子环节。 以下令 \(n\le m\)。 \(ans=\sum_{i=1}^n \sum_{j=1}^m \mathrm {lcm}(i,j)\) \(=\sum_{i=1}^n \sum_{j=1}^m \frac {i\times j}{\gcd(i,j)}\) \( 阅读全文
posted @ 2021-08-25 10:57 Saintex 阅读(67) 评论(0) 推荐(0)
摘要: 首先 \(10^{100} s\) 后所有情况都会出现。因为 \(2*lcm(1,2,..50)\le 10^{100}\)。 令当前时间为 \(t\),则序列 \(i\) 取的到 \(j\) 需满足的条件为:\(t\equiv place_j \pmod {len_i}\)。(\(len_i\) 阅读全文
posted @ 2021-08-22 00:32 Saintex 阅读(113) 评论(1) 推荐(3)
摘要: 早就学了,复习一下。 普通 \(\mathcal {O}(log_2(n))\) 的快速乘(龟速乘): LL QT(LL x, LL y) { LL ans = 0; for(; y; y >>= 1) { if(y & 1) ans = (ans + x) % n; x = (x + x) % n 阅读全文
posted @ 2021-08-18 19:10 Saintex 阅读(62) 评论(0) 推荐(0)
摘要: D 逆向思维,考虑一条边被多少条路径作为答案。 很套路吧,想到每次找到图中最大的边,断开,它的贡献为两边联通块的大小相乘再乘它的权值。反着来,每次用最小的边连接两个块,用并查集维护。 #include <cstdio> #include <algorithm> #include <cmath> #i 阅读全文
posted @ 2021-08-16 08:50 Saintex 阅读(145) 评论(0) 推荐(0)
摘要: 以下 \(p\) 为模数,\(x\) 为我们要求逆元的数。 最直接的是利用费马小定理,$x^{-1}\equiv x^{p-2}(mod\ p)\(是,时间复杂度:\)\mathcal {O}(nlog_2(n))$。 这里有两个线性做法: 令 \(p=ax+b\),则 \(ax+b\equiv 0 阅读全文
posted @ 2021-08-13 23:28 Saintex 阅读(159) 评论(0) 推荐(1)
摘要: 来看以下例题:令 \(a_i\) 为 \(\sum_{j \subsetneq i}a_j\)。你会说,这简单啊,枚举子集直接 \(\mathcal O(3^n)\)。 好的,有没有什么更优秀的算法呢?引入高维前缀和。就比如我们要求一个三维的前缀和,需要写一个比较长的容斥式,并且扩展到多维转移的时间 阅读全文
posted @ 2021-08-09 23:51 Saintex 阅读(159) 评论(0) 推荐(0)
摘要: C 发现是个经典的括号匹配。 D emm... 想到按左端点排序。一个很直接的想法,对于第 \(i\) 段区间,前 \(i-k+1\) 段区间右端点的最大值会与它的左端点构成一个小区间,最后将这些区间合并即可。值得一提的是,在这之前你要将被包含的区间删掉,不然会出现错误,这显然。(emm...考试时 阅读全文
posted @ 2021-07-22 15:01 Saintex 阅读(136) 评论(0) 推荐(0)
摘要: D 不难的。 两个点的的关系要么是左上-右下,要么是左下-右上,然后拆绝对值(这是拆绝对值的很经典做法),用个前缀最小值维护即可。 值得一提的是,若这题要求在线做,需要用线段树/树状数组/二维线段树/二维树状数组。 E 这题本质上是求 \(n\) 个点的最小生成树,但由于 \(nm\leq 10^{ 阅读全文
posted @ 2021-07-20 15:03 Saintex 阅读(91) 评论(0) 推荐(0)
摘要: link 感悟:其实,一道题不妨从样例入手。 C 考场上 dfs “水过去” 的(感觉可以剪掉很多枝,常数 \(\frac{1}{500}\)),考后发现是正解(? 至于证明,现在不想理解,以后来填吧。 #include <cstdio> #include <algorithm> #include 阅读全文
posted @ 2021-07-20 10:33 Saintex 阅读(191) 评论(0) 推荐(0)
摘要: link 前言 其实就是一道线段树合并的板子,因为机房要求写就写了。 题意 问 \(1\sim n\) 的子树中各个子树的众数和。 分析 其实,一般如果要求各个子树的某个东西,我们一般都是考虑 线段树合并/dsu on tree/dfn+其他数据结构(可能还有其他做法,只不过我太菜了不会),所以我才 阅读全文
posted @ 2021-07-16 12:11 Saintex 阅读(84) 评论(0) 推荐(0)
摘要: ABC168 ABC172 ABC168 E ∙ (Bullet) 模拟赛时看错式子降智了。。。我是sb。 很显然吧,想到把带有 \(i\) 的式子独立出来。 则 \(\frac {A_i} {B_i}=-\frac {B_j} {A_j}\)。由于这个东西是有交换律的,即 \(\frac {A_j 阅读全文
posted @ 2021-07-14 21:08 Saintex 阅读(135) 评论(0) 推荐(0)
摘要: link 单调栈+单调队列+$dp$好题。 首先一眼看出是 \(dp\)。令 \(dp[i]\) 为推倒前 \(i\) 个骨牌所耗费的最小价值,(这个并没有单调性。 考虑 \(dp[i]\) 由什么转移来。 1.左边的翻过来(相当于自己向右边翻)。由于能转移过来的 \(j\) 并不是连续的(显然), 阅读全文
posted @ 2021-07-12 22:05 Saintex 阅读(61) 评论(0) 推荐(0)