
ACM学习笔记
文章平均质量分 72
记录学习
Alex Su (*^▽^*)
清华大学计算机硕士 ACM-ICPC银牌 CCPC银牌 蓝桥杯国一 天梯赛国一 CSP全国前50
展开
-
大三第十周学习笔记
训练!!!!原创 2022-11-02 10:55:55 · 430 阅读 · 0 评论 -
新模板整理
训练!!!原创 2022-10-11 23:44:31 · 230 阅读 · 0 评论 -
大三第五周学习笔记
训练!!!!原创 2022-09-26 17:31:59 · 471 阅读 · 0 评论 -
大三第四周学习笔记
训练!!!!原创 2022-09-19 11:01:32 · 534 阅读 · 0 评论 -
大三第三周学习笔记
训练!!!原创 2022-09-12 11:09:29 · 605 阅读 · 0 评论 -
大三第二周学习笔记
训练!!!!原创 2022-09-05 10:45:23 · 268 阅读 · 0 评论 -
大三第一周训练
训练!!!原创 2022-08-31 09:35:42 · 315 阅读 · 0 评论 -
概率/期望dp专题
训练!!原创 2022-08-29 14:59:16 · 724 阅读 · 0 评论 -
博弈论专题
博弈论原创 2022-08-16 17:01:50 · 1814 阅读 · 0 评论 -
暑假第四周
训练!!原创 2022-07-25 19:12:02 · 304 阅读 · 0 评论 -
暑假第三周
训练!!原创 2022-07-18 10:58:25 · 93 阅读 · 0 评论 -
暑假第二周
训练!!原创 2022-07-11 09:50:45 · 193 阅读 · 0 评论 -
暑假第一周
训练!!!原创 2022-07-04 16:33:33 · 155 阅读 · 0 评论 -
蓝桥杯备战
准备一下原创 2022-06-15 15:23:12 · 123 阅读 · 0 评论 -
日常训练记录
日常训练记录原创 2022-06-03 16:49:01 · 359 阅读 · 0 评论 -
算法新模板
FFT/*FFT模板 以此题为例这道题就是给两个序列a,b求b序列中有多少个数可以表示为a序列中的一个数,或者两个数之和(可以同一个数)可以构造两个一样的多项式,a序列有相应的数的项的系数为1,否则为0因为还有1个数的情况,所以看作a中有一个0。这样用多项式乘法,就可以得出所有的和。*/ #include<bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b); i++)#define _for(i原创 2022-04-16 15:30:57 · 775 阅读 · 0 评论 -
大二下第八周学习笔记
周六D. Valid Sets(树形dp)这题2000的数据范围提示n^2的算法树形dp一般是O(n) 所以可以考虑以每一个根分别树形dp一次那么设当前的根为rt,rt为集合的最大值dp[i]表示以i为根的子树的子集数,i一定选那么每一个儿子选的话方案是dp[v],不选的话方案是1,那么遍历儿子全部乘起来就好了还有一个问题,就是一个集合如果最大值有多个,那么在以这些最大值为根统计的时候会重复计算那么我们就设定标号最大或者最小的那个值才可以统计答案,所以就判断一下权值相等的时候原创 2022-04-16 11:28:14 · 355 阅读 · 0 评论 -
大二下第七周学习笔记
大二下课业真的太重了……机器学习课一周要精读4篇论文,掌握每篇论文的数学原理推导……光是学校的课程就要花去我所有的时间……现在好不容易挤点时间训练周二昨天vp了一场cfdiv2 然而打到一半被叫去做核酸……算是做了一些水题吧 先找回打代码的感觉A. Marin and Photoshoot观察发现两个0之间必须有两个1#include<bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b);原创 2022-04-05 15:48:20 · 455 阅读 · 0 评论 -
大二下第二周学习笔记
大二下课业比较重,只能挤出时间来训练周三E. Anton and Tree(并查集+树的直径)这题我下意识以为是道树形dp,马上推dp方程然后发现有点复杂,好像不太对……其实想偏了。首先先缩点,一样颜色的缩在一起,这个不难,可以类似tarjan缩点,先求出每个点的归属,再遍历一遍树建立新的边即可。新的图可以发现是黑白相邻的,这种情况下,从一个点开始反复操作是最优的,很容易发现最终的步数取决于最长的链,也就是直径。所以对新图求一下树的直径即可。#include<bi原创 2022-03-02 21:49:03 · 232 阅读 · 0 评论 -
大二下第一周学习笔记
因为疫情推迟返校,在家上网课。在家的话,自律非常重要,开启自律模式周四F. Subsequences of Length Two(dp)一开始想的是贪心,然后发现不太对。突然醒悟到dp,显然状态和前i个,用了多少此有关当前是t[1]的话,还和前面有多少个t[0]有关于是把有多少个t[0]也加入状态最后就是一个n^3的dp一开始给200的数据量,就提示时间复杂度了,做了那么多题,一般没有不拉满的注意特判一下t的两个字母一样的情况#include <bits/原创 2022-02-24 19:11:36 · 258 阅读 · 0 评论 -
大二寒假第六周学习笔记
周四原创 2022-02-17 10:15:20 · 503 阅读 · 0 评论 -
大二寒假第五周学习笔记
全力以赴就会闪闪发光周一P5306 [COCI2019] Transport(点分治)这题搞了好久……很精彩首先这题的路径具有方向性,因此一条路径u到v要拆成两部分,u到lca,lca到v先看u到lca的部分,多出来的油量很容易算出,关键是判断是否合法如果要合法的话,显然是以u为起点的路径的油量最小值要大于等于0,就是合法的这个怎么求呢,用dp求,类似一个序列求最大连续子序列和,dp[i]表示以i为结尾的连续子序列最大值那么dp[i] = a[i] + min(dp[i -原创 2022-02-07 11:28:06 · 851 阅读 · 0 评论 -
大二寒假第四周学习笔记
过年摸鱼了一个星期周六原创 2022-02-05 09:25:14 · 613 阅读 · 0 评论 -
大二寒假第三周学习笔记
周一后缀自动机模板好难理解啊,看了一上午,感觉理解了一半吧……边做题边加深理解吧这两篇博客讲的不错史上最通俗的后缀自动机详解 - KesdiaelKen 的博客 - 洛谷博客浅谈后缀自动鸡/SAM - Arextre 的博客 - 洛谷博客本质上是将一个字符串的所有子串的信息聚集在一个有向无环图中一开始有一个源点,一条边代表在末尾添加一个字符每一个节点代表一个endpos等价类,一个类中有很多个子串,它们长度连续,且短的为长的后缀一条路径所形成的字符串一定在终点节点的等原创 2022-01-24 11:25:57 · 526 阅读 · 0 评论 -
大二寒假第二周学习笔记
争取这周一天八题周一D. Pair of Numbers(ST表)思路完全正确,求区间最值用的是线段树,一次查询是logn的,常数大,直接T了我还以为思路不对,有什么更快的方式后来实在想不到,看题解发现要不超时必须用ST表 常数小 每次询问O(1)确实,如果是求区间最值,gcd,且没有修改的话,用ST表是最快的,代码量也小#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b)原创 2022-01-17 09:44:27 · 1254 阅读 · 0 评论 -
大二寒假第一周学习笔记
大二的课业比大一重了许多,导致最后几个星期没有训练,去复习期末考试去了。练起原创 2022-01-12 09:41:18 · 649 阅读 · 0 评论 -
大二上第十三周学习笔记
周三F - The Answer to the Ultimate Question of Life, The Universe, and Everything.(打表)求a ^ 3 + b ^ 3 + c ^ 3 = x 有无解 有则输出a b c 的绝对值小于5000 x在0到200我看到x范围比较小就觉得可以打表问题是怎么写一个比较快的打表程序一开始想的是c^3用map存,然后对于每一个x枚举a b但这样太慢了其实很接近了应该是a ^ 3 + b ^ 3用map存,.原创 2021-12-01 09:29:04 · 421 阅读 · 0 评论 -
大二上第十二周学习笔记
一口气把ddl都弄完了搞起原创 2021-11-26 14:27:54 · 436 阅读 · 0 评论 -
大二上第十一周学习笔记
现在大二不像大一时间那么多课程上需要花蛮多时间的,所以训练时间少了周一原创 2021-11-15 20:33:30 · 287 阅读 · 0 评论 -
大二上第十周学习笔记
静下心 做自己能控制的事情加油原创 2021-11-08 20:41:40 · 165 阅读 · 0 评论 -
大二上第九周学习笔记
周一Stone Games(思维+主席树)这里弄了好久,其实也是因为缺的知识点有点多首先是思路,这道题的思路挺妙的如果已经能表示[1, x]了,那么多来一个数t,如果这个数 > x + 1那么显然不会改变能表示的区间,否则区间变为[1, x + t],可以由[1, x]每个数加一个t得到那么可以一直加入新的数,重复这个过程,直到无法拓展区间考虑怎么加速这个过程可以一次性把小于等于x + 1的数一起加上,这些数都是可以拓展区间的小于等于x + 1的数还包括之前构成[1原创 2021-11-01 16:04:04 · 139 阅读 · 0 评论 -
大二上第八周学习笔记
周一A. Luntik and Concerts(思维)比赛的时候写的比较复杂,分类讨论注意a, b, c >= 1另S = a + b * 2 + c * 3那么可以组成0~S的任何数可以用贪心放,先放3,再放2,再放1,这样一定可以放完可以讨论每次3有没有放完,2有没有放完所以答案就看S的奇偶就行了#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b); i原创 2021-10-25 20:52:46 · 242 阅读 · 0 评论 -
大二上第七周学习笔记
C. Watto and Mechanism原创 2021-10-18 10:13:16 · 360 阅读 · 0 评论 -
大二上第六周学习笔记
HDU 7131 (DP)用dp[i][j]表示文本串的前i个字符里面,有多少种方案能匹配模式串的前j个位转移方程dp[i][j] = dp[i - 1][j]如果模式串第j位与文本串第i位匹配dp[i][j] += dp[i-1][j-1]初始化为dp[0~n][0] = 1表示文本串为0到n时,与空串都有一个匹配,注意包括0统计答案的话每次成功匹配且匹配完成的时候加上dp[i-1][j-1] * (pow(2, sum[i + 1]) - 1)sum[i+1]原创 2021-10-11 21:44:08 · 210 阅读 · 0 评论 -
大二上第五周学习笔记
最近有点平衡不了绩点科研竞赛这周要回归了 提高效率 平衡好B - Reverse Game(博弈论)这道题的关键是转化为把1全部放到右边游戏就结束了所以每次操作可以使得1左1个或者2个那么就可以转化为取石子的模型,n个石子,每次取1个或2个判断是不是3的倍数就行了#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b); i++)#define _for(i, a, b) f原创 2021-10-05 16:47:24 · 155 阅读 · 0 评论 -
大二上第三周学习笔记
B. Orac and Medians(思维)非常非常思维的一道题 不好想首先注意到一个k和一个大于等于k的数,可以变成k,接着这两个数可以把相邻的第三个大于等于k的数变成k所以我们可以把所有的数变成大于等于k的数,之后就可以全部变成k那么这么变成大于等于k的数呢可以发现,两个相邻的大于等于k的数如果存在,那么就可以把第三个数变成大于等于k,接着第四个数不相邻的话,就是三个数,左右大于等于k也行所以判一下这两种情况是否存在就行了#include <bits/stdc+原创 2021-09-20 12:49:13 · 133 阅读 · 0 评论 -
大二上第二周学习笔记
最近刷一些cf2000到2100的题目一周7题以上 周末为主F. Array Partition(线段树 + 二分)这道题我当时已经想到了固定左端点,然后右端点二分了但是我发现没有像二分答案那样的单调性,并不是像000011111那样然后就卡住了实际上确实没有单调性,是像二分查找那样000010000所以就是查中间一个符合答案的点,所以就不断向中间逼近#include <bits/stdc++.h>#define l(k) (k << 1) #d原创 2021-09-14 20:34:11 · 111 阅读 · 0 评论 -
大二上第一周学习笔记
周三P3586 [POI2015]LOG(猜结论 + 动态开点线段树)首先猜一个结论大于等于s的肯定可以选小于s的和只要大于剩下要选的数乘以s就行了用动态开点线段树维护#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b); i++) #define _for(i, a, b) for(int i = (a); i <= (b); i++) using namespac原创 2021-09-08 15:36:38 · 158 阅读 · 0 评论 -
暑假末尾学习笔记
中间停了一段时间回家休息几天以及一部分老师布置的暑假作业8.29P3389 【模板】高斯消元法这不就是线性代数里面的解线性方程组么原来这个叫高斯消元逐项遍历每次找最大的系数,然后把这一行交换到对角的位置然后和其他方程组进行加减消元,使得这一项的系数都为0#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b); i++)#define _for(i, a, b) fo原创 2021-08-29 16:02:29 · 183 阅读 · 0 评论 -
暑假第四周学习笔记
周一P3803 【模板】多项式乘法(NTT)学了学NTT#include<bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i < (b); i++)#define _for(i, a, b) for(int i = (a); i <= (b); i++)using namespace std;typedef long long ll;const int N = 4e6 + 10, mod = 99824原创 2021-07-19 10:38:39 · 256 阅读 · 0 评论