2024.7 训练日记
\(\color{grey}\bigstar\) 可以秒杀的题。
\(\color{green}\bigstar\) 思考一会儿后可以秒的题。
\(\color{blue}\bigstar\) 需要较长时间思考的题。
\(\color{#F1C40F}\bigstar\) 看题解、稍加指点就会做的题。
\(\color{red}\bigstar\) 看题解后需要较长时间消化,甚至现在都没有完全理解的题。
题目后面会写一点评价与感悟。按照 Linshey 意见,一套模拟赛算 \(1\) 题。
日期范围:\(7.1\sim 7.31\)。总计过题:\(88\)。
7.1
当天过题数:\(6\)。
\(\color{#F1C40F}\bigstar\) qoj 8838,当只有一个置换环的时候构造有点难想。
\(\color{#F1C40F}\bigstar\) qoj 8833,计数题。
\(\color{red}\bigstar\) CF566C,妙妙题!稍微讲一下。
一种常见的找重心的方法就是:每次移动到相邻节点判断会不会更优,然后移动。此题可以推广到边权为任意关于 \(dis\) 的下凸函数。
记 \(\mathbb{L}_{u'}\) 表示以 \(u\) 为根,\(u'\) 子树中点构成的集合,考虑到从 \(u\to u'\) 时式子的变化:
记 \(f(x)=\sum\limits_{v\in \mathbb{L}_{u'}} a_v(dis(u,v)-x)^{3/2}+\sum\limits_{v\notin \mathbb{L}_{u'}} a_v(dis(u,v)+x)^{3/2}\),\(w=w(u,u')\),则变化为 \(f(0)\to f(w)\)。
注意到 \(f(x)\) 由若干下凸函数加起来,仍为下凸函数 \((f''(x)\ge 0)\)。于是若 \(f'(0)\ge 0\),则 \(f'(x)\ge 0(x\ge 0)\)。
此时 \(f(w)-f(0)=\displaystyle\int_0^w f'(x)\mathbb{d} x\ge 0\),于是 \(u\to u'\) 一定不优。
于是 \(u\to u'\) 变优 \(\Rightarrow f'(0)<0\Rightarrow\dfrac{3}{2}\left(\sum\limits_{v\in \mathbb{L}_{u'}} -a_v dis(u,v)^{1/2}+\sum\limits_{v\notin \mathbb{L}_{u'}} a_v dis(u,v)^{1/2}\right)<0\)。
记 \(p_{u'}=\sum\limits_{v\notin \mathbb{L}_{u'}} a_v dis(u,v)^{1/2}\),则 \(f'(0)<0\Rightarrow \sum\limits_{v\in son_u} p_{v}-2p_{u'}<0\)。
于是这样的可能更优决策 \(u'\) 至多只有一个!然后点分治移动即可。如果无法移动那么这个点就是最优。
有可能 \(u\to v\) 可能更优,然后 \(v\to u\) 可能更优。此时直接比较一下俩哪个更优即可。复杂度 \(O(n\log n)\)。
\(\color{green}\bigstar\) P7481,简单整式递推练手题,std 推法想不到。
\(\color{green}\bigstar\) ABC360G,其实是简单题,但是细节有点小多,被创了。
\(\color{#F1C40F}\bigstar\) P10553,妙妙交互题!
7.2
当天过题数:\(2\)。
\(\color{green}\bigstar\) 随机游走问题,简单数学题。
\(\color{#F1C40F}\bigstar\) ARC180B,逆排列很妙。
7.3
vp The 2nd Universal Cup. Stage 23: Shanghai。
当天过题数:\(5\)。
\(\color{blue}\bigstar\) qoj 8051,神秘思维题,赛事我 WA 了好多发才过的。
\(\color{#F1C40F}\bigstar\) qoj 8052,MO 题,赛事 hpt 找到了 IMOSL 中类似的题找到了结论。
\(\color{#F1C40F}\bigstar\) qoj 8049,妙妙背包题,以及不知道是否经典的 trick。
\(\color{#F1C40F}\bigstar\) qoj 8058,经典套路是尝试两个串共同转换成一个标准串。注意到有 \(10\to 11\to 100\to 10\) 的环,特判串为 1
的情况即可。
\(\color{#F1C40F}\bigstar\) ABC290F,调整状态所做,考虑先拉出直径,往上挂点,组合数算算即可。
7.4
当天过题数:\(4\)。
\(\color{blue}\bigstar\) qoj 8714,直接暴力三维数点,比价唐的做法。
\(\color{green}\bigstar\) qoj 8717,简单的猫树分治,后续处理需要一点小技巧。
\(\color{#F1C40F}\bigstar\) qoj 8715,没想到中位数那步,而且后面的 NTT 式子也没推出来实在是太不应该了。
\(\color{#F1C40F}\bigstar\) CF1552G,很深刻的题,类似 P10360。
7.5
当天过题数:\(5\)。
\(\color{blue}\bigstar\) 微观戏剧,打表发现是斯特林数前缀和,能线性算。
\(\color{#F1C40F}\bigstar\) CF1830C,妙妙性质题。
\(\color{green}\bigstar\) P10680,简单根号分治。
\(\color{#F1C40F}\bigstar\) P6694,很好的数学题。
\(\color{red}\bigstar\) P10681,自己的做法太繁了,有个式子太妙了,我实在理解不了。
7.6-7.12 省队集训
详见 2024 福建省队集训录。接下来省集的比赛题以及订正都只算一题。
7.6
当天过题数:\(3\)。
\(\color{green}\bigstar\) CF449D,简单高维前缀和。
\(\color{red}\bigstar\) loj 3409,太高妙了这题。
7.7
当天过题数:\(5\)。
\(\color{green}\bigstar\) P6076,两次容斥做完。
\(\color{#F1C40F}\bigstar\) P10682,一个经典线性基结论加经典拆环状物的结论。为啥自己没做出来呢?反思!
\(\color{green}\bigstar\) ABC303H,简单 Prufer 序列结论题,套个多项式快速幂做完。
\(\color{green}\bigstar\) qoj 969,If only some kind soul would tell us a_1000000...
。
7.8
当天过题数:\(5\)。
\(\color{red}\bigstar\) ARC148F,蒙哥马利算法。
\(\color{#F1C40F}\bigstar\) ARC180C,dp 中关键那一步还是很妙的。
\(\color{green}\bigstar\) CF379F,duel 的题,动态直径秒了。
\(\color{green}\bigstar\) P10833,鉴定为数据结构学傻了导致的。我的做法是直接找所有极小 mex 区间判断。
7.9
当天过题数:\(2\)。
\(\color{blue}\bigstar\) CF1986G2,把 \((a_i,i)\) 分别除掉他们的 \(\gcd\),此时设为 \((a_i,b_i)\)。不妨考虑 \(b_i\neq 1\) 的情况。那么 \((i,j)\) 满足条件 \(\Leftrightarrow b_j\mid a_i,b_i\mid a_j\),枚举因数 计数即可。卡常!
7.10
当天过题数:\(1\)。
生日就摆一点吧!
7.11
当天过题数:\(2\)。
\(\color{blue}\bigstar\) ARC158E,模拟赛题弱化版,改改就过了。
7.12
当天过题数:\(4\)。
\(\color{#F1C40F}\bigstar\) Cookie Distribution,这题没想出来太唐了!
考虑把 \(\prod c_i\) 拆成组合意义:即最后算每个人从他拿到的糖果中选一个的方案数。写出式子生成函数乱算,复杂度 \(O(kn^2)\)。
\(\color{green}\bigstar\) Product of Arithmetic Progression,把 \(d\) 提出来做完,唐!
\(\color{#F1C40F}\bigstar\) Random Tournament,首先容易区间 dp+bitset 得到 \(\text{poly}(n)/w\) 的做法。
记 \(f_{i,j,k}\) 表示区间 \([i,j]\) 中 \(k\) 能否胜出,则转移形如:\(f_{i,j,k}\gets f_{i,w,k}\ \text{and}\ f_{w+1,j,K}(a_{k,K}=1)\)。
考虑 \(k\) 能在 \([i,j]\) 中胜出相当于啥?相当于 \(k\) 能在 \([i,k]\) 中胜出,且 \(k\) 能在 \([k,j]\) 中胜出,此时 dp 状态就只有边界情况了!
记 \(L_{i,j}\) 表示 \(i\) 能否在 \([i,j]\) 中胜出,\(R_{i,j}\) 表示 \(j\) 能否在 \([i,j]\) 中胜出,则转移:
\(L_{i,j}\gets L_{k,j}\ \text{and}\ R_{i+1,k}\ \text{and}\ a_{i,k}(i<k\le j)\)
\(R_{i,j}\gets L_{k,j-1}\ \text{and}\ R_{i,k}\ \text{and}\ a_{j,k}(i\le k<j)\)
显然交换 \(L\) 两维:
\(L'_{j,i}\gets L_{j,k}\ \text{and}\ R_{i+1,k}\ \text{and}\ a_{i,k}(i<k\le j)\)
\(R_{i,j}\gets L'_{j-1,k}\ \text{and}\ R_{i,k}\ \text{and}\ a_{j,k}(i\le k<j)\)
这是容易 bitset 优化区间 dp 的,复杂度 \(O(n^3/w)\)。
$\texttt{code}$
#include<bits/stdc++.h>
#define LL long long
#define fr(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);
using namespace std;
const int N=2005;
int n,s;string C;
bitset<N>L[N],R[N],a[N];
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;L[1][1]=R[1][1]=1;
for(int i=2;i<=n;i++)
{
cin>>C;L[i][i]=R[i][i]=1;
for(int j=1;j<i;j++) a[j][i]=(a[i][j]=C[j-1]-'0')^1;
}
for(int k=2;k<=n;k++)
for(int i=1,j=k;j<=n;i++,j++)
L[j][i]=(L[j]&R[i+1]&a[i]).any(),
R[i][j]=(L[j-1]&R[i]&a[j]).any();
for(int i=1;i<=n;i++) s+=L[n][i]&R[1][i];
return cout<<s,0;
}
7.13
当天过题数:\(3\)。
\(\color{green}\bigstar\) uoj 887,UNR T1,观察到性质后就简单了。
\(\color{blue}\bigstar\) uoj 888,赛事做到 80 pts 了,最后一个 \(64\) 始终优化不掉,题解的做法还是很妙的。
\(\color{green}\bigstar\) P10778,参考 P10075,判断是否存在 xor 为 \(0\) 的部分写个线性基优化即可。值得注意的是这个幽默题。
7.14
UNR Day 2 太困了去加睡了,有点太摆烂了。
当天过题数:\(3\)。
\(\color{green}\bigstar\) P10777,简单的欧拉回路性质题。
\(\color{#F1C40F}\bigstar\) Card Collector,很深刻啊!最大生成基环树森林。
\(\color{green}\bigstar\) XOR Partitioning,简单推式子题目,异或前缀和一下,观察性质写个 dp 做完了。
7.15
当天过题数:\(8\)。
\(\color{red}\bigstar\) AGC027E,经典题,妙妙 trick。
\(\color{green}\bigstar\) qoj 5376,小清新好题!推销博客!第 \(19\) 篇。
\(\color{green}\bigstar\) P5349,简单 EGF 题。
\(\color{green}\bigstar\) qoj 4278,推式子,询问按照 \(a\) 排序,考虑一个 \(a\) 的贡献,用这题 trick 即可。
\(\color{blue}\bigstar\) qoj 4624,推式子部分简单,但是实现精细通过此题需要一点技巧。
\(\color{green}\bigstar\) qoj 858,打表找规律,发现满足条件的 \(\{a_i,a_j\}\) 只能是 \(\{kd,(k+1)d\}\),调和级数枚举即可。
\(\color{#F1C40F}\bigstar\) P5353,当后缀平衡树板子。
\(\color{#F1C40F}\bigstar\) qoj 4617,妙妙奇偶分治!
7.16
飞去 CQ 参加 NOI,摆。
7.17
当天过题数:\(1\)。
\(\color{#F1C40F}\bigstar\) CF1554E,妙妙题!注意实现细节。
7.18
NOI Day 1,摆。
7.19
当天过题数:\(2\)。
\(\color{#F1C40F}\bigstar\) CF757E,我不好评价是啥难度的题,因为我推假了。
\(\color{green}\bigstar\) P5174,简单式子题,当放松心态了。
7.20
摆。
7.21
当天过题数:\(1\)。
\(\color{#F1C40F}\bigstar\) P5348,好题。
7.22
当天过题数:\(4\)。
\(\color{green}\bigstar\) ThREE,简单构造题,按度数奇偶黑白染色是容易想到的。
\(\color{green}\bigstar\) CF1114E,简单题,一发过了。
\(\color{#F1C40F}\bigstar\) P10744,有思维量的题。
\(\color{grey}\bigstar\) P10740,水题。
7.23
当天过题数:\(2\)。
\(\color{red}\bigstar\) AGC058B,双倍经验:P10741。写了 \(O(n^2)\) 做法,给红是因为不会 \(\text{poly}\log\) 处理这种格路计数题。
\(\color{green}\bigstar\) CF1198C,不会做这种题应该感到羞耻。
7.24
旅游。
7.25
当天过题数:\(2\)。
\(\color{#F1C40F}\bigstar\) CF1270E,又是值域折半的套路,再积累一次。
\(\color{green}\bigstar\) CF1105E,复习了最大独立集的 \(O(2^{n/2})\) 做法。
7.26
当天过题数:\(2\)。
\(\color{#F1C40F}\bigstar\) P10806,显然先二分,然后直接左右贪心能 hack,要考虑反悔一格 \(L\) 状态的情况,思考咋实现。
\(\color{#F1C40F}\bigstar\) P10736,多想差分!差分完转化为 CF865D。
7.27
当天过题数:\(1\)。
\(\color{green}\bigstar\) CF56E,训这种题的意义在于:即使赛事想了复杂的做法,也要飞快写完这种难度的题。
7.28
当天过题数:\(7\)。
\(\color{green}\bigstar\) ABC364F,简单 Kruskal 题。
\(\color{#F1C40F}\bigstar\) ABC232H,很好的递归构造题。
\(\color{green}\bigstar\) ABC233H,曼哈顿转切比雪夫,然后二分加主席树在线二维数点,很好的套路题。
\(\color{#F1C40F}\bigstar\) ABC234H,绝世好题。
\(\color{#F1C40F}\bigstar\) ABC237H,超级好题!注意到本质不同回文串不超过 \(n\) 个,上个 Dilworth 定理 然后网络流做完。
\(\color{#F1C40F}\bigstar\) P9481,关键在于类似 Floyd 处理第二类边。注意点细节就做完了。
\(\color{green}\bigstar\) ABC238G,简单哈希,随机然后三进制异或做完了。
7.29
当天过题数:\(3\)。
\(\color{#F1C40F}\bigstar\) P10739,致敬传奇构造题!致敬传奇耐调往!What can I say?
\(\color{red}\bigstar\) P5808,及其难写。
\(\color{green}\bigstar\) CF342C,简单的结论题。
7.30
当天过题数:\(3\)。
\(\color{#F1C40F}\bigstar\) ABC231H,很好的网络流题。
\(\color{green}\bigstar\) CF547C,简单莫反题。
\(\color{green}\bigstar\) CF1725E,枚举素数建出虚树随便算算即可。
7.31
当天过题数:\(5\)。
\(\color{green}\bigstar\) P3601,简单数学题。
\(\color{blue}\bigstar\) ABC235H,很好的 Kruskal+树上背包+poly 题。
\(\color{green}\bigstar\) ABC239H,其实是简单的整除分块+概率期望题,差点底力。
\(\color{green}\bigstar\) ABC240G,简单数数题。
\(\color{#F1C40F}\bigstar\) P10812,前缀和优化 dp,难点在于设计状态。