2022.3.30
ABC292
G区间dp
ABC291
ABCDE
Fdp
G多项式优化或卷积
2022.3.29
ABC294
ABCDE
F 二分最大平均值
G 树链剖分
ABC292
ABCDE
F二分
2022.3.28
ABC295
D 状压+前缀和
E 次序统计量
F 数位dp
G 图论
2022.3.20
[2021 ICPC Asia East Continent Final](2021 ICPC Asia East Continent Final - Virtual Judge (csgrandeur.cn))
B字符串计数
E打牌
J最短路
2022.3.19
组队赛3
G简单编辑距离dp
H分块可持久化字典树
2022.3.18
组队赛2
I枚举进位的回文dp
2023.3.15
首先,对于二分图匹配我们这样建图
在这里我们三分涂色数量k,把源点和汇点的流量限制改为k即可。
G - Grid Card Game (atcoder.jp)
在这个题中首先我们想到最终的价值就是选的行总和加列总和减去行列重复的部分
考虑建出这样一张图,对于所有大于0的元素和行总和添加连边,考虑这张图的最小割具有的性质:
如果某几行和列是联通的,那么他们的所有相交元素一定在割上
如果行和列不连通,那么从源点到列和从列到汇点的连边一定在割上
故行列和减去最小割就是最大匹配价值
2023.3.14
学习网络流
P2756 飞行员配对方案问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
测dinic板子
P4016 负载平衡问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
测MCMF板子
P2763 试题库问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
同上板子题
P3254 圆桌问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
常规模型的匹配问题
P2762 太空飞行计划问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
最大权闭合子图的本质并不是找割边,其具有的闭合子图的性质是用最大流跑完之后残留网络的连通性证明的,实际上判断的是图中点和源点的连通性
P2774 方格取数问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
结合最大权闭合子图,发现这种选一个一定不选另一个的性质似乎只在二分图上面体现的比较明显,因为二分图连边可以有闭合子图的性质。
CTSC1999]家园 / 星际转移问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
对时间拆点
P4013 数字梯形问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
简单拆点做路径容量问题
P2045 方格取数加强版 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
easy路径拆点限制容量
2023.3.13
学习网络流
整理了一下需要学习的知识:
sosdp fwt
填坑dp
决策单调性
斜率优化
笛卡尔树
树哈希
种类并查集
并查集的哈希
王室联邦分块
Dancing links
最短路径树
boruvka
竞赛图
回文自动机
类欧
2023.3.12
组队赛
有关回文串的dp,设状态 d p i , 0 / 1 , 0 / 1 dp_{i,0/1,0/1} dpi,0/1,0/1为从中间开始两边扩张长度为 i i i,且两边是否进位的情况
需要学习一下最短路,网络流,2SAT,斯特林数,树形dp板子整理,整理一下各个知识块。
2023.3.11
AtCoder Beginner Contest 293
F 分治进制范围,小范围暴力大范围解方程二进制枚举
G 莫队
Ex 树上dp[待补]
2023.2.26
2021-2022 ICPC East Central North America Regional Contest (ECNA 2021)
A 记忆化搜索,+操作需要单独提出来研究一下
G 模拟
B 森林的lca
E 组合数学
2023.2.25
Anton Trygub Contest 1 (The 1st Universal Cup, Stage 4: Ukraine)
A签到
B组合数学,核心在于不需要关注是+1还是-1只需要关注变和不变
E考虑xor 是0或不是0 分类前后缀异或即可
G简单模拟
I简单dp 考虑 d p i , j dp_{i,j} dpi,j表示前i行,第一个 a i , j = i + j a_{i,j}=i+j ai,j=i+j的位置
2022.9.8
2022.9.7
复现2021-2022 ACM-ICPC Latin American Regional Programming Contest
B fft
F 模拟
H km
I 模拟
J 模拟
K 模拟
M 涛涛写的
2022.9.6
665F. Four Divisors2400[min25]
一眼筛~
1418D. Trash Problem2100[模拟]
2022.9.5
1538G. Gift Set2100[三分]
1365F. Swaps Again2100[想法]
有点好玩的题!手摸了一下感觉怎么置换都是可以的,但对称的位置的置换必须也对称。然后
O
(
N
2
)
O(N^2)
O(N2)暴力匹配即可
1360H. Binary Median2100[二分]
1407D. Discrete Centrifugal Jumps2200[DP]
复杂度有点奇怪,刚开始做的时候没怎么想清楚,感觉上符合条件的
(
i
,
j
)
(i,j)
(i,j)对数很少,糊了一发过了。看了题解证明还是有点妙的~
796D. Police Stations2100[BFS]
2022.9.4
1493D. GCD of an Array2100[模拟]
2022.8.31
1420C2 - Pokémon Army (hard version)2100[线段树]
1355E.Restorer Distance2100[三分]
558E. A Simple Task2300[线段树]
343D. Water Tree2100[树剖]
2022.6.30
726E2. Erase and Extend2200 (Hard Version)
后缀数组寻找比原串字典序大的后缀即可。
2022.6.29
920E. Connected Components?2100[搜索]
挺蠢的,set的erase得及时不然就不能均摊复杂度了
803E. PermutationForces II[暴力]
就发现一点性质然后暴力乱搞
130E. Blood Cousins2100[莫队]
1400E - Clear the Multiset2200[dp]
考虑前
i
i
i个已经删完最后一个用了
j
j
j次第一种操作,转移再用前缀和优化一下就可。
1485D - Multiples and Power Differences2200[想法]
以前写过貌似,就考虑一下1-16的lcm就好搞了~
2022.6.28
1217D. Coloring Edges2100[想法]
首先完全图肯定能被两种颜色涂完
所以就判断一下有没有环就ok了,好像原题了
651E. Binary Subsequence Rotation2100[想法]
妙妙子想法题,首先知道选取的一定是0101的序列,然后知道选取一个这样的序列会让
m
a
x
(
∑
l
r
a
[
i
]
)
max(\sum ^r _l a[i])
max(∑lra[i])减少1,然后就求一下上面的东西就可以了,然而我只会弄个暴力。
636E. Weights Distributing[2100][最短路]
106D. The Number of Pairs2100[数学]
先把
l
c
m
(
a
,
b
)
lcm(a,b)
lcm(a,b)拆成
a
b
g
c
d
(
a
,
b
)
2
g
c
d
(
a
,
b
)
\frac {ab} {{gcd(a,b)}^2}gcd(a,b)
gcd(a,b)2abgcd(a,b)
然后原来的式子就变成
这样了,显然
g
c
d
gcd
gcd需要整除
x
x
x,然后就枚举
x
x
x的因子,然后
t
t
t就是
a
b
g
c
d
(
a
,
b
)
2
\frac {ab} {{gcd(a,b)}^2}
gcd(a,b)2ab,这个东西肯定要被分成互素的两个部分,分法就是
2
素因子个数
2^{素因子个数}
2素因子个数次。快速筛出一个数不同的素因子个数可以使用欧拉筛。
2022.6.27
275D. Tree and Queries2400[莫队][树]
对颜色数量进行分块
455C. Civilization2100[并查集]
1312E. Array Shrinking2100[区间dp]
想了好久的
a
[
i
]
a[i]
a[i]取值范围到底有啥用,最后发现没用。。。
2022.6.26
294E A and B and Lecture Rooms2100[倍增]
2022.6.25
1C. Ancient Berland Circus2100[计算几何]
愚蠢的计算几何
2022.5.13
P8256 [NOI Online 2022 入门组] 字符串
有点意思的题目,假设确定了第一个要的字符,题目就变得异常简单,因为字符总在最后插入,插入无非是要或者不要(这里需要注意并不是合法都要),那么我们可以感觉去(象征性的)枚举第一个要的字符的位置。具体体现在状态里就是
[
i
]
[
j
]
[
k
]
[i][j][k]
[i][j][k]表示已经插入了
S
S
S串的前
i
i
i个前面有
j
j
j个不要的后面有
k
k
k个不要的。
2022.5.2
E - RLE[dp]
今天打训练赛了,水一题
2022.5.1
559C.Gerald and Giant Chess2200[组合数学][容斥]
典中典,这题首先发现坏点只有2000个,可以
O
(
N
2
)
O(N^2)
O(N2)去枚举坏点对,然后考虑
总的合法路径
=
所有路径
−
非法路径
=
所有路径
−
∑
i
=
1
n
以
i
点为第一个坏点的非法路径
=
所有路径
−
(
经过
i
点的路径
−
不以
i
点为第一个坏点的非法路径
)
=
所有路径
−
(
经过
i
点的路径
−
∑
j
=
1
i
−
1
从起点到第
j
个坏点,不经过其他坏点的路径
×
从第
j
个坏点到第
i
个坏点的路径数
)
总的合法路径=所有路径-非法路径\\=所有路径-\sum_{i=1}^n 以i点为第一个坏点的非法路径\\=所有路径-(经过i点的路径-不以i点为第一个坏点的非法路径)\\=所有路径-(经过i点的路径-\sum_{j=1}^{i-1}从起点到第j个坏点,不经过其他坏点的路径\times 从第j个坏点到第i个坏点的路径数)
总的合法路径=所有路径−非法路径=所有路径−i=1∑n以i点为第一个坏点的非法路径=所有路径−(经过i点的路径−不以i点为第一个坏点的非法路径)=所有路径−(经过i点的路径−j=1∑i−1从起点到第j个坏点,不经过其他坏点的路径×从第j个坏点到第i个坏点的路径数)
主要的套路在于设中间状态为(第一个坏点为
i
i
i的非法路径数量)
2022.4.30
609EMinimum spanning tree for each edge2100[克鲁斯卡尔重构树][倍增]
克鲁斯卡尔重构树,复习一下倍增LCA的写法
首先有两个节点U,V。先让他们的深度跳到一样,然后再一起向上跳。
然后维护一个倍增的树链最大值,其中细节有点多,写的时候需要特别注意U,V可能开始就深度相同或者一个是另一个的父亲等情况。
int U=E2[i].from,V=E2[i].to;
if(dep[U]<dep[V])swap(U,V);
ll maxx=0;
for(int j=20;j>=0;j--)
{
if(dep[dad[U][j]]>dep[V])
{
maxx=max(maxx,ST[U][j]);
U=dad[U][j];
}
}
if(dep[U]!=dep[V])
{
maxx=max(maxx,ST[U][0]);
U=dad[U][0];
}
for(int j=20;j>=0;j--)
{
if(dad[U][j]!=dad[V][j])
{
maxx=max(maxx,ST[U][j]);
maxx=max(maxx,ST[V][j]);
U=dad[U][j];
V=dad[V][j];
}
}
if(U!=V)maxx=max({maxx,ST[U][0],ST[V][0]});
2022.4.29
1450C1. Errich-Tac-Toe (Easy Version)2100[思维]
挺有趣的,但感觉有点显然了
2022.4.28
570D. Tree Requests2200[树][莫队]
树上莫队,没啥好说的
[USACO4.2]草地排水Drainage Ditches[网络流]
板题
2022.4.27
E. Tree Painting2100[换根dp]
emm,只能说远古题
D. The Child and Sequence2300[线段树]
虽然没怎么想清楚,但是这种区间做减法\除法加上单点修改维护区间和的复杂度似乎都可以均摊复杂度
O
(
N
l
o
g
N
)
O(Nlog{N})
O(NlogN)