训练记录
Posted solemntee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了训练记录相关的知识,希望对你有一定的参考价值。
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)^2gcd(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(NlogN)
O(NlogN)
以上是关于训练记录的主要内容,如果未能解决你的问题,请参考以下文章