09 2020 档案
摘要:P2757 国家集训队 等差子序列 考虑有用值域 对于 $1 \le val_i \le \lceil \frac{2} \rceil$ 那么有用值域是 \([1, 2*val_i]\) 对于 \(\lceil \frac{N}{2} \rceil \lt val_i \le N\) 那么有用值域是
阅读全文
摘要:P4180 BJWC2010严格次小生成树 先求一遍最小生成树。然后枚举加入哪条边,然后找这两个端点的LCA,记录路径上的最大值和严格次大值(我用了一种偷懒的方法,不过能过)。为什么记录严格次大值?因为我们需要注意最大值等于你加入的边的情况。 /* Name: P4180 Copyright: NO
阅读全文
摘要:P2351 SDOI2012吊灯 对于能够分成大小为 \(i\) 的若干个联通块,要求至少 \(\lfloor \frac{N}{i} \rfloor\) 个节点子树的 \(size\) 为 \(i\) 的倍数。 这是显然的。 #include <algorithm> #include <iostr
阅读全文
摘要:P4097 HEOI2013 Segment 今天我们来学习李超线段树。 他就是一个维护线段的线段树。 学习完毕 李超线段树是线段树的一个变种,支持在平面直角坐标系中动态插入线段,查询一条竖线与所有线段的交点纵坐标的最大值或最小值。 区间记录 \(mid\) 点在上面的线段。(也就是区间最优秀线段)
阅读全文
摘要:P2155 SDOI2008沙拉公主的困惑 我们显然可以知道,本题是求 \(\displaystyle \sum_{i=1}^{N!}[\gcd(i, M!) =1]\) 那么我们 莫比乌斯反演 可以分块求一下。 \(\frac{N!}{M!} \cdot M! \prod_{\tiny \begi
阅读全文
摘要:P4141 消失之物 之前一直想学,然后咕咕咕了。(最后发现就是个容斥) 就是先考虑不退背包的情况,然后再容斥得出退背包的情况(就和硬币购物差不多) 采用滚动数组,注意枚举顺序(不退背包和退背包顺序是反的)。 #include <iostream> #include <cstring> #inclu
阅读全文
摘要:P5829 【模板】失配树 求公共 \(border\),,,求 \(border\) 我会,\(KMP\)。那么我直接做 M 次 KMP。 显然会TLE,但是我们也可以用 \(KMP\) 先求一下原串的 \(border\)。 然后我们可以发现,\(border\) 的 \(border\) 也是
阅读全文
摘要:P4827 国家集训队 Crash 的文明世界 前置: $$\begin \displaystyle m^n = \sum_m\beginn\i\endi!\dbinom = \sum_\beginn\i\endi!\dbinom \end$$ 推式子(钦定 \(x\) 为根): $$\begin
阅读全文
摘要:P4074 WC2013糖果公园 树上带修莫队(欧拉序分块,特判lca),然后,,,我排序错了,T了一页。。。 为了过都没用递归。。。修改就按他说的修改就行。 #include <algorithm> #include <iostream> #include <cstring> #include <
阅读全文
摘要:P3242 HNOI2015接水果 分块求区间第K小,然后用树上莫队(欧拉序分块,特判lca)做(这个做法可能会被卡,不过莫队被卡应该很正常吧?) 令离散化后值域为 \(C_{max}\) 利用分块可以把求第K小的复杂度降到 \(O(\sqrt{C_{max}})\) 也就是 \(O(\sqrt{P
阅读全文
摘要:P2371 国家集训队 墨墨的等式 同余最短路,考虑直接用最小的代价拼出来在膜最小 \(a_i\) 意义下的余数。然后不停地累加最小的 \(a_i\)(一下称它 \(a_{min}\)) 就行了。 正确性:假定 \(i,j,k\) 为膜 \(a_{min}\) 下的余数,令 \(i+j \equiv
阅读全文
摘要:CF链接:CF1051F The Shortest Statement 洛谷链接:CF1051F The Shortest Statement 缝合怪,普及题 第一眼不可做,第二眼 \(N - M \le 20\) 那么考虑一个树上挂了20条边,直接先整一颗树,对于多余的边的两个端点,每个跑一遍Di
阅读全文
摘要:P4819 中山市选 杀人游戏 简单来说就是找到入度为0的点记为 \(cnt\) 那么我们可以缩点直接找,不然复杂度爆炸。 答案是 \(ans = 1.0 - frac{cnt}{N}\) (这是错的) 但是这是错的,因为少考虑一种情况。 你是可以推理的!!!!!!!! 那末,我们考虑这样一组数据
阅读全文
摘要:P5331 SNOI2019通信 前言: 我省去年省选题。 拿到的时候直接想了个80分做法(震惊,暴力80分,不过去年好像进队要325分,,,)。 然后同机房聚铑教了满分做法,以为自己理解了,发现理解错了。 核心思想 连边方式:拆 \(i\) 点为 \(i_1, i_2\),建立源点,汇点 \(S,
阅读全文
摘要:P3605 USACO17JAN Promotion Counting P 线段树合并板子。 考虑儿子对父亲的贡献,直接把线段树合并上去就好了。 然后直接询问 \(val \gt p_n\) 的就好了。 #include <algorithm> #include <iostream> #includ
阅读全文
摘要:P2571 SCOI2010 传送带 三分套三分,在 \(AB\),\(CD\) 上任意选两个点,对于其中一个点固定的情况,其决策一定是一个凸函数。自己画一下模拟一下就知道了。 #include <iostream> #include <cstring> #include <cstdio> #inc
阅读全文
摘要:P4349 CERC2015 Digit Division 思维提高,代码难度入门。 正解:快速幂。 考虑一个区间,如果模 \(M\) 等于0,那么就可以作为决策点,而决策点前后加合法段也是合法段。那么直接对于每一个前缀求一个模M的值,当值为0即可作为决策点。 判无解:如果最后一个区间(也就是末尾和
阅读全文
摘要:CF771C Bear and Tree Jumps 直接考虑换根。 但是有个K,不好搞,那就多存点,记录 \(f_{n,j}\) 为与 \(n\) 距离为 \(j\) 的点的答案(\(f_{n,0}\) 即为自己的答案),那么可以知道,对于距离不为 \(K\) 的倍数的点,可以直接距离加一,对于距
阅读全文
摘要:Trie+拓扑排序。 P3065 USACO12DECFirst! G 假定当前字符串是最小的,然后在Trie上跑一遍,字典序小的字母向字典序大的字母连边。 然后拓扑排序成环就与猜测冲突(即不能为最小的) 注:字典序先按字母排序,然后按长度。 所以遇到前缀相同的,长的必定不行。 #include <
阅读全文
摘要:P3554 POI2013LUK-Triumphal arch 刚开始以为直接统计一个点最多的子树就好了。 然后发现不是这样的,在涂上面的时候,有多余的可以直接涂到下面去,那么就直接二分+树DP就完了。 也就是说我可以预判你要走哪些。 设 \(f_n\) 是还需要多少次才能涂完一个点的全部子树。那么
阅读全文
摘要:构造好题 先排除特殊情况(全0,全1,只有一个字符) 显然可以通过 \(a_{00}\) 和 \(a_{11}\) 得到零和一的个数,然后我们可以判断无解(\(cnt_0 * cnt_1 \ne a_{01} + a_{10}\)) 假定1全在前面,0全在后面,然后直接构造(能把a_{10}消掉就消
阅读全文
摘要:P4308 CTSC2011幸福路径 第一眼瞄上去似乎很不可做,那么我们考虑直接放弃当 \(P\) 不停地乘一个小于1的常数那么就无限趋近0而 \(w_i \le 100\) 而且只保留一位小数。 那么我们爆搜不停滚动DP就完了。注意初始值一定要赋负无穷(很大很大就可以哦,0是不能油库里的)。 方程
阅读全文
摘要:P3631 APIO2011方格染色 异或性质+带权并查集维护 主要是异或性质, 题目要求每个$2\ast2$的矩形内异或值为1 在使用$2\ast2$的矩形异或的时候,考虑对于一个矩形,除了最外面一圈,内部的格子都会被异或四次,除了内部和四个顶点的格子会被异或两次,所以可以不考虑(同一个值异或两次
阅读全文
摘要:P1436棋盘分割 前缀和一下。 直接记忆化搜索(每次切割后只能选择一边继续切) #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef lo
阅读全文
摘要:数位DP专练 1 P4999 烦人的数学作业 直接数位DP,考虑前pos位,和值为sum,有无到极限(flag) 然后直接深搜 #include <iostream> #include <cstring> #include <cstdio> typedef long long ll; const l
阅读全文
摘要:A 对于0就不管,对于连续的两个1也不管,对于单个的1,直接删除,显然删除元素少于 \(\frac{n}{2}\) #include<iostream> #include<cstring> #include<cstdio> using namespace std; typedef long long
阅读全文
摘要:A 水题,直接模拟能填就填。 #include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef long long ll; const ll MAXN = 1e6+10; ll N, M, T,
阅读全文
摘要:P1450 硬币购物 DP做法显然大家都能想到,但是一看多组数据,凉了。 我一看$s \le 10^5$ 显然可以预处理出来无限硬币可组成的情况。 那末,我们可以使用容斥做这题(反正只有4种)。 答案看程序。 关于为什么是 \(ans - f_{s-c_{i}\cdot (d_{i}+1)}\) 笔
阅读全文
摘要:首先,显然,可以把 \(L\) 便乘 \(\lfloor \frac{L}{K} \rfloor + [K \nmid L]\) 显然是因为如果 \(K \nmid L\) 那么 \(L\) 到 \(\lfloor \frac{L}{K} \rfloor \cdot K\) 是不可能出现和其它数 \
阅读全文
摘要:爆搜+容斥+剪枝 从最大的开始搜,会更快突破界限。 一个的lcm-两个的lcm+三个的lcm。。。 直接大力爆就完了。 #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <c
阅读全文
摘要:显然(我觉得不),对于点 \((i, j)\) 与 \((0, 0)\) 的连线,连线上点的数量是 \(\gcd(i, j)\) 那么问题转化为 \(\displaystyle \sum_{i=1}^{N} \sum_{j=1}^{M} (2 \cdot (i, j) -1)\) 那么我们可以设(一
阅读全文