<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Candy&apos;s Blog</title><description/><link>https://candy0014.github.io</link><item><title>斜率优化 DP 学习笔记</title><link>https://candy0014.github.io/posts/study-convexhulloptimisation</link><guid isPermaLink="true">https://candy0014.github.io/posts/study-convexhulloptimisation</guid><description> </description><pubDate>Thu, 20 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;h3&gt;前置知识&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;线性 dp&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;斜率优化模板&lt;/h2&gt;
&lt;h3&gt;思路&lt;/h3&gt;
&lt;p&gt;若有一维的 dp 方程形如&lt;/p&gt;
&lt;p&gt;$$\large F(i)=\min_{j\in[0,i)}{f(j)-a_i\times d_j}$$&lt;/p&gt;
&lt;p&gt;其中 $f(j)$ 必须包含 $dp_j$ 且只与 $j$ 有关，$F(i)$ 必须包含 $dp_i$ 且只与 $i$ 有关&lt;/p&gt;
&lt;p&gt;且满足&lt;/p&gt;
&lt;p&gt;$$\large a_j\le a_i,d_j\le d_i(j&amp;lt;i)$$&lt;/p&gt;
&lt;p&gt;则暴力算需要 $O(n^2)$ 的时间复杂度。而且不能直接用单调队列优化，因为它有一个既包含 $i$ 又包含 $j$ 的项 $a_i\times d_j$。&lt;/p&gt;
&lt;p&gt;遇到这种方程，就可以用斜率优化来求解。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;考虑如何求出 $F(i)$ 的值。&lt;/p&gt;
&lt;p&gt;我们将原方程作一些换元&lt;/p&gt;
&lt;p&gt;$$\large b=F(i),y_j=f(j),k=a_i,x_j=d_j$$&lt;/p&gt;
&lt;p&gt;则原方程变为了&lt;/p&gt;
&lt;p&gt;$$\large b=\min_{j\in[0,i)}{y_j-k\times x_j}$$&lt;/p&gt;
&lt;p&gt;其中 $k$ 和 $x$ 是单调递增的。&lt;/p&gt;
&lt;p&gt;再令 $b_j=y_j-k\times x_j$，则 $F(i)=b=\min_{j\in[0,i)}b_j$。&lt;/p&gt;
&lt;p&gt;观察 $b_j$ 的表达式，可以发现 $b_j$ 刚好是「斜率为 $k$ 且过 $(x_j,y_j)$ 的直线」的截距。&lt;/p&gt;
&lt;p&gt;也就是说，如果我们能用 $O(1)$ 的时间算出最小的截距对应的 $j$，就能做到 $O(1)$ 转移，总体复杂度也就是 $O(n)$ 了。&lt;/p&gt;
&lt;p&gt;那么我们把所有 $j$ 对应的点 $P_j(x_j,y_j)$ 描出来，如下图就是一种 $i=5$ 时的情况：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-ConvexHullOptimisation/pic1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;注意，由于 $x$ 的单调递增，每个点是从左往右排的。&lt;/p&gt;
&lt;p&gt;容易发现，将一条斜率为 $k$ 的直线从下往上平移，直至碰到其中一个点，这时这条直线的截距 $b$ 最小，碰到的点的编号就是最佳转移的 $j$ 值。比如上图中的最佳转移的 $j$ 值就为 $3$。&lt;/p&gt;
&lt;p&gt;而显然，第一个碰到的点一定在这 $i-1$ 个点构成的下凸壳上，所以我们不需要枚举前面所有的 $(x,y)$，而只需要枚举在下凸壳上的 $(x,y)$ 即可。&lt;/p&gt;
&lt;p&gt;但是面对极端数据，这样的做法还是会达到 $O(n^2)$ 的时间复杂度，怎么办呢？&lt;/p&gt;
&lt;p&gt;我们发现上面还有一个斜率 $k$ 单调递增的条件没有用上。&lt;/p&gt;
&lt;p&gt;加上这个条件，我们发现这个碰到的点除了会在下凸壳上，而且它的编号还是单调不减的 &lt;s&gt;（感性理解一下）&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;那就好办了。每次找到下凸壳上会碰到的点后，将这个点之前的点全部从下凸壳删除，就可以保持总体 $O(n)$ 的时间复杂度（每个点最多被查询一次，就会被删除）。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;接下来就是一些实现的写法，由于用到了斜率来维护所以叫斜率优化。&lt;/p&gt;
&lt;p&gt;下面的说明中，$K(p1,p2)$ 代表第 $p1$ 和 $p2$ 个点所连成的直线的斜率。&lt;/p&gt;
&lt;p&gt;$X(p)$ 指上文提到的第 $p$ 个点所对的 $x=d_i$，$Y(p)$ 同理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一：如何查找下凸壳上第一个碰到的点，并删除之前的点&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;假设现在已经有的下凸壳是由，下标为 $q_l$ 至 $q_r$ 的点构成的（实际上就是一个单调队列，维护的是相邻2个点间的斜率递增），那么算出下标 $i$ 对应的 $k_i$。&lt;/p&gt;
&lt;p&gt;在 $q$ 中&lt;strong&gt;还有至少2个点&lt;/strong&gt;时，比较 $K(q_l,q_{l+1})$ 与 $k_i$ 的大小关系。若前者较小，则弹出队首 &lt;code&gt;l++&lt;/code&gt;。否则对应的 $l$ 就是我们要找的那个点。&lt;/p&gt;
&lt;p&gt;代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;double K(int p1,int p2){
	int x=X(p1),y=Y(p1),x2=X(p2),y2=Y(p2);
	return (y2-y)*1.0/(x2-x);
}
while(l&amp;lt;r&amp;amp;&amp;amp;K(q[l],q[l+1])&amp;lt;k[i]) l++;
//注意是l&amp;lt;r而不是l&amp;lt;=r
int j=q[l];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当然，开始时要存入一个编号为 $0$ 的点，也就是固定值 $dp_0$。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;q[++r]=0;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为了避免精度问题，也可以用乘法来比较斜率：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bool cmp1(int p1,int p2,int kk){
	int x=X(p1),y=Y(p1),x2=X(p2),y2=Y(p2);
	return (y2-y)&amp;lt;kk*(x2-x);
}
while(l&amp;lt;r&amp;amp;&amp;amp;cmp1(q[l],q[l+1],k[i])) l++;
//注意是l&amp;lt;r而不是l&amp;lt;=r
int j=q[l];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;二：如何维护下凸壳&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们在通过上面算出最佳的 $j$ 后，就可以对 $dp_i$ 进行转移。转移完以后，就可以算出对应的点 $P_i(x,y)$。&lt;/p&gt;
&lt;p&gt;在 $q$ 中&lt;strong&gt;还有至少2个点&lt;/strong&gt;时，比较 $K(q_{r-1},q_r)$ 和 $K(q_r,i)$ 的大小。若前者较大，则弹出队尾 &lt;code&gt;r--&lt;/code&gt;。否则退出循环，将第 $i$ 个点加入下凸壳 &lt;code&gt;q[++r]=i&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;double K(int p1,int p2){
	int x=X(p1),y=Y(p1),x2=X(p2),y2=Y(p2);
	return (y2-y)*1.0/(x2-x);
}
while(l&amp;lt;r&amp;amp;&amp;amp;K(q[r-1],q[r])&amp;gt;K(q[r],i)) r--;
//注意是l&amp;lt;r而不是l&amp;lt;=r
q[++r]=i;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改成乘法如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bool cmp2(int p1,int p2,int p3){
	int x=X(p1),y=Y(p1),x2=X(p2),y2=Y(p2),x3=X(p3),y3=Y(p3);
	return (y2-y)*(x3-x2)&amp;gt;(y3-y2)*(x2-x);
}
while(l&amp;lt;r&amp;amp;&amp;amp;cmp2(q[r-1],q[r],i)) r--;
//注意是l&amp;lt;r而不是l&amp;lt;=r
q[++r]=i;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;例题&lt;/h3&gt;
&lt;h4&gt;P3628 特别行动队&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3628&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;题意&lt;/h5&gt;
&lt;p&gt;给定一个长度为 $n$ 的序列 $x$，以及一个二次函数 $F(X)=A\cdot X^2+B\cdot X+C$。要求将序列分成若干段连续区间，一段区间 $[l,r]$ 的权值为 $F(\sum\limits_{i=l}^r x_i)$，求最大权值和。&lt;/p&gt;
&lt;h5&gt;思路&lt;/h5&gt;
&lt;p&gt;这题是一道斜率优化模板题。&lt;/p&gt;
&lt;p&gt;首先列出原始的 dp 方程：&lt;/p&gt;
&lt;p&gt;$$\large dp_i=\max_{j\in[0,i)}{dp_j+A\times(sum_i-sum_j)^2+B\times(sum_i-sum_j)+C}$$&lt;/p&gt;
&lt;p&gt;其中 $sum$ 表示 $x$ 的前缀和。&lt;/p&gt;
&lt;p&gt;化简之后得到：&lt;/p&gt;
&lt;p&gt;$$\large dp_i=\max_{j\in[0,i)}{dp_j+A\times sum_i^2-2A\times sum_isum_j+A\times sum_j^2+B\times sum_i-B\times sum_j+C}$$&lt;/p&gt;
&lt;p&gt;$$\large dp_i-A\times sum_i^2-B\times sum_i-C=\max_{j\in[0,i)}{dp_j+A\times sum_j^2-B\times sum_j-2A\times sum_isum_j}$$&lt;/p&gt;
&lt;p&gt;这时候，$y$，$k$，$x$，$b$ 的取值就能确定了：&lt;/p&gt;
&lt;p&gt;$$\large y=f(j)=dp_j+A\times sum_j^2-B\times sum_j$$&lt;/p&gt;
&lt;p&gt;$$\large k=a_i=2A\times sum_i$$&lt;/p&gt;
&lt;p&gt;$$\large x=d_j=sum_j$$&lt;/p&gt;
&lt;p&gt;$$\large b=dp_i-A\times sum_i^2-B\times sum_i-C$$&lt;/p&gt;
&lt;p&gt;$b$ 的取值虽然也确定了，但是程序中用不到，写出来就是为了好理解一些。&lt;/p&gt;
&lt;p&gt;然后就用上面的板子套就行了。&lt;/p&gt;
&lt;p&gt;唯一要注意的是，此题求的是最大值，所以需要将维护下凸壳改为维护上凸壳。具体方法是把两个 &lt;code&gt;cmp&lt;/code&gt; 函数里判断大小的符号改一下即可。&lt;/p&gt;
&lt;h5&gt;代码&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
//不开long long见祖宗
typedef long long ll;
ll n,a,b,c,s[1000005],dp[1000005],q[1000005],l=1,r=0;
ll Y(ll x){return dp[x]+a*s[x]*s[x]-b*s[x];}
ll K(ll x){return 2*a*s[x];}
ll X(ll x){return s[x];}
bool cmp1(ll p1,ll p2,ll kk){
	ll x=X(p1),y=Y(p1),x2=X(p2),y2=Y(p2);
	return (y2-y)&amp;gt;kk*(x2-x);//此处&apos;&amp;lt;&apos;改为&apos;&amp;gt;&apos;
}
bool cmp2(ll p1,ll p2,ll p3){
	ll x=X(p1),y=Y(p1),x2=X(p2),y2=Y(p2),x3=X(p3),y3=Y(p3);
	return (y2-y)*(x3-x2)&amp;lt;(y3-y2)*(x2-x);//此处&apos;&amp;gt;&apos;改为&apos;&amp;lt;&apos;
}
int main(){
	scanf(&quot;%lld%lld%lld%lld&quot;,&amp;amp;n,&amp;amp;a,&amp;amp;b,&amp;amp;c);
	q[++r]=0;
	for(ll i=1;i&amp;lt;=n;i++) scanf(&quot;%lld&quot;,&amp;amp;s[i]),s[i]+=s[i-1];
	for(ll i=1;i&amp;lt;=n;i++){
		while(l&amp;lt;r&amp;amp;&amp;amp;cmp1(q[l],q[l+1],K(i))) l++;
		ll j=q[l];
		dp[i]=dp[j]+a*(s[i]-s[j])*(s[i]-s[j])+b*(s[i]-s[j])+c;
		//通过最初的dp方程转移会清晰一点
		while(l&amp;lt;r&amp;amp;&amp;amp;cmp2(q[r-1],q[r],i)) r--;
		q[++r]=i;
	}
	printf(&quot;%lld\n&quot;,dp[n]);
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>CF37C Old Berland Language 题解</title><link>https://candy0014.github.io/posts/solution-cf37c</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-cf37c</guid><description> </description><pubDate>Fri, 21 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/CF37C&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codeforces.com/problemset/problem/37/C&quot;&gt;CF 传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;构造 $n$ 个 01 字符串，使得它们的长度依次为 $len_1,len_2,\ldots len_n$，并且不存在一个字符串是另一个字符串的前缀。&lt;/p&gt;
&lt;p&gt;输出这 $n$ 个字符串，或指出无解。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;学过哈夫曼编码的同学应该知道，这题等价于：构造一颗二叉树，使得它有 $n$ 个叶子，并且每个叶子的深度（从 0 开始）为 $len_1$ 到 $len_n$。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Solution-CF37C/pic1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如图（样例1），若将除了叶节点的每个节点，左儿子标上 0，右儿子标上 1，则从根到每个叶结点的路径上经过的数连起来，就是这个叶节点对应的字符串。&lt;/p&gt;
&lt;p&gt;那问题就变得简单了很多，只要在满二叉树上进行dfs遍历，碰到深度为 $len_1$ 到 $len_n$ 中某一个的节点，就把这个节点当成叶结点，并记录答案，不继续向下递归。&lt;/p&gt;
&lt;p&gt;若递归结束还有一些 $len$ 没有答案，就输出 NO。&lt;/p&gt;
&lt;p&gt;我用的是栈存每个 $len$ 对应的答案位置，所以代码比较简短，也顺利拿下洛谷最优解。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
int n,sum;//sum记录有多少个len有答案了 
stack&amp;lt;int&amp;gt;p[1005];
string ans[1005];
void dfs(string s){
	int len=s.length();//字符串的长度就是深度
	if(!p[len].empty()){//这个深度存在某个len没有答案 
		ans[p[len].top()]=s;//记录答案 
		p[len].pop(),sum++;
		if(sum==n){//找到了全部的答案 
			printf(&quot;YES\n&quot;); 
			for(int i=1;i&amp;lt;=n;i++) cout&amp;lt;&amp;lt;ans[i]&amp;lt;&amp;lt;&quot;\n&quot;;
			exit(0);
		}
		return;
	}
	dfs(s+&quot;0&quot;);dfs(s+&quot;1&quot;);//向下递归
}
int main(){
	scanf(&quot;%d&quot;,&amp;amp;n);
	for(int i=1,len;i&amp;lt;=n;i++){
		scanf(&quot;%d&quot;,&amp;amp;len);
		p[len].push(i);
	}
	dfs(&quot;&quot;);
	printf(&quot;NO\n&quot;);//递归结束也没有找到全部答案 
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>CF963B Destruction of a Tree 题解</title><link>https://candy0014.github.io/posts/solution-cf963b</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-cf963b</guid><description> </description><pubDate>Fri, 21 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/CF963B&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codeforces.com/problemset/problem/963/B&quot;&gt;CF 传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给定一颗 $n$ 个节点的树，每次可以删去任意一个度数为偶数的点。问能否通过若干次操作，把这棵树删光。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;容易发现，若一个节点 $u$ 的度数为偶数，且在以 $u$ 为根的这颗子树中，除了 $u$ 的每一个点的度数都为奇数，则可以直接按照 dfs 遍历的顺序删点。&lt;/p&gt;
&lt;p&gt;很明显，如果存在这样一个节点 $u$，那么直接删去以 $u$ 为根的子树，一定是最优的。&lt;/p&gt;
&lt;p&gt;感性理解一下，如果不把 $u$ 删去，那么 $u$ 的所有祖先都无法按照这种方式删去子树。&lt;/p&gt;
&lt;p&gt;所以我们可以用深搜来求解。用 $work(u)$ 函数表示：将以 $u$ 为根的子树删光，或者使得这棵子树内的每一个点度数均为奇数的删数方案记录。&lt;/p&gt;
&lt;p&gt;在 $work(u)$ 函数中，先将 $u$ 的每个儿子节点都进行 $work$ 的操作。操作之后若 $u$ 的度数为偶数，就删光这棵子树。&lt;/p&gt;
&lt;p&gt;最后，如果仍有点没被删除，就说明无解。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
int n;
int du[200005],vis[200005];
// du数组存每个点度数，vis数组为 1/0 代表此节点 有/无 被删去 
int head[200005],tot;
struct EDGE{int nex,to;}s[400005];
void add(int u,int v){
	s[++tot].nex=head[u],s[tot].to=v;
	head[u]=tot;
	du[u]++;
}
vector&amp;lt;int&amp;gt;ans;
void dfs(int u,int fa){
	vis[u]=1,ans.push_back(u);
	for(int i=head[u];i;i=s[i].nex){
		int v=s[i].to;
		if(v==fa||vis[v]) continue;//已经删掉的子节点不需要递归 
		dfs(v,u);
	}
}
void work(int u,int fa){
	for(int i=head[u];i;i=s[i].nex){
		int v=s[i].to;
		if(v==fa) continue;
		work(v,u);
	}
	if(du[u]%2==0){
		dfs(u,fa);//删光以u节点为根的子树 
		du[fa]--;//由于以u节点为根的子树已经处理完了，所以只需改变u父亲的度数即可 
	}
}
int main(){
	scanf(&quot;%d&quot;,&amp;amp;n);
	for(int i=1,u;i&amp;lt;=n;i++){
		scanf(&quot;%d&quot;,&amp;amp;u);
		if(u) add(i,u),add(u,i);
	}
	work(1,0);
	if(!vis[1]){ 
		printf(&quot;NO\n&quot;);
		return 0;
	}
	printf(&quot;YES\n&quot;);//若1号节点被删除了，其余肯定都被删除了 
	for(int i=0;i&amp;lt;n;i++) printf(&quot;%d\n&quot;,ans[i]);
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>TZOI 2023 复赛题目（初中组）</title><link>https://candy0014.github.io/posts/appendix-travelogue-tzoi-2023</link><guid isPermaLink="true">https://candy0014.github.io/posts/appendix-travelogue-tzoi-2023</guid><description> </description><pubDate>Wed, 02 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/posts/travelogue-tzoi-2023&quot;&gt;TZOI 2023 游记（初中组）&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;T1&lt;/h2&gt;
&lt;p&gt;平面上给定 $n$ 个点 $(x_i,y_i)$。依次加入这些点，问：当加到第几个点时，存在 $k$ 个点排成了一条直线，横着，竖着，斜着都可以。若最后都没有，输出 &lt;code&gt;-1&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;$1 \le k \le n \le 10^6$，$1 \le x_i,y_i \le 10^5$&lt;/p&gt;
&lt;h2&gt;T2&lt;/h2&gt;
&lt;p&gt;给定一个长度为 $n$ 的序列 ${a_i}$，问有多少对 $(i,j)$ 满足 $\dfrac{a_i}{2} \le a_j \le a_i$，注意，$i$ 不一定小于 $j$。&lt;/p&gt;
&lt;p&gt;$1 \le n \le 10^5$，$1 \le a_i \le 10^9$&lt;/p&gt;
&lt;h2&gt;T3&lt;/h2&gt;
&lt;p&gt;给定一个 $n \times m$ 的矩阵，问有多少个子矩阵满足子矩阵内所有元素相同。&lt;/p&gt;
&lt;p&gt;$1 \le n,m \le 10^3$&lt;/p&gt;
&lt;h2&gt;T4&lt;/h2&gt;
&lt;p&gt;给定一个长度为 $n$ 的互不相同的序列 ${a_i}$ 以及一个整数 $k\mid n$，定义一个好序列为：将这 $n$ 个数按每 $k$ 个一段分组，每一组的和单调递增。&lt;/p&gt;
&lt;p&gt;你现在可以做操作，一次操作可以把某个元素 $a_i$ 取出，插入到序列的任意位置。问最少几次操作可以使得 ${a}$ 数组成为一个好序列。&lt;/p&gt;
&lt;p&gt;$1 \le n \le 5 \times 10^3$&lt;/p&gt;
&lt;p&gt;求助 T4！！！过了一年，还是不会。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>TZOI 2023 游记（初中组）</title><link>https://candy0014.github.io/posts/travelogue-tzoi-2023</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-tzoi-2023</guid><description> </description><pubDate>Wed, 02 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2023-05-27 (DAY 0 / -7)&lt;/h2&gt;
&lt;p&gt;今天考初赛！&lt;/p&gt;
&lt;p&gt;早上早起去学校，包车去考场。在考场门口遇到了一堆好久不见的台州巨佬，聊了会儿天，就去考试了。&lt;/p&gt;
&lt;p&gt;今年试卷出的跟 shit 一样。选择题还好，后面就越来越懵逼：阅读程序出什么 gcd，线性筛，LIS，完善程序更离谱，甚至直接拿 &lt;a href=&quot;https://www.luogu.com.cn/problem/P1404&quot;&gt;P1404&lt;/a&gt; 的题解复制下来，挖几个空。 &lt;s&gt;（说实话这张试卷我花1小时都能出出来）&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;最后考 $98$ 分，选择题第二题基础知识蒙错了。 &lt;s&gt;（生动地告诉我们第一感觉一定是正确的）&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/user/368204&quot;&gt;SZC&lt;/a&gt; 巨佬顺利 AK，%%%。&lt;/p&gt;
&lt;p&gt;下午去某庄园和巨佬们玩了一下午，难得放松一下。&lt;/p&gt;
&lt;h2&gt;2023-06-03 (DAY 7 / 0)&lt;/h2&gt;
&lt;p&gt;今天考复赛！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://candy0014.icu/posts/appendix-travelogue-tzoi-2023&quot;&gt;2023-06-03 台州信息学初中组复赛题目&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;早上再次早起去学校，包车去考场。和巨佬们聊了会天，猜解压密码 &lt;code&gt;tzoi2023&lt;/code&gt;。监考老师好凶，在外面训大声讲话的训了半天。&lt;/p&gt;
&lt;p&gt;进考场，试解压密码，错了。密码是 &lt;code&gt;tzoi2023@&lt;/code&gt;……。&lt;/p&gt;
&lt;p&gt;考试开始，先开 T1。看起来和借教室很像，估计二分答案。敲了个二分，然后发现 &lt;code&gt;check&lt;/code&gt; 函数不会写了，想了 $5$ min 没进展，果断放弃，开 T2。&lt;/p&gt;
&lt;p&gt;T2 大水题，排序后双指针，$3$ min 敲完，开 T3。&lt;/p&gt;
&lt;p&gt;看到 T3 首先想到 $O(n^4)$ 的枚举，感觉 $40$ 分稳了，开始想正解。按照经验，这类题型好像大多要先求 $d$ 数组代表向下有几个和其相同的，开始手磨样例。发现可以通过 $d$ 数组计算出以每个节点为左上角的矩形个数，即它向右的相同字符的前缀最小值 $d$ 之和，成功做到 $O(n^3)$ 时间复杂度。然后发现可以把相同的一段一起算，即为这段内所有区间的 $d$ 最小值之和 &lt;s&gt;，做过原题&lt;/s&gt; ，想到用单调栈求解。最后 $O(n^2)$ 成功拿下，共花费 $40$ 分钟，思路代码四六开。&lt;/p&gt;
&lt;p&gt;T4 一看题面就觉得不简单，暴力都没思路，回头看 T1。&lt;/p&gt;
&lt;p&gt;这时才发现 T1 中那句“横着，竖着，斜着都可以”中“斜着”似乎理解成 $45$ 度角，样例能过，但很不确定。先敲了一下打算碰碰运气。&lt;/p&gt;
&lt;p&gt;后面 $45$ 分钟全在想 T1 和 T4 的正解，结果啥也没写出来。预估得分 $0+100+100+0=200$ 分。&lt;/p&gt;
&lt;p&gt;出了考场问了下巨佬的情况，结果普遍没写出 T4，都是输出 $0$ 或 $1$ 完事。第三题 &lt;a href=&quot;https://www.luogu.com.cn/user/410239&quot;&gt;XHG&lt;/a&gt; 巨佬和我思路一样，甚至给出了洛谷蓝色原题 &lt;a href=&quot;https://www.luogu.com.cn/problem/P1950&quot;&gt;P1950&lt;/a&gt;，看了下题解，居然是正解！ &lt;s&gt;（我太伟大了）&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;T1 的争议比较大，题意实在是不清楚，不知道是 $45$ 度还是任意度数。问了下老师，说如果是任意度数就没有正经做法，稍微放心了点。T2 也有争议，如果按照题面 $(i,j)$ 的理解，应该是有序数对，但按照第4组样例，应该是无序数对，我是按样例来的，不知道最后对不对。&lt;/p&gt;
&lt;h2&gt;2023-06-05 (DAY 9 / 2)&lt;/h2&gt;
&lt;p&gt;今天出成绩！&lt;/p&gt;
&lt;p&gt;最后 $100+100+100+0=300$ 分，第一题过了，和估分一样，没挂分。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>Study-PAM</title><link>https://candy0014.github.io/posts/study-pam</link><guid isPermaLink="true">https://candy0014.github.io/posts/study-pam</guid><description> </description><pubDate>Fri, 18 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;h3&gt;前置芝士&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;字典树&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h3&gt;一些约定&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;文中所有的字符串下标均从 $1$ 开始。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文中的 $i,j$ 下标，如无特殊说明，分别指「字符串的下标」和「回文树节点的下标」，$S_i$ 表示字符串 $S$ 的第 $i$ 个字符，$tr_j$ 表示回文树的第 $j$ 个节点。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;定义&lt;/h2&gt;
&lt;p&gt;回文树跟字典树一样，都是用树形结构存储一些字符串，但字典树存储的是若干毫不相干的字符串，而回文自动机存储的是一个字符串中，所有的回文子串。&lt;/p&gt;
&lt;p&gt;那么我们考虑回文树的存储方式。&lt;/p&gt;
&lt;p&gt;回文树中存储的都是回文串，那么很容易想到将回文串折半进行存储。&lt;/p&gt;
&lt;p&gt;但这样有个小问题，就是奇偶长度回文串的折半方式并不一样。既然一颗树存储不了，那就开两棵树啊。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如上图：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;设以 $1$ 号点为根的树是奇数长度回文串的树，则节点 $2,3,6$ 分别对应子串 $\texttt{A,B,BAB}$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设以 $0$ 号点为根的树是偶数长度回文串的树，则节点 $4,5$ 分别对应子串 $\texttt{BB,ABBA}$。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些回文串刚好对应了原串 $S$ 的所有回文子串：$\texttt{A,B,BB,ABBA,BAB}$（相同的回文子串只算一次）。&lt;/p&gt;
&lt;p&gt;从这个例子中还可以发现，设 $tr_j$ 是 $tr_j$ 父亲的 $x$ 字符子节点，则 $tr_j$ 所对应的字符串，总是在 $tr_j$ 父亲所对应的字符串两边同时添加一个 $x$ 字符所得到。&lt;/p&gt;
&lt;p&gt;如图中的 $tr_6$ 是 $tr_2$ 的 $\texttt{B}$ 类子节点，则 $tr_6$ 所对应的字符串 $\texttt{ABA}$ 就是在 $tr_2$ 所对应的字符串 $\texttt{A}$ 两边同时添加一个 $B$ 字符所得到。&lt;/p&gt;
&lt;p&gt;接下来就要尝试构造这两棵树。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;构造&lt;/h2&gt;
&lt;h3&gt;插入&lt;/h3&gt;
&lt;p&gt;首先证明一个 &lt;s&gt;不那么&lt;/s&gt; 显然的引理：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;每在字符串末尾增加一个字母，回文子串的数量至多会增加 $1$。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;证明很简单，可以使用反证法。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic2.png&quot; alt=&quot;2.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;设增加的字母为 $S_i$，且以 $S_i$ 为结尾的新增回文子串至少有两个。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic3.png&quot; alt=&quot;3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;那么根据回文串的性质，「回文串2」在通过「回文串1」中线对称后的「回文串3」和「回文串2」完全相同，也就是说「回文串2」在插入 $S_i$ 之前就已经存在了。&lt;/p&gt;
&lt;p&gt;也就是说，我们可以每次在原字符串末尾增加一个字符，再进行更新回文树。&lt;/p&gt;
&lt;p&gt;假设我们现在在插入 $S_i$，容易发现，在以 $i$ 为结尾的每一个回文串中，只有最长的那个才有可能成为新增回文串。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic4.png&quot; alt=&quot;4.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;显然，这个「以 $i$ 结尾的最长回文串」是在「以 $i-1$ 结尾的某个回文串」的两边各增加一个相同的字符得到的（图中红色线段为相同字符）。即，我们需要找到「以 $i-1$ 结尾的最长回文串」满足这个回文串的左右两个字符是相同的，我们暂且将这种字符串称为“可拓展的”。&lt;/p&gt;
&lt;p&gt;而「以 $i-1$ 结尾的某个回文串」一定已经在回文树上存储过，那么我们只需在这个「以 $i-1$ 结尾的某个回文串」所对应的节点下新增一个 $S_i$ 节点即可。&lt;/p&gt;
&lt;p&gt;接下来的目标，就是找到要往哪个节点下增加一个子节点。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;由于回文树的每个节点都对应一个回文串，所以我们可以为 $tr_j$ 确定一个长度，用 $len_j$ 来保存。容易发现，树上每个节点的 $len$ 值，都等于其父亲节点 $len$ 值增加 $2$。为了方便，对于点 $0,1$ 的 $len$ 值，我们分别设置成 $0,-1$。&lt;/p&gt;
&lt;p&gt;假设我们现在在插入 $S_i$，那么假设以第 $i-1$ 个点结尾的每一个回文串中最长的那个，所对应在回文树上的节点为 $last$。特别地，一开始 $last$ 的值设为 $1$。&lt;/p&gt;
&lt;p&gt;如果我们运气特别好，${S_{i-len_{last}-1}}$ 恰好等于 ${S_i}$，则「以 $i-1$ 结尾的最长回文串」就是可拓展的，那么我们显然可以直接将 $S_i$ 加在 $tr_{last}$ 下面。&lt;/p&gt;
&lt;p&gt;举个栗子：假如我们要插入 $S=\texttt{ABBAB}$ 中的第 $4$ 个字符 $\texttt{A}$，那么我们已经建好了 $S$ 前 $3$ 个字符构成的回文树。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic5.png&quot; alt=&quot;5.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此时要插入的 $S_i=S_4$，以 $S_{i-1}=S_3$ 为结尾的「最长回文子串」是 $\texttt{BB}$，长度 $len=2$，所以 $last=4$。&lt;/p&gt;
&lt;p&gt;可以发现，${S_{i-len_{last}-1}=S_{4-2-1}=S_1=\texttt{A}=S_i}$，也就是说 $\texttt{BB}$ 这个回文子串是可拓展的，所以我们就可以在 $\texttt{BB}$ 的两边各增加一个 $\texttt{A}$ 字符，变成 $\texttt{ABBA}$，即为以 $S_i$ 为结尾的「最长回文子串」，那么就可以把 $S_i=\texttt{A}$ 直接加在 $tr_{last}$ 下面。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;但在大部分情况中，这个式子是不成立的。这个式子本质是：在以 $S_{i-1}$ 为结尾的「最长回文子串」两边拓展一个字符，此时「最长的回文子串」拓展不了，自然而然地，就会想到用「第二长的回文子串」。若「第二长的子串」还是拓展不了，就用「第三长的」，以此类推。&lt;/p&gt;
&lt;p&gt;容易发现,「第二长的回文子串」即为「最长回文子串」的最长回文后缀，而「第三长的回文串」即为「第二长的回文子串」的最长回文后缀，依次类推。&lt;/p&gt;
&lt;p&gt;也就是说，我们只要记录每个回文串的「最长回文后缀」，如果当前子串不能拓展，就通过“跳跃”到其最长回文后缀，来找到最长的能拓展的回文子串。我们把这个过程叫做后缀链跳跃。&lt;/p&gt;
&lt;p&gt;我们在每个节点 $j$ 上记录一个指针 $fail_j$，指向其代表的回文串的「最长回文后缀」在回文树上对应的节点。特别地，规定 $fail_0=1,fail_1=0$。&lt;/p&gt;
&lt;p&gt;再举个栗子：假如我们要插入 $S=\texttt{ABBAB}$ 中的第 $5$ 个字符 $\texttt{B}$，那么我们已经建好了 $S$ 前 $4$ 个字符构成的回文树。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic6.png&quot; alt=&quot;6.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此时要插入的 $S_i=S_5$，以 $S_{i-1}=S_4$ 为结尾的「最长回文子串」是 $\texttt{ABBA}$，长度 $len=4$，所以 $last=5$。&lt;/p&gt;
&lt;p&gt;此时，${S_{i-len_{last}-1}=S_{5-4-1}=S_0=\varnothing \neq S_i}$，则「以 $i-1$ 结尾的最长回文串」不可拓展，所以考虑用以 $S_4$ 结尾的「第二长回文子串」，即「最长回文子串」 $\texttt{ABBA}$ 的最长回文后缀，也就是 $fail_{last}=fail_5$ 指向的 $tr_2$ 所对应的字符串 $\texttt{A}$，它的 $len=1$。&lt;/p&gt;
&lt;p&gt;我们检查能否在回文串 $\texttt{A}$ 两边进行一次拓展，即判断 ${S_{5-len_2-1}=S_{5-1-1}=S_3=\texttt{A}=S_i}$，可以拓展，我们就可以在 $tr_2$ 的下面新建一个节点。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;fail 指针&lt;/h3&gt;
&lt;p&gt;现在还有最后一个问题，就是插入节点后，如何计算其的 $fail$ 指针。&lt;/p&gt;
&lt;p&gt;这个过程和找可以拓展的「最长回文后缀」是非常相近的，只不过找「最长回文后缀」时，是从 $tr_{last}$ 开始后缀链跳跃，而找 $tr_j$ 的 $fail$ 指针时，是从 $fail_{fa(tr_j)}$ 开始进行后缀链跳跃。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic7.png&quot; alt=&quot;7.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如图，我们要找的就是「$v$ 的最长回文后缀」，而「$v$ 的最长回文后缀」就是又「$u$ 的某个回文后缀」的两边加上两个一样的字符得到的。&lt;/p&gt;
&lt;p&gt;那么这个「$u$ 的某个回文后缀」就是 $u$ 的最长可拓展后缀，其求法和之前插入节点的做法完全相同。&lt;/p&gt;
&lt;p&gt;虽然 $u$ 所对应的节点就是 $tr_j$ 的父亲节点，但由于「$u$ 的某个回文后缀」是&lt;strong&gt;严格的后缀&lt;/strong&gt;，所以不能直接从 $tr_j$ 的父亲节点开始跳，而是要从 $fail_{fa(tr_j)}$ 开始跳，否则得到的可拓展后缀就不是严格的了。&lt;/p&gt;
&lt;p&gt;值得注意的是，若 $tr_j$ 的父亲节点是 $1$ 号节点，则 $tr_j$ 所对应的回文串只有一个字符，那么就令 $tr_j$ 的 $fail$ 指针指向 $0$ 号节点，毕竟空串是所有字符串的后缀。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;构造过程模拟&lt;/h3&gt;
&lt;p&gt;最后，让我们把插入 $S=\texttt{ABBAB}$ 的全过程模拟一遍。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic8.png&quot; alt=&quot;8.png&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初始状态：只有 $tr_1$ 和 $tr_0$，$len$ 值分别为 $-1$ 和 $0$，$fail$ 指针分别指向 $0$ 和 $1$。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic9.png&quot; alt=&quot;9.png&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;插入 $S=\texttt{ABBAB}$ 中的第 $1$ 个字符 $\texttt{A}$，并且此时 $last$ 指向 $1$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;由于 ${S_{i-len_1-1}=S_{1-(-1)-1}=S_1=\texttt{A}=S_1=S_i}$，所以直接在 $tr_1$ 下面新建一个 $\texttt{A}$ 节点（$tr_2$）即可，节点所对的回文串的 $len$ 值为 $(-1)+2=1$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进行此节点 $fail$ 指针的计算：$tr_2$ 的父亲节点是 $tr_1$，则直接将 $fail_2$ 指向 $0$ 号节点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后更新 $last$ 指针指向 $2$。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic10.png&quot; alt=&quot;10.png&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;插入 $S=\texttt{ABBAB}$ 中的第 $2$ 个字符 $\texttt{B}$，那么我们已经建好了 $S$ 前 $1$ 个字符构成的回文树，并且此时 $last$ 指向 $2$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;此时 ${S_{i-len_2-1}=S_{2-1-1}=S_0=\varnothing \neq S_2=S_i}$，所以接着判断 $fail_2$ 指向的 $tr_0$。
此时 ${S_{2-len_0-1}=S_{2-0-1}=S_1=\texttt{A} \neq S_2=S_i}$，所以接着判断 $fail_0$ 指向的 $tr_1$。
由于 ${S_{2-len_1-1}=S_{2-(-1)-1}=S_2=\texttt{B}=S_2=S_i}$，所以在 $tr_1$ 下面新建一个 $\texttt{B}$ 节点（$tr_3$）即可，节点所对的回文串的 $len$ 值为 $(-1)+2=1$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进行此节点 $fail$ 指针的计算：$tr_3$ 的父亲节点是 $tr_1$，则直接将 $fail_3$ 指向 $0$ 号节点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后更新 $last$ 指针指向 $3$。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic11.png&quot; alt=&quot;11.png&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;插入 $S=\texttt{ABBAB}$ 中的第 $3$ 个字符 $\texttt{B}$，那么我们已经建好了 $S$ 前 $2$ 个字符构成的回文树，并且此时 $last$ 指向 $3$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;此时 ${S_{i-len_3-1}=S_{3-1-1}=S_1=\texttt{A} \neq S_3=S_i}$，所以接着判断 $fail_3$ 指向的 $tr_0$。
由于 ${S_{i-len_0-1}=S_{3-0-1}=S_2=\texttt{B}=S_3=S_i}$，所以在 $tr_0$ 下面新建一个 $\texttt{B}$ 节点（$tr_4$）即可，节点所对的回文串的 $len$ 值为 $0+2=2$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进行此节点 $fail$ 指针的计算：$tr_4$ 的父亲节点是 $tr_0$，所以从 $fail_0$ 指向的 $tr_1$ 开始判断。
由于 $S_{3-len_1-1}=S_{3-(-1)-1}=S_3=\texttt{B}=S_3=S_i$，匹配成功，所以将 $fail_4$ 指向 $tr_1$ 的 $\texttt{B}$ 儿子 $3$ 号节点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后更新 $last$ 指针指向 $4$。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic12.png&quot; alt=&quot;12.png&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;插入 $S=\texttt{ABBAB}$ 中的第 $4$ 个字符 $\texttt{A}$，那么我们已经建好了 $S$ 前 $3$ 个字符构成的回文树，并且此时 $last$ 指向 $4$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;由于 ${S_{i-len_4-1}=S_{4-2-1}=S_1=\texttt{A}=S_4=S_i}$，所以直接在 $4$ 号节点下面新建一个 $\texttt{A}$ 节点（$tr_5$）即可，节点所对的回文串的 $len$ 值为 $2+2=4$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进行此节点 $fail$ 指针的计算：$tr_5$ 的父亲节点是 $tr_4$，所以从 $fail_4$ 指向的 $tr_3$ 开始判断。
此时 ${S_{4-len_3-1}=S_{4-1-1}=S_2=\texttt{B} \neq S_4=S_i}$，所以接着判断 $fail_3$ 指向的 $tr_0$。
此时 ${S_{4-len_0-1}=S_{4-0-1}=S_3=\texttt{B} \neq S_4=S_i}$，所以接着判断 $fail_0$ 指向的 $tr_1$。
由于 ${S_{4-len_1-1}=S_{4-(-1)-1}=S_4=\texttt{A}=S_4=S_i}$，匹配成功，所以将 $fail_5$ 指向 $tr_1$ 的 $\texttt{A}$ 儿子 $2$ 号节点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后更新 $last$ 指针指向 $5$。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Study-PAM/pic13.png&quot; alt=&quot;13.png&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;插入 $S=\texttt{ABBAB}$ 中的第 $5$ 个字符 $\texttt{B}$，那么我们已经建好了 $S$ 前 $4$ 个字符构成的回文树，并且此时 $last$ 指向 $5$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;此时 ${S_{i-len_5-1}=S_{5-4-1}=S_0=\varnothing \neq S_5=S_i}$，所以接着判断 $fail_5$ 指向的 $tr_2$。
由于 ${S_{5-len_2-1}=S_{5-1-1}=S_3=\texttt{B}=S_5=S_i}$，所以在 $tr_2$ 下面新建一个 $\texttt{B}$ 节点（$tr_6$）即可，节点所对的回文串的 $len$ 值为 $1+2=3$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进行此节点 $fail$ 指针的计算：$tr_6$ 的父亲节点是 $tr_2$，所以从 $fail_2$ 指向的 $tr_0$ 开始判断。
此时 ${S_{5-len_0-1}=S_{5-0-1}=S_4=\texttt{A} \neq S_5=S_i}$，所以接着判断 $fail_0$ 指向的 $tr_1$。
由于 ${S_{5-len_1-1}=S_{5-(-1)-1}=S_5=\texttt{B}=S_5=S_i}$，匹配成功，所以将 $fail_6$ 指向 $tr_1$ 的 $\texttt{B}$ 儿子 $3$ 号节点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后更新 $last$ 指针指向 $6$。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;模板代码&lt;/h2&gt;
&lt;p&gt;在这里先给出 &lt;code&gt;init&lt;/code&gt; 初始化函数和 &lt;code&gt;insert&lt;/code&gt; 插入节点函数的代码。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;string s;//原字符串 
int tot,last;
//tot的定义同字典树，last为 以上一个字符为结尾的最长回文子串 在回文树上所对应的节点编号 
struct TREE{
	int son[26];
	int len;//此节点所对应回文串的长度 
	int fail;//此节点所对应回文串的最长回文后缀 
} tr[N];
void init(){//初始化 
	tr[1].len=-1,tr[0].len=0;//tr[1],tr[0]的len分别为-1,0
	tr[1].fail=0,tr[0].fail=1;//tr[1],tr[0]的fail指针分别指向0,1 
	tot=1,last=1;//last初始化成1 
}
int getfail(int x,int i){//进行后缀链跳跃，找到以i-1结尾的最长的可以两边拓展的回文串 
	while(s[i-tr[x].len-1]!=s[i]){
		x=tr[x].fail;//继续判断x节点所对应回文串的最长回文后缀 
	}
	return x;
}
void insert(int x,int i){//插入节点 
	int fa=getfail(last,i);//找要接在哪个节点下面 
	int j=tr[fa].son[x];//j是当前节点 
	if(!j){//需要新建节点 
		j=++tot;
		tr[fa].son[x]=j;
		tr[j].len=tr[fa].len+2;//更新len 
		int tmp=getfail(tr[fa].fail,i);//找fail指针的父亲 
		if(fa!=1) tr[j].fail=tr[tmp].son[x];
	}
	last=j;//更新last 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;常见应用&lt;/h2&gt;
&lt;h3&gt;有关每个回文子串长度和出现次数&lt;/h3&gt;
&lt;p&gt;先对这个回文串建出回文树，回文串的长度在建回文树的时候已经求好了，所以关键是求每个回文子串的出现次数。&lt;/p&gt;
&lt;p&gt;假设我们现在要求回文子串 $T$ 的出现次数。&lt;/p&gt;
&lt;p&gt;由于回文树上存储的是以每个字符结尾的&lt;strong&gt;最长&lt;/strong&gt;回文子串，所以我们可以把 $T$ 的出现次数分成两类：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;$T$ 是以 $i$ 结尾的最长回文子串。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;$T$ 是以 $i$ 结尾的回文子串，但不是最长的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对于第一类，$T$ 的出现次数即为它在回文树上被统计的次数。&lt;/p&gt;
&lt;p&gt;对于第二类，$T$ 的出现次数是「以 $T$ 为最长回文后缀的回文串」的出现次数之和，即所有 $fail$ 指针指向 $T$ 的回文串数量之和。&lt;/p&gt;
&lt;p&gt;由于 $fail$ 指针总是指向下标比它小的节点，所以我们只需倒序枚举所有回文树节点，就能递推算出每个回文串的出现次数。&lt;/p&gt;
&lt;p&gt;代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;void insert(int x,int i){
	int fa=getfail(last,i);
	int j=tr[fa].son[x];
	if(!j){
		j=++tot;
		tr[fa].son[x]=j;
		tr[j].len=tr[fa].len+2; 
		int tmp=getfail(tr[fa].fail,i);
		if(fa!=1) tr[j].fail=tr[tmp].son[x];
	}
	tr[j].cnt++;//统计第一类出现次数 
	last=j;
}

for(int i=tot;i&amp;gt;=2;i--){
	tr[tr[i].fail].cnt+=tr[i].cnt;
}//统计第二类出现次数
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h4&gt;例题：P3649 [APIO2014] 回文串&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P3649&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;题意&lt;/h5&gt;
&lt;p&gt;给定一个字符串，求：所有回文子串中，长度乘上出现次数的最大值。&lt;/p&gt;
&lt;h5&gt;思路&lt;/h5&gt;
&lt;p&gt;这题算是回文树的模板题了。直接对于所有不同回文串，求出其长度和出现次数，乘起来取最大就行了。&lt;/p&gt;
&lt;h5&gt;代码&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long long ll;
const int N=300005;
string s;//原字符串 
int n;
int tot,last;
//tot的定义同字典树，last为 以上一个字符为结尾的最长回文子串 在回文树上所对应的节点编号 
struct TREE{
	int son[26];
	int len;//此节点所对应回文串的长度 
	int fail;//此节点所对应回文串的最长回文后缀 
	int cnt;//此节点所对应回文串的第一类出现次数 
} tr[N];
void init(){//初始化 
	tr[1].len=-1,tr[0].len=0;//tr[1],tr[0]的len分别为-1,1
	tr[1].fail=0,tr[0].fail=1;//tr[1],tr[0]的fail指针分别指向0,1 
	tot=1,last=1;//last初始化成1 
}
int getfail(int x,int i){//进行后缀链跳跃，找到以i-1结尾的最长的可以两边拓展的回文串 
	while(s[i-tr[x].len-1]!=s[i]){
		x=tr[x].fail;//继续判断x节点所对应回文串的最长回文后缀 
	}
	return x;
}
void insert(int x,int i){//插入节点 
	int fa=getfail(last,i);//找要接在哪个节点下面 
	int j=tr[fa].son[x];//j是当前节点 
	if(!j){//需要新建节点 
		j=++tot;
		tr[fa].son[x]=j;
		tr[j].len=tr[fa].len+2;//更新len 
		int tmp=getfail(tr[fa].fail,i);//找fail指针的父亲 
		if(fa!=1) tr[j].fail=tr[tmp].son[x];
	}
	tr[j].cnt++;//统计第一类出现次数 
	last=j;//更新last 
}
int main(){
	cin&amp;gt;&amp;gt;s;
	n=s.length(),s=&quot; &quot;+s;
	init();
	for(int i=1;i&amp;lt;=n;i++){
		insert(s[i]-&apos;a&apos;,i);
	}
	for(int i=tot;i&amp;gt;=2;i--){
		tr[tr[i].fail].cnt+=tr[i].cnt;
	}//统计第二类出现次数
	ll ans=0;
	for(int i=2;i&amp;lt;=tot;i++){
		ans=max(ans,1ll*tr[i].len*tr[i].cnt);
	}//统计答案 
	printf(&quot;%lld\n&quot;,ans);
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>2023-07 千岛湖环湖骑行游记</title><link>https://candy0014.github.io/posts/travelogue-cycling-qiandaolake-2023</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-cycling-qiandaolake-2023</guid><description> </description><pubDate>Mon, 21 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2023-??-?? (DAY -?)&lt;/h2&gt;
&lt;p&gt;大概是因为骑车是我的第二爱好吧，很早就有了去骑一次长途的想法，而浙江省内，要说环境最优美，距离也合适的骑行路线，当属千岛湖环湖骑行路线了。&lt;/p&gt;
&lt;p&gt;千岛湖，即新安江水库，是浙江省内最大的淡水湖，也是最大的饮用水资源地，总面积达 $982 \text{km}^2$，共有大小岛屿 $1078$ 个，她也因此得名。&lt;/p&gt;
&lt;p&gt;同时，她也是一个将自然美景，人文特色，旅游放松完美融合的一个人间仙境。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic1.jpg&quot; alt=&quot;1.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;千岛湖西南湖区，也是主湖区，环线共 $140 \text{km}$，被誉为&lt;strong&gt;骑行天堂&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在这里，欣赏到翠岛峰峦，山水相映的美景的同时，周围的连绵不断的丘陵也给骑行带来了极大的挑战性。环线高低起伏，总爬升达到了 $704 \text{m}$，不乏有几个连着的长上坡。虽然听着困难，但这更激起了我去千岛湖骑行的心。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic2.jpg&quot; alt=&quot;2.jpg&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;2023-06-30 (DAY -1)&lt;/h2&gt;
&lt;p&gt;约上 XMY，从临海出发，经过几个小时的车程，到达酒店时已是晚上十一点了，便赶紧睡觉，养足精神，准备明天的骑行。&lt;/p&gt;
&lt;h2&gt;2023-07-01 (DAY 0)&lt;/h2&gt;
&lt;p&gt;早晨起来，虽然因为下雨推迟了几个小时的骑行，但也给了我们足够的时间欣赏千岛湖的美景。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic3.jpg&quot; alt=&quot;3.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;虽说当时还在下雨，但清晨的千岛湖仍有一番别样的韵味。&lt;/p&gt;
&lt;p&gt;远处的群山好似一幅淡雅的水墨画，将天空和湖水分隔开来。下面，湖水看不见底，平静的时候，便把雾蒙蒙的天空反射入我的眼中，但更多的是泛着阵阵涟漪，与顺着脸划过去的清风相呼应，在阳台上闭眼小憩，仿佛丢去了一切负担。上方，悠悠的浮云缓慢移动着，也学湖水一样荡起波涛，使人分不清天空与湖水。天空，湖水，群山，小岛，错落而又不失美感，令人陶醉其中。&lt;/p&gt;
&lt;p&gt;早上十一点，我和 XMY 正式从秀水广场出发。没过多长时间，就到了千岛湖淳杨线绿道的起点。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic4.jpg&quot; alt=&quot;4.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;淳杨线开始时大多是在小树林中穿梭，绿道一边绿树成荫，延伸到前方不远处的转角，另一边可以看到千岛湖的一角，水中的小岛甚是可爱，美不胜收。离湖畔近时，可以隐约听见波涛轻轻拍打湖岸的声音，规律而不单调，为骑行减小了许多压力。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic5.jpg&quot; alt=&quot;5.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;吃过中饭，迎接我们的就是这次骑行最大的爬坡，爬升超过了 $100 \text{m}$。骑行在宽阔而又陡峭的路面上，我不敢向上看，只能咬着牙，感受汗珠带着热量从下巴上滴落。实在感觉踩不动踏板了，就换个低一点的挡继续踩，不能停下。就算偶尔休息半分钟，也不能休息太久，否则听 XMY 说的，大腿内乳酸堆积，待会儿骑起来更累。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic6.jpg&quot; alt=&quot;6.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;幸好在最长上坡的背后，就是最长的下坡。没几秒钟，就已经从最低的挡换到了最高的，轻轻蹬几下，给车一个初速度，它就越冲越快，瞄了一眼手机，速度更是达到了不敢想象的 $53 \text{km/h}$。我忍不住丢掉车把，张开双臂，感受着耳边呼啸的风声。正所谓「上坡有多“爽”，下坡就有多爽」。&lt;/p&gt;
&lt;p&gt;我们在千岛湖的汾口镇结束了 DAY 1 的行程。&lt;/p&gt;
&lt;h2&gt;2023-07-02 (DAY 1)&lt;/h2&gt;
&lt;p&gt;第二天的行程基本和第一天一样。&lt;/p&gt;
&lt;p&gt;在又一次经历长爬坡后，我们到达了竹里村观景台。这里是第二天骑行的制高点，在观景台上往下看，千岛湖的美景尽收眼底。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic7.jpg&quot; alt=&quot;7.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic8.jpg&quot; alt=&quot;8.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;下了山，刚好发现亚运会的自行车场馆就在附近，便一起去里面逛了一圈。这才想起之前遇到的一列车队，一看就都是顶级的车，骑得飞快，估计就是为了亚运会来千岛湖拉练的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Travelogue-Cycling-QianDaoLake-2023/pic9.gif&quot; alt=&quot;9.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;又是一天的劳累后，我们又回到了当时出发的秀水广场。&lt;/p&gt;
&lt;h2&gt;2023-07-?? (DAY ?)&lt;/h2&gt;
&lt;p&gt;现在再想起这次艰难的骑行，我之所以感到快乐，似乎不是因为骑行了 $144.4 \text{km}$ 后获得的成就感，而是每时每刻都在进行的，享受大自然的过程。&lt;/p&gt;
&lt;p&gt;在骑行中，享受每一缕阳光，享受每一阵清风，享受每一丝空气，享受每一股瀑布；在双脚交替踩踏时，享受每一次爬坡，享受每一个弯道，享受每一次登顶，享受每一次失败；更重要的是，当你将自己也融入到大自然中时，你就可以享受你自己，享受生活。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;骑行，不在乎目的地，在乎的是一颗自由的心和沿途的美景。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded><author>candy0014</author></item><item><title>CF276E Little Girl and Problem on Trees 题解</title><link>https://candy0014.github.io/posts/solution-cf276e</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-cf276e</guid><description> </description><pubDate>Wed, 06 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/CF276E&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codeforces.com/problemset/problem/276/E&quot;&gt;CF 传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给定一颗以 $1$ 号节点为根的树，除了根节点的其它节点的度数不超过 $2$。&lt;/p&gt;
&lt;p&gt;树有点权，初始均为 $0$。&lt;/p&gt;
&lt;p&gt;需要实现两种操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;将离 $u$ 节点 $d$ 单位以内的节点点权加上 $x$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查询 $u$ 节点的点权。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;题意看着挺含蓄，什么节点度数不超过 $2$，就是 $1$ 号节点下面挂了一堆链，如下图为样例 $2$ 的图。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Solution-CF276E/pic1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;我们不妨将它横着画出来。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Solution-CF276E/pic2.png&quot; alt=&quot;2.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;考虑第一种操作即修改操作如何维护。&lt;/p&gt;
&lt;p&gt;例如我们要将样例 $2$ 中，将离 $5$ 节点 $3$ 单位以内的节点点权加上 $1$，那么我们要修改的部分分为以下蓝、紫、绿 $3$ 个区域。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Solution-CF276E/pic3.png&quot; alt=&quot;3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;其中蓝色部分，即 $1$ 号节点部分，单独开一个变量保存即可。而绿色区域，即位于自身那条链内的部分，可以对每条链开一个树状数组来实现。&lt;/p&gt;
&lt;p&gt;而紫色部分，由于是每条链的前几个节点全部加 $x$，所以可以开一个全局的树状数组来实现。&lt;/p&gt;
&lt;p&gt;为了不重复加，绿色区域的左端点要和紫色区域的右端点取 $\max$。&lt;/p&gt;
&lt;p&gt;第二种操作即查询，直接将 $u$ 节点在链内树状数组所对应的值，加上它全局树状数组所对应的值即可。&lt;/p&gt;
&lt;p&gt;最后，这两种操作，若操作的对象 $u$ 是 $1$ 号节点，则需要特殊处理。&lt;/p&gt;
&lt;p&gt;对每一个分支开一个树状数组，若直接每个树状数组大小都开到 $n$，显然空间很容易炸，所以可以用 vector 来代替数组。&lt;/p&gt;
&lt;p&gt;当然也可以给每个分支分配一个区间，最后开一个树状数组 &lt;s&gt;，但是懒得写了&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;其它的细节可以看代码。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
int n,ca;
int head[100005],tot;
struct EDGE{
	int nex,to;
} e[200005];
void add(int u,int v){
	e[++tot].nex=head[u];
	e[tot].to=v;
	head[u]=tot;
}
int cnt,ans1,de[100005],id[100005];
//分别代表：1节点后的子树个数，1节点的答案，每个点在树状数组中的位置即其深度，每个点所在树状数组编号 
vector&amp;lt;int&amp;gt; sum[100005];//若干个树状数组，其中sum[0]代表全局加的树状数组 
void dfs(int u,int fa,int idd){//预处理de,id,sum数组 
	sum[idd].push_back(0);
	de[u]=de[fa]+1;
	id[u]=idd;
	for(int i=head[u];i;i=e[i].nex){
		int v=e[i].to;
		if(v==fa) continue;
		dfs(v,u,idd);
	}
}
//树状数组板板 
int query(int x,int id){
	int tmp=0;
	while(x){
		tmp+=sum[id][x];
		x-=(x&amp;amp;(-x));
	}
	return tmp;
}
void update(int x,int k,int id){
	while(x&amp;lt;sum[id].size()){
		sum[id][x]+=k;
		x+=(x&amp;amp;(-x));
	}
}
void change(int l,int r,int k,int id){
	update(l,k,id),update(r+1,-k,id);
}
int main(){
	scanf(&quot;%d%d&quot;,&amp;amp;n,&amp;amp;ca);
	for(int i=1,u,v;i&amp;lt;n;i++){
		scanf(&quot;%d%d&quot;,&amp;amp;u,&amp;amp;v);
		add(u,v),add(v,u);
	}
	for(int i=head[1];i;i=e[i].nex){
		dfs(e[i].to,1,++cnt);
	}
	for(int i=1;i&amp;lt;=n;i++){//预处理全局树状数组 
		sum[0].push_back(0);
	}
	for(int i=0;i&amp;lt;=cnt;i++){//由于vector下标从0开始，所以要再加一位 
		sum[i].push_back(0);
	}
	while(ca--){
		int op,v,x,d;
		scanf(&quot;%d%d&quot;,&amp;amp;op,&amp;amp;v);
		if(op==1){//查询 
			if(v==1){//特判1号节点 
				printf(&quot;%d\n&quot;,ans1);
			}
			else{
				printf(&quot;%d\n&quot;,query(de[v],0)+query(de[v],id[v]));//树状数组内标记加上全局标记 
			}
		}
		else{//修改 
			scanf(&quot;%d%d&quot;,&amp;amp;x,&amp;amp;d);
			if(v==1){//特判1号节点 
				change(1,min(d,n),x,0);
				ans1+=x;
				continue;
			}
			int tmp=min(n,d-de[v]);//紫色区域右端点 
			int l=max(tmp+1,max(0,de[v]-d));//绿色区域左端点，注意要和tmp+1取max 
			int r=min((int)sum[id[v]].size()-1,de[v]+d);//绿色区域右端点 
			//各种修改 
			if(l&amp;lt;=r) change(l,r,x,id[v]);
			if(tmp&amp;gt;0) change(1,tmp,x,0);
			if(tmp&amp;gt;=0) ans1+=x;
		}
	}
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>CF178D3 Magic Squares 题解</title><link>https://candy0014.github.io/posts/solution-cf178d3</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-cf178d3</guid><description> </description><pubDate>Wed, 06 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/CF178D3&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codeforces.com/problemset/problem/178/D3&quot;&gt;CF 传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给你 $n^2$ 个数，用这些数构成一个 $n$ 阶幻方，保证有解。&lt;/p&gt;
&lt;p&gt;$n$ 阶幻方的定义：一个 $n$ 阶矩阵，满足每一行，每一列，每一条对角线的和都相等。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;注意到 $n \le 4$，自然想到爆搜。但普通爆搜是 $(n^2)!$ 的，肯定过不了，所以想到剪枝。&lt;/p&gt;
&lt;p&gt;先是一个最能够想到的剪枝：&lt;/p&gt;
&lt;p&gt;由于保证有解，所以可以算出每一行，每一列，每一条对角线的和。&lt;/p&gt;
&lt;p&gt;那么每一行和每一列的最后一个数都不需要搜索，而是直接通过前面的算出。&lt;/p&gt;
&lt;p&gt;于是我们爆搜的区域就从 $n^2$ 变成了 $(n-1)^2$。&lt;/p&gt;
&lt;p&gt;然后你写出了代码，满怀信心地交上去，发现你成功的在第 18 个点 T 掉了。&lt;/p&gt;
&lt;p&gt;&lt;s&gt;通过获取第 18 个点的数据放在本地跑，&lt;/s&gt; 我们发现它 T 的不是太严重，就多了不到一秒，所以需要一些玄学的优化。&lt;/p&gt;
&lt;p&gt;设最终幻方为 $p$，由于 $\sum_{i=1}^{n} p_{i,1}=\sum_{i=1}^{n} p_{i,n-i+1}$，即第一列的和等于副对角线的和，那么 $\sum_{i=1}^{n-1} p_{i,1}=\sum_{i=1}^{n-1} p_{i,n-i+1}$，从而 $p_{n-1,2}=\sum_{i=1}^{n-1} p_{i,1}-\sum_{i=1}^{n-2} p_{i,n-i+1}$。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long long ll;
int n,m,a[20],sum;//sum代表每一行，每一列，每一条对角线的和 
int vis[114520];//哈希后的桶 
int p[10][10];//最终矩幻方 
int Hash(int x){//恶臭的哈希函数 
	return ll(1ll*(x+1e8)*(x+1e8))%114514;
}
void dfs(int x,int y){
	if(x==n){//最后一行的填数 
		int tmp1=0,tmp2=0,tmp3=0,tmp4=0;//分别代表：忽略第n行的数，主对角线的和，副对角线的和，第一列的和，第n列的和
		for(int i=1;i&amp;lt;n;i++){
			tmp1+=p[i][i],tmp2+=p[i][n-i+1],tmp3+=p[i][1],tmp4+=p[i][n];
		}
		if(tmp1!=tmp4||tmp2!=tmp3){//判断不可能情况 
			return;
		}
		for(int i=1;i&amp;lt;=n;i++){//填最后一行的数 
			int tmp=sum;
			for(int j=1;j&amp;lt;n;j++){
				tmp-=p[j][i];
			}
			int tmpp=Hash(tmp);
			if(!vis[tmpp]){//找不到，回溯 
				for(int j=1;j&amp;lt;i;j++){
					vis[Hash(p[n][j])]++;
				}
				return;
			}
			vis[tmpp]--,p[n][i]=tmp;
		}
		printf(&quot;%d\n&quot;,sum);//成功找到解 
		for(int i=1;i&amp;lt;=n;i++){
			for(int j=1;j&amp;lt;=n;j++){
				printf(&quot;%d &quot;,p[i][j]);
			}
			printf(&quot;\n&quot;);
		}
		exit(0);
	}
	if(y==n){//最后一列的填数 
		int tmp=sum;
		for(int i=1;i&amp;lt;n;i++){
			tmp-=p[x][i];
		}
		int tmpp=Hash(tmp);
		if(!vis[tmpp]){//找不到，回溯 
			return;
		}
		vis[tmpp]--,p[x][n]=tmp;
		dfs(x+1,1);
		vis[tmpp]++;
		return;
	}
	if(x==n-1&amp;amp;&amp;amp;y==2){//位置(n-1,2)的填数 
		int tmp=0;
		for(int i=1;i&amp;lt;n;i++){
			tmp+=p[i][1];
		}
		for(int i=1;i&amp;lt;n-1;i++){
			tmp-=p[i][n-i+1];
		}
		int tmpp=Hash(tmp);
		if(!vis[tmpp]){//找不到，回溯 
			return;
		}
		vis[tmpp]--,p[x][y]=tmp;
		dfs(x,y+1);
		vis[tmpp]++;
		return;
	}
	for(int i=1;i&amp;lt;=m;i++){
		int tmpp=Hash(a[i]);
		if(vis[tmpp]){
			vis[tmpp]--,p[x][y]=a[i];
			dfs(x,y+1);
			vis[tmpp]++;
		}
	}
}
int main(){
	scanf(&quot;%d&quot;,&amp;amp;n);
	m=n*n;
	for(int i=1;i&amp;lt;=m;i++){
		scanf(&quot;%d&quot;,&amp;amp;a[i]);
		sum+=a[i];
		vis[Hash(a[i])]++;
	}
	sum/=n;
	dfs(1,1);
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>CSPJS &amp; NOIP 2023 游记</title><link>https://candy0014.github.io/posts/travelogue-cspjs-noip-2023</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-cspjs-noip-2023</guid><description> </description><pubDate>Thu, 14 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2023-09-14 (DAY -2)&lt;/h2&gt;
&lt;p&gt;开始准备初赛，做了几份真题（CSP-S 2015，CSP-S 2021，CSP-S 2022），但感觉没啥用，近几年的都做过，远古的又太简单。&lt;/p&gt;
&lt;p&gt;几乎没复习基础知识，感觉有点慌。&lt;/p&gt;
&lt;h2&gt;2023-09-16 (DAY 0)&lt;/h2&gt;
&lt;p&gt;今天初赛！！！&lt;/p&gt;
&lt;p&gt;早上本来打算 6:40 起的，结果 6:00 就醒了。感觉睡不着了，起床看点选择题 &lt;s&gt;，虽然看的都没考到&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;7:00 去吃早饭，吃完早饭去考场，结果好像是最早到的。&lt;/p&gt;
&lt;p&gt;和一堆巨佬碰面后，讨论今年 CSP 又会出什么新梗。结果还没开始考试就出新梗了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;YTS 蒟蒻：我们这里还有哪位没有报提高组的啊？
某不知名群众：我还有，……，YTS……&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;于是，YTS 蒟蒻不屑于打提高组。&lt;/p&gt;
&lt;p&gt;进考场了，和坐我后面的那位一起谈论 ZHY 巨佬是如何 $\color{white}{AKIOI}$ 的，结果被监考的警告了。&lt;/p&gt;
&lt;p&gt;9:30 开始考试。我们的 €€£ 果然不负众望，出锅了。&lt;/p&gt;
&lt;p&gt;然后在下面的第 1 个卡了十分钟，第 3 个卡了半个小时，第 4 个导致最后一题两分钟水完。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;给了个前序和中序，结果选项里找不到后序了;&lt;/li&gt;
&lt;li&gt;输出 &lt;code&gt;NaN&lt;/code&gt; 算保留四位小数。&lt;/li&gt;
&lt;li&gt;一题是二分的（代码出错 or 有一题两个选项都对）。&lt;/li&gt;
&lt;li&gt;最后一题放个编辑距离是个什么意思啊！&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;考后吃饭的时候大家一起骂 €€£ 是 S*。我们 $\color{white}{AKIOI}$ 的 ZHY 巨佬好像因为以上第 3 条错了三个选择题，默哀。&lt;/p&gt;
&lt;p&gt;然后估分系统出来了，由于以上几道题，成绩在 90 到 95 之间摇摆不定，但应该能过。&lt;/p&gt;
&lt;p&gt;下午肝提高组，考试之前一直在准备 %%%XHGua 巨佬，最后计划不幸失败。&lt;/p&gt;
&lt;p&gt;提高组试卷竟然没什么锅，令人震惊。&lt;/p&gt;
&lt;p&gt;选择题有两个奇奇怪怪的 Linux 指令题，乱蒙，蒙对了一个，另一个错了，其实也就错了那一个。&lt;/p&gt;
&lt;p&gt;半个小时后，开始看阅读程序。&lt;/p&gt;
&lt;p&gt;第一篇是烦人的位运算（被 base64 搞怕了），然后第一题判断看走眼错了。&lt;/p&gt;
&lt;p&gt;第二篇是 $1 \to n$ 每个数的因子和的暴力求法和贡献求法，本来感觉稳了，结果 $sum$ 的初始值看成 $0$ 导致错了那个最贵的 2 分判断。&lt;/p&gt;
&lt;p&gt;第三篇是看着很容易的二分答案，然后 $O(n\log n+n\log a)=O(n\log a)$（对数运算全忘光了）。但题目里 $a$ 的阶明显比 $n$ 的阶大，所以感觉选 $O(n\log a)$ 自我感觉似乎也没毛病。&lt;/p&gt;
&lt;p&gt;两道完善程序都是好理解的简单题，虽然做得也不快。倒数第二题答题卡涂错寄。&lt;/p&gt;
&lt;p&gt;最后合计下来大概是 80 多分，也应该能过。&lt;/p&gt;
&lt;p&gt;然后就要全部准备复赛了，符某的不可能任务：普及 AK，提高 $300^+$。&lt;/p&gt;
&lt;h2&gt;2023-09-?? (DAY ?)&lt;/h2&gt;
&lt;p&gt;出分了！！！&lt;/p&gt;
&lt;p&gt;普及 95，提高 82.5，不错，没挂分。&lt;/p&gt;
&lt;h2&gt;2023-09-24 (DAY 8)&lt;/h2&gt;
&lt;p&gt;叫去打了个啥“百度之星”。&lt;/p&gt;
&lt;p&gt;真的是非常无语的简单 T1 都没做出来，结果进复赛啦？&lt;/p&gt;
&lt;p&gt;复赛 2023-12-31 在北京，看来有的好玩了（&lt;/p&gt;
&lt;h2&gt;2023-09-29&lt;/h2&gt;
&lt;p&gt;国庆八天假，启动！！！&lt;/p&gt;
&lt;h2&gt;2023-09-30&lt;/h2&gt;
&lt;p&gt;去水普及组模拟赛，看起来还挺简单的（。&lt;/p&gt;
&lt;p&gt;然后 T3 的 $n$ 和 $m$ 写反了挂了 $50$ 分（话说还有 50 分是 $n=m$ 的）。&lt;/p&gt;
&lt;p&gt;ZHY 巨佬 T1 $n$ 和 $m$ 写反了挂成 $10$ 分了默哀。&lt;/p&gt;
&lt;h2&gt;2023-10-03&lt;/h2&gt;
&lt;p&gt;去 JC 书院考模拟赛，寄了。T1 的傻逼模数 $993244853$，T2 暴力写挂，T3 想到用 bitset 但没写，T4 题目说只有三个字母但没看到，真的人考傻了。&lt;/p&gt;
&lt;p&gt;ZHY 巨佬随便写出了 150 分，T2 胡了思路但没写，也许也是对的，在此 %%%sto ZHY orz%%%。&lt;/p&gt;
&lt;h2&gt;2023-10-04&lt;/h2&gt;
&lt;p&gt;第二场模拟赛，又寄了。T1,T4 比较水，结果 T4 的 $n$ 和 $m$ 看反了挂成了 30 &lt;s&gt;（似曾相识&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;T2 竟然数据寄了，好像就我一个人发现，反正本来应该过的！那个强制在线的数据解密后不满足题目条件了！T3 没人做（虽然是原题但也是道黑，CF3100，狗才做）。&lt;/p&gt;
&lt;p&gt;连着两场挂地这么惨，感觉可以 AFO 了。&lt;/p&gt;
&lt;h2&gt;2023-10-05&lt;/h2&gt;
&lt;p&gt;第三场模拟赛，至少比前两次要好不少。&lt;/p&gt;
&lt;p&gt;T1 本来思路完全正确，然后由于多了几个取模被卡常成了 50 pts。&lt;/p&gt;
&lt;p&gt;于是 200 pts $\to$ 150 pts，rk 1 $\to$ rk 5。&lt;/p&gt;
&lt;h2&gt;2023-10-06&lt;/h2&gt;
&lt;p&gt;第四场模拟赛，终于考好了一回 &lt;s&gt;（，虽然前三题都是普及组难度）&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;很轻松写完前两题并过了拍，然后写 T3，一眼顶针为打表，猜了个 gcd 思想的结论，也过了拍（最后讲的思路更简单，直接 &lt;code&gt;__gcd&lt;/code&gt;）。然后打 T4，是个提交答案题。前面一半的点跑倍增，后面的点按性质写了一些分，自我感觉良好（咱就是说也不知道为啥 YH,QBN 等一众巨佬都不会打倍增）。&lt;/p&gt;
&lt;p&gt;最后没挂分！$375$ 分一分没少（自豪&lt;/p&gt;
&lt;h2&gt;2023-10-14&lt;/h2&gt;
&lt;p&gt;打信友队的模拟赛。这次难度和提高组挺接近的，就是部分分没有去年的多。&lt;/p&gt;
&lt;p&gt;先开 T1，看着没什么思路，又看了 T2，似乎在贪心后用进制感性理解一个很好的结论，草稿纸上划几下一脸可以算贡献的样子，然后就写去了。&lt;/p&gt;
&lt;p&gt;结果一堆等差数列求和还不知道哪里错了，但思路应该没问题。&lt;/p&gt;
&lt;p&gt;然后又去想 T1，忽然想到可以枚举弦图，但复杂度分析错了。&lt;/p&gt;
&lt;p&gt;反应过来发现写假了，又感觉能用 bitset 优化暴力，看着很迷惑的 $n=500$ 和时限 $5s$，决定先写个不靠谱的 $O(\frac{n^4}{w})$ 逝世。然后写完过了大样例就不管了。&lt;/p&gt;
&lt;h2&gt;2023-10-20 (DAY -1)&lt;/h2&gt;
&lt;p&gt;啊明天就要审判了！&lt;/p&gt;
&lt;p&gt;心态非常炸裂，反正 $300^+$ 是不用想了，考个一等很满足了（&lt;/p&gt;
&lt;p&gt;下午 4:59 的火车去杭州，走错了一次检票口，&lt;code&gt;rp--&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;晚上 5:30 到了杭州东，坐地铁去酒店。晚上和西校区他们吃了顿饭，吃撑了。&lt;/p&gt;
&lt;p&gt;会房间不想搞了，颓到 9:30 就上床了。&lt;/p&gt;
&lt;p&gt;明天 &lt;code&gt;rp++&lt;/code&gt;！！！&lt;/p&gt;
&lt;h2&gt;2023-10-21 (DAY 0)&lt;/h2&gt;
&lt;p&gt;审判日！！！&lt;/p&gt;
&lt;p&gt;早上 6:40 被叫起来吃早饭，7:40 到了杭师大，今年人是真的多，一直堵车。&lt;/p&gt;
&lt;p&gt;8:00 进了考场，今年管的好严，不透明铅笔袋都不让带。&lt;/p&gt;
&lt;p&gt;8:20 解压大样例，猜不出是什么题。&lt;/p&gt;
&lt;p&gt;8:30 准时发题面开考。T1 放了道签到，但题目长得联想到 21 年 T4，吓了一跳，但和题面深情凝视 $10s$ 想出正解，然后 $3$ min 秒掉。&lt;/p&gt;
&lt;p&gt;开 T2，随便胡了个 $O(n^2)$ 的 dp，准备开写看到 $n \le 10^5$，然后陷入沉思。草稿纸上随便画画好像可以转化成贪心，开写，到 8:25 过了样例，不敢测大样例，先看了 T3。&lt;/p&gt;
&lt;p&gt;T3 又放了个不大不小的模拟，随便写了 $25$ min 写完。&lt;/p&gt;
&lt;p&gt;T4 一开，人都傻掉了，什么玩意儿普及组放的图论不能一眼顶针！动用了草稿纸想到反图二分答案然后跑 dp，感觉这题至少有蓝。写写写，敲完过了样例，一阵轻松。&lt;/p&gt;
&lt;p&gt;然后开测大样例，前三题跑得很好，然后 T4 成功 WA 了。把代码念了一遍，好像不重复计算一个点会有后效性，所以一个点要算 $k$ 次，自然想到 SPFA，时间复杂度乘个 $k$ 变成 $O(mk \times \log V)$，自我感觉能过，就是这不是最大的大样例已经跑了 $0.3 s$，就很悬。&lt;/p&gt;
&lt;p&gt;写完大概是 10:13，不知道下面干啥了。&lt;/p&gt;
&lt;p&gt;给 T1,T2 写了个拍，拍过了，后面两题拍不好写就没写。然后打算玩扫雷，结果游戏全给卸了，心中一堆什么马跑过。翻附件，发现有公式编辑器，在里面用各种形式写了 $\mathbb{Z}\frac{H^Y}{A_K}\phi^I_I$。又检查了一遍文件，发现考试还有 $30$ min，开始颓游记 &lt;s&gt;（本来想把游记注释起来放代码里的，到时候直接下载，又怕整出啥幺蛾子）&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;考完试问了一圈，发现 AK 的不少，但 T2 和 T4 的做法和好多人都不同，但先不管它了。&lt;/p&gt;
&lt;p&gt;中午去吃大餐，台州的算上家长百来号人全挤在个小餐馆里。&lt;/p&gt;
&lt;p&gt;下午 2:00 到了考场门口，就直接进去了。 &lt;s&gt;进考场那个监考老师还亲切地说：“又来啦……”。&lt;/s&gt; 拿到机子立刻悄咪咪打个对拍，坐等考试开始。&lt;/p&gt;
&lt;p&gt;提前 $10$ min 解压了大样例，开到一个 struct 惊奇的发现似乎是大模拟，也不知道是 T1 还是 T2 &lt;s&gt;（虽然是 $\text{T3}$）&lt;/s&gt; ，反正突然就有信心了。然后又看到一题不知道什么东西，一题字符串，一题看起来是树的东西。&lt;/p&gt;
&lt;p&gt;这次提前 $5$ min 解压了题面，看到 T1 差点没飞起来，总之是本来 $5$ min 打好的代码 debug 成了 $20$ min。&lt;/p&gt;
&lt;p&gt;开 T2，人比较懵，一眼顶针为一种自制的自动机？反正推了半个小时只有 $O(n^3)$，啥也没推出来，总结为脑残。&lt;/p&gt;
&lt;p&gt;然后开了 T3，四个操作写了四次改了四次，好在是样例过后一遍就过大样例了，忘了花多少时间了，大概是 $90$ min？&lt;/p&gt;
&lt;p&gt;然后回去看 T2，突然想到括号配对，然后花了 $5$ min 写出了 50 分。然后随便搞了一下又把数据随机那个大样例过了。&lt;/p&gt;
&lt;p&gt;想 T2 正解，没想出来。赛后看题解直接气死。&lt;/p&gt;
&lt;p&gt;T4 还是不说了，鬼知道 CCF 为啥把第二简单的题放 T4，根本就没往正解想，这么明显的二分答案加贪心没看出来，最后题面没看仔细导致 25 pts $\to$ 0 pts，直接原地 AFO。&lt;/p&gt;
&lt;p&gt;出考场估的是 $100+60+100+25=285$，然后知道 T4 题目看错，变成 $100+60+100+0=260$，反正 $300^+$ 无缘了。&lt;/p&gt;
&lt;p&gt;一出考场楼开幕雷击，ZHY 巨佬直接飚到 $100+50+100+100=350$ 分，直接台州全体 %%%sto ZHYAKCSPS orz%%%。&lt;/p&gt;
&lt;p&gt;然后又是雷击，小图灵估的 J 组没有 AK！！！据说是 T4 不知咋滴 TLE 了两个点，两个点都是最大范围且没有全寄，说明 T 多少是个概率问题，所以寄希望于 CCF 脚造数据。&lt;/p&gt;
&lt;h2&gt;2023-10-21 (DAY 1)&lt;/h2&gt;
&lt;p&gt;今天不做作业不比赛，去外面玩自行车去了。&lt;/p&gt;
&lt;p&gt;早上一起床看小图灵，估提高组还是 260，但 ZHY 巨佬 T4 估的只有 60，T2 挂到了 25，所以只有 285 &lt;s&gt;（但为啥还是比我高啊！！！）&lt;/s&gt; 。&lt;/p&gt;
&lt;h2&gt;2023-10-23 (DAY 3)&lt;/h2&gt;
&lt;p&gt;讲个故事：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;某蒟蒻刚考完了 CSP-S，然后听说 T2 是 CF 原题，非常令人震惊。&lt;/p&gt;
&lt;p&gt;然后蒟蒻打开了这题在洛谷上的题解，发现在 2023-10-1 的时候有一个巨佬发了一篇题解，于是更加震惊了。&lt;/p&gt;
&lt;p&gt;然后蒟蒻开始阅读这篇题解，震惊地发现题解第一句话是 &lt;strong&gt;难得有 CF 的瞬秒题&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;然后蒟蒻继续读，惊奇的发现用栈模拟，做差分在考场上都想到了，只是差最后一个 Hash。&lt;/p&gt;
&lt;p&gt;然后这个蒟蒻差点气到原地猝死。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;2023-10-29 (DAY 9)&lt;/h2&gt;
&lt;p&gt;晚上就出成绩了。&lt;/p&gt;
&lt;p&gt;CCF 确实是脚造数据，普及 400，提高和估的一样是 260。&lt;/p&gt;
&lt;p&gt;ZHY 巨佬普及 380，提高 315，T4 过了，好像小图灵上重测也过了，%%%sto ZHYAKCSPS orz%%%。&lt;/p&gt;
&lt;p&gt;算了就这个水平，明年再说吧。&lt;/p&gt;
&lt;h2&gt;2023-10-31 (DAY 11)&lt;/h2&gt;
&lt;p&gt;咕咕咕，补了一下前面的游寄，就算结束了吧。&lt;/p&gt;
&lt;h2&gt;2023-11-11 (DAY -7)&lt;/h2&gt;
&lt;p&gt;收回上一次的话（&lt;/p&gt;
&lt;p&gt;由于修改了下标题，所以还得继续写。&lt;/p&gt;
&lt;p&gt;非常戏剧性的故事：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;十月的某一天，说是可以参加，非常高兴。&lt;/p&gt;
&lt;p&gt;报名结束后，说指导老师没有点确认，很悬。&lt;/p&gt;
&lt;p&gt;过了几天，FSB 说没事，又很高兴。&lt;/p&gt;
&lt;p&gt;然后过了十几天，报名还是没成，打算摆烂了。&lt;/p&gt;
&lt;p&gt;然后今天说准考证号有了，所以就得继续写了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;晚上去听信友队模拟赛的题解，感觉联赛要寄了，看这题目好像只能写到 $[100,150]$。&lt;/p&gt;
&lt;h2&gt;2023-11-12 (DAY -6)&lt;/h2&gt;
&lt;p&gt;搞了场洛谷的 NOIP2022 模拟赛重现玩玩，早上八点半开测。&lt;/p&gt;
&lt;p&gt;T1 一眼顶针，但由于不敢相信这么简单验算了好几遍过掉。&lt;/p&gt;
&lt;p&gt;T2 一看是计数题，放一边先看 T3，是神秘构造题。&lt;/p&gt;
&lt;p&gt;俗话说得好，构造先打表，随便搞了个 $n=4$ 的表看看，然后发现中间那个都是最小的，想到 $n$ 是 $2$ 的幂，合理猜想是分治。&lt;/p&gt;
&lt;p&gt;手推 $n=8$ 的情况，看着还挺像那么回事，就是先扣掉中间一个三角形和顶上一个三角形，下面的来分治。 &lt;s&gt;没忍住瞄了眼题解，&lt;/s&gt; 惊奇地发现剩下的东西刚好构成二叉树，所以问题在左右配平。蛇形填数随便搞，后面三行特判一下就过样例了。交了下也过了。&lt;/p&gt;
&lt;p&gt;看 T2，才发现部分分一坨一坨的，打暴力搜索加特殊性质搞到了 72 分。&lt;/p&gt;
&lt;p&gt;T4 是黑的，本来打算拿部分分，结果 dp 一直写挂，不想调了，代码也没交。&lt;/p&gt;
&lt;p&gt;最后 $100+72+100+0=272$ 分，这场比较简单， &lt;s&gt;不太有&lt;/s&gt; 有很大参考价值。&lt;/p&gt;
&lt;h2&gt;2023-11-17 (DAY -1)&lt;/h2&gt;
&lt;p&gt;啊明天就 NOIP 了！&lt;/p&gt;
&lt;p&gt;下午上火车就面到了刚刚 CSP-S 拿了台州 rk 1 的 ZHY 巨佬。本来打算火车上把 NOIP 模拟赛的数据造完的，结果只顾着聊天了。&lt;/p&gt;
&lt;p&gt;下了火车上地铁，又面到了个 OIer，去 OIerDb 上一搜，SZH，初三就八级金钩的巨佬，赶紧膜拜沾点欧气。&lt;/p&gt;
&lt;p&gt;然后问了下 CSP-S 分数，竟然是 315，和 ZHY 还有 XHGua 都同分 &lt;s&gt;（现在就我一个只考这么点分数了吗）&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;根据可靠消息，NOIP 里提高组同分的坐一起，结果：WZJ：ZJ-0079，XHGua：ZJ-0080，SZH：ZJ-0081，ZHY：ZJ-0083，四个 AKIOI 的奆佬坐一起，就我在 ZH-0125 那边孤苦伶仃（&lt;/p&gt;
&lt;p&gt;下了地铁住酒店，颓了半个小时的视频就去干晚饭。&lt;/p&gt;
&lt;p&gt;随便找了家炒菜，刚进门没开口那老板娘就问，说我们来参加啥比赛来的，我说她咋知道我来参加比赛的。&lt;/p&gt;
&lt;p&gt;然后上楼一看，有个学校订了三桌的菜。然后下楼一问，这个学校台州来的！想想台州那个学校能订三桌菜，就知道是 WLZX，微信给 XHGua 确认一下还真是！&lt;/p&gt;
&lt;p&gt;吃完饭等 WLZX，还去他们那蹭了点饭吃。刚好有人过生日，于是齐唱 &lt;code&gt;Good morning to you...&lt;/code&gt;，非常动听（&lt;/p&gt;
&lt;p&gt;回房和 ZHY，XHGua，CZY 聊了会儿天，九点就睡觉去了。&lt;/p&gt;
&lt;h2&gt;2023-11-18 (DAY 0)&lt;/h2&gt;
&lt;p&gt;早上起不来啊啊啊！！！&lt;/p&gt;
&lt;p&gt;在床上滚到 6:50 才起床，7:00 下楼吃饭。感觉不饿也没吃啥 &lt;s&gt;，但拿了几个面包塞包里了&lt;/s&gt; 。&lt;/p&gt;
&lt;p&gt;然后走路去考场，考场真挺远的，大概走了有 $15$ min 才到。&lt;/p&gt;
&lt;p&gt;没多久发现巨佬 WZJ 也来了，然后爸就开始使劲拍照。又没多久巨佬 ZHY 也来了，然后一起拍，准备把 NOIP 的 P 给挡住（&lt;/p&gt;
&lt;p&gt;有没多久世界大巨佬 WMH 也驾到了，但没能近身（&lt;/p&gt;
&lt;p&gt;8:00 去考场，差点把 U 盘带进去了（进去就听到《考生宣言》，还有几个监考的一直在喊不准碰鼠标键盘，可凶了。 &lt;s&gt;听说地铁上碰到的 SZH 巨佬碰了下键盘被批了。&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;然后过几分钟可以看《考生宣言》了，又过几分钟可以解压大样例了，再过几分钟到 8:28 可以看题面了。&lt;/p&gt;
&lt;p&gt;8:30 开考，先花 $15$ min 把 T1 胡出的 $O(n^2)$ 暴力给搞掉 &lt;s&gt;（结果常数太大挂了 10 分哎……）&lt;/s&gt; ，然后看一遍后面的题。&lt;/p&gt;
&lt;p&gt;看了一遍发现暴力分还挺多的，然后随便搞一题写个暴力，但为啥挑了 T3 啊。&lt;/p&gt;
&lt;p&gt;反正看了半天也不知道是脑子瓦特了还是咋地，就是没看出 $O(n^2)$ 的黄色 dp，还去敲了半天上限 $O(n^3)$ 的东西，还搞了超过 $1.5 h$，心态比较炸裂。&lt;/p&gt;
&lt;p&gt;然后看 T2，发现只有绿，非常激愤，跑去上了个厕所回来赶紧打。&lt;/p&gt;
&lt;p&gt;敲敲敲，调调调，改了一堆 Bug，搞了 $50$ min 终于过小样例了，大样例也没测，然后看 T4 去。&lt;/p&gt;
&lt;p&gt;T4 一眼顶针为 dp，连 $O(n^2)$ 的都能有 36 分，然后继续在草稿上画，发现可以写滚动数组，但加不了多少分。&lt;/p&gt;
&lt;p&gt;突然惊奇地发现将每层 dp 数组向右移几位可以直接继承滚动数组，转移也特简单，但有一个区间加和全局最大值，又顶针为线段树优化 dp。&lt;/p&gt;
&lt;p&gt;发现有 56 分，也不想特殊性质了，先敲一棵线段树 &lt;s&gt;，敲完憋不住了又去上厕所了&lt;/s&gt; 。继续写 dp 优化，一个转移式写错了又调了半天。&lt;/p&gt;
&lt;p&gt;写完不足 $50$ min，赶紧把大样例全测一遍。&lt;/p&gt;
&lt;p&gt;测 T1 大样例，发现最大那个点跑了 $4 s$，检查了好几遍没感觉复杂度哪里不对，猜是本地跑太慢，没管 &lt;s&gt;（我真的哭死啊）&lt;/s&gt; ！&lt;/p&gt;
&lt;p&gt;接着测 T2 大样例，测最后一个点更离谱，直接报 RE 了。又检查了好几遍感觉没有地方能 RE 的，然后就找不出理由 RE 了。&lt;/p&gt;
&lt;p&gt;所有循环检查一遍不会有死循环，那只可能是递归爆栈。战略性输出递归次数，结果你猜怎么着？他跑到一万八就 RE 了！&lt;/p&gt;
&lt;p&gt;新开了一个 cpp 随便写了个递归，结果它真就到了一万八 RE 了！耗了我 $30$ min，只剩下 $15$ min 了，真的想骂娘！&lt;/p&gt;
&lt;p&gt;好在后面两题大样例没出岔子，最后 $5$ min 检查了三遍 &lt;code&gt;freopen&lt;/code&gt; 和文件名，确保没问题就关了软件听天由命了。&lt;/p&gt;
&lt;p&gt;估分 $100+100+25+56=281$。&lt;/p&gt;
&lt;p&gt;出考场看到 ZHY 和 XHGua 巨佬，问了一下似乎打了 $100+100+35+44=279$ 分？非常惊讶 T3 是怎么打到 $O(n^2)$ 的，然后问了一下发现我是傻逼。&lt;/p&gt;
&lt;p&gt;又问 T1 他们跑了多少时间，结果都是一瞬间就跑完了。反正就感觉 T1 要寄了，估分成了 $90+100+25+56=271$ &lt;s&gt;没他们高啊！&lt;/s&gt; ，最后也真寄了。&lt;/p&gt;
&lt;p&gt;考完去吃 KFC，去 KFC 路上有人说 T4 性质 B 不能直接暴力，所以 ZHY 和 XHGua 还得少 8 分。于是他们的估分也变成了 $100+100+35+36=271$？？？&lt;/p&gt;
&lt;p&gt;在 KFC 又看见了一堆巨佬，看见的认出来的有 SK，GHJ，LHX，WZJ，NZ，YH……反正挺多。&lt;/p&gt;
&lt;p&gt;回去火车上发现 XYD 估分的 T1 出来了，赶紧交一发，然后 ZHY 的过了，我的 90……&lt;/p&gt;
&lt;p&gt;还在火车上选手文件就公开了。&lt;/p&gt;
&lt;p&gt;到家 T2 也出来了，还好没寄。&lt;/p&gt;
&lt;h2&gt;2023-11-19 (DAY 1)&lt;/h2&gt;
&lt;p&gt;早上起来赶紧去查分。？？？XTL 估出来 $90+100+60+60=310$？？？人直接傻掉了。&lt;/p&gt;
&lt;p&gt;就很神奇，T3 我 dp 数组都只开了 $2000 \times 2000$，你给我过 60 分？？？&lt;/p&gt;
&lt;p&gt;T4 第 15 个点的 $n$ 都 $10^9$ 了，我跑个 $n$ 次的循环还不 T？？？&lt;/p&gt;
&lt;p&gt;然后去看 XYD，算是正常一点，$90+100+30+56=276$。再去看 YD，终于有个和估分一样的了。&lt;/p&gt;
&lt;p&gt;等到下午 LG 也出来了去测，$90+100+50+56=296$？？又傻掉了。&lt;/p&gt;
&lt;p&gt;于是祈祷 CCF 再次脚造数据……&lt;/p&gt;
&lt;p&gt;然后又查了一下别人的，由于 YD 的数据看起来比较准，所以用 YD 查。&lt;/p&gt;
&lt;p&gt;ZHY 271，WZJ 380，SZH 400，也只有膜拜的份了。&lt;/p&gt;
&lt;h2&gt;2023-11-24 (DAY 6)&lt;/h2&gt;
&lt;p&gt;哎出分了，CCF 这次神奇的 T4 脚造数据，T3 手造数据了，然后把我 T3 卡到 25，所以又只剩 271 了。&lt;/p&gt;
&lt;p&gt;T4 的特殊性质又脚造数据，把 ZHY 和 XHGua 的特判加了 8 分就变成 279 了……&lt;/p&gt;
&lt;p&gt;所以啥时候能比这两个巨佬高啊啊啊！！！&lt;/p&gt;
&lt;h2&gt;2023-12-13&lt;/h2&gt;
&lt;p&gt;把前面的游寄补完，明年寄续。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>CF762C Two strings 题解</title><link>https://candy0014.github.io/posts/solution-cf762c</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-cf762c</guid><description> </description><pubDate>Mon, 18 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/CF762C&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codeforces.com/problemset/problem/762/C&quot;&gt;CF 传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给你两个字符串 $a$ 和 $b$，你可以在 $b$ 中删去尽量短的子段，使得 $b$ 是 $a$ 的子序列。求出最后的 $b$。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;&lt;s&gt;真是奇了怪了，这种题洛谷题解里竟然没有双指针的做法？&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;首先考虑判断一个字符串 $b$ 是否是另一个字符串 $a$ 的子序列。这个问题相信学过点 OI 的人都会做。&lt;/p&gt;
&lt;p&gt;其实在做上面这个题的时候，因为贪心，$b$ 字符串的最右边字符对应在 $a$ 中一定是最靠左的。那么很容易，也可以求出 $b$ 的最左边字符在 $a$ 中最靠右的位置。&lt;/p&gt;
&lt;p&gt;现在再看原题，其实就是把 $b$ 字符串分成前后两个部分，其中前一个部分在 $a$ 中尽量靠左，后一个部分在 $a$ 中尽量靠右，并且两个不相交。&lt;/p&gt;
&lt;p&gt;然后就好做了，先对 $b$ 的每一个前缀求出「最右边字符对应在 $a$ 中最靠左的位置」，每一个后缀求出「最左边字符对应在 $a$ 中最靠右的位置」，分别用 $L$ 和 $R$ 数组保存。&lt;/p&gt;
&lt;p&gt;最后我们要选出两个断点 $l$ 和 $r$，分别代表分成的前后两个部分的右端点和左端点，并且 $L_l&amp;lt;R_r$，同时 $r-l$ 要尽量的小。&lt;/p&gt;
&lt;p&gt;所以这个怎么求呢？等等， $L$ 和 $R$ 单调递增？&lt;/p&gt;
&lt;p&gt;那不是妥妥的双指针吗？&lt;/p&gt;
&lt;p&gt;然后这题就做完了，时间复杂度 $O(n)$。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
int n,m;
string a,b;
int L[100005],R[100005];
int ans=1e9,k1,k2;//最短r-l，以及两个断点的记录 
int main(){
	cin&amp;gt;&amp;gt;a&amp;gt;&amp;gt;b;
	n=a.length(),m=b.length();
	a=&quot; &quot;+a,b=&quot; &quot;+b;
	int r=1;//指针 
	for(int i=1;i&amp;lt;=m;i++){//预处理L数组 
		while(r&amp;lt;=n&amp;amp;&amp;amp;a[p]!=b[i]) r++;
		L[i]=r,r=min(r+1,n+1);
	}
	r=n;
	for(int i=m;i&amp;gt;=1;i--){//预处理R数组 
		while(r&amp;gt;=1&amp;amp;&amp;amp;a[p]!=b[i]) r--;
		R[i]=r,r=max(r-1,0);
	}
	if(L[1]==n+1&amp;amp;&amp;amp;R[m]==0){//这里特判一下，或者在最后特判也行 
		printf(&quot;-\n&quot;);
		return 0;
	}
	L[0]=0,R[m+1]=n+1;//防越界特判的操作 
	r=1;
	for(int l=0;l&amp;lt;=m;i++){//计算答案，双指针板板 
		if(L[l]==n+1) break;
		r=max(r,l+1);
		while(L[l]&amp;gt;=R[r]){
			r++; 
		}
		if(r-l-1&amp;lt;ans){
			ans=r-l-1,k1=l,k2=r;
		}
	}
	for(int i=1;i&amp;lt;=m;i++){
		if(i&amp;lt;=k1||i&amp;gt;=k2){
			cout&amp;lt;&amp;lt;b[i];
		}
	}
	printf(&quot;\n&quot;);
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>百度之星 2023 游记</title><link>https://candy0014.github.io/posts/travelogue-astar-2023</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-astar-2023</guid><description> </description><pubDate>Thu, 28 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2023-09-24 (DAY 0)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/posts/appendix-travelogue-astar-2023&quot;&gt;百度之星 2023 题目&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;被拉去参加了个啥百度之星（初赛），本来就当个练习打的。&lt;/p&gt;
&lt;p&gt;下午 2:00 开打，但提前 $20$ min 还架好了摄像机，线上赛还是挺正规的。还准备了两本书，说是可以查纸质资料，反正没机会翻。&lt;/p&gt;
&lt;p&gt;2:00 先开 T1，嗯？是数学题？草稿纸上推柿子，推了快十分钟放弃了。然后是 dp？可能性挺大的，然后也不知道咋想的，状态都列对了转移写挂，还调不出来？然后才想起跟榜单，看了一下好像 T1 人比较少，T5 一大堆，果断开 T5（&lt;/p&gt;
&lt;p&gt;T5 简单模拟，没几分钟敲完从头开打。&lt;/p&gt;
&lt;p&gt;T2 一眼顶针简单数学题，T3 一眼顶针经典算贡献，T4 一眼顶针 Floyd。&lt;/p&gt;
&lt;p&gt;T6 看起来就是个策略 dp，但好像很烦的样子，结果往后一看 T7,T8 似乎都没啥思路，所以继续写。写完不出所料样例没过，然后调调调，调了一堆小 Bug，算是把样例过了。输出一下 dp 数组又寄了。继续调，一个傻逼问题放在面前愣是看了二十几分钟。然后试探性交一下，然后就过了。&lt;/p&gt;
&lt;p&gt;一看排名竟然有六十几，于是继续打 T1。也不知道脑子啥毛病就是没调出来这个简单状压，心态炸裂之后去看 T7,T8，于是心态又炸了一次。&lt;/p&gt;
&lt;p&gt;反正人家 ICPC 赛制没部分分，到最后没搞出啥来，排名还掉到了九十几。但厉害的大学生确实不多，就打五道题也能排到九十几。说是中小学生前三十进复赛，好像还有点机会。&lt;/p&gt;
&lt;h2&gt;2023-09-25 (DAY 1)&lt;/h2&gt;
&lt;p&gt;最终成绩出来了，一看还能去复赛，就很神奇。&lt;/p&gt;
&lt;h2&gt;2023-10-??&lt;/h2&gt;
&lt;p&gt;复赛说在北京，年底，然后就报了，还顺便旅游。&lt;/p&gt;
&lt;h2&gt;2023-12-29 (DAY -2)&lt;/h2&gt;
&lt;p&gt;真去北京了，星期五下午两点坐火车到杭州东，地铁转到城站，卧铺第二天到北京。&lt;/p&gt;
&lt;p&gt;卧铺上补了下前面初赛游寄，和 SZC 巨佬一起颓了一会儿音游，打了会儿板子。&lt;/p&gt;
&lt;p&gt;火车晚上十点就熄灯了，不写了直接睡了。&lt;/p&gt;
&lt;h2&gt;2023-12-30 (DAY -1)&lt;/h2&gt;
&lt;p&gt;三点不知道咋的反正就是醒了，然后睡一会儿醒一会儿，六点开灯就起床。&lt;/p&gt;
&lt;p&gt;看了洛谷年度报告，代码只有 $850$ Kb，比 ZHY 巨佬少了 $130$ Kb，蒟蒻膜拜巨佬。&lt;/p&gt;
&lt;p&gt;然后随便搞一下就下火车，然后坐地铁，然后放行李，然后去北大，然后未名湖，然后去拍照，然后吃午饭，然后继续逛，然后颐和园，然后滑冰车，然后坐地铁去亲戚家。&lt;/p&gt;
&lt;p&gt;亲戚家刚生，女孩，挺可爱的。四点半吃晚饭，吃完坐地铁去酒店。酒店在很远郊外，下了地铁还打车，打的车还和别的车撞了，又重新打，到赛场都只有十分钟了。&lt;/p&gt;
&lt;p&gt;进考场又见到了 SZC 巨佬，人家社牛直接向滴叉搞来两个徽章，赶紧膜拜。&lt;/p&gt;
&lt;p&gt;摆好电脑打测试赛。&lt;/p&gt;
&lt;p&gt;T1,T2 试机签到题，直接输出。T3 神奇模拟，搞了十几分钟。T4,T5 搞不来，T4 有点像啥树形 DP，看起来细节一大堆，不想写了。&lt;/p&gt;
&lt;p&gt;SZC 旁边坐的南外巨佬随便就收了测试赛榜一，%%%。&lt;/p&gt;
&lt;h2&gt;2023-12-31 (DAY 0)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/posts/appendix-travelogue-astar-2023&quot;&gt;百度之星 2023 题目&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;6:40 起床，楼上能看到餐厅，已经挺多人吃饭了。搞好下楼去吃饭，吃完早饭进考场，里面还没啥人，就去看巨佬座位，CSY,QLR,ZKY,YK,WMH,CN 一堆巨佬都在，只拍到了座位名牌。&lt;/p&gt;
&lt;p&gt;八点有个女老师上台讲了三遍考场规则，八点半开考。&lt;/p&gt;
&lt;p&gt;顺序开题，T1 题面简单，但看起来挺奇怪。想到之前有做过差不多的是 $\text{bitset}$ 做的，这题看起来也像，但四类分讨非常烦人，又开了 T2。&lt;/p&gt;
&lt;p&gt;T2 题目长得很长，还像图论，立刻跑了。打过 THUPC 就先开最后一题，更懵逼了，也许是应该正序开题。&lt;/p&gt;
&lt;p&gt;T1 调了几次就过了，还挺顺利，已经 $25$ min 了，预估为绿。然后再看了一遍 T2，嗯，是披着图论外表的简单扫描线，切了切了，又过了十几分钟，交了。然后非常神奇的 MLE 了？不会还卡空间吧。赶紧把刚开的 ll 换回来。还是 MLE？？？没办法把 $\text{vector}$ 都换成数组，大概二十几分钟，总算过了，非常恶心的加了 $40$ min 的罚时，但还是预估为黄。&lt;/p&gt;
&lt;p&gt;开 T3 一眼看上去非常非常不可做，想了五分钟啥也没想出来，果断放弃。然后看 T4 是大水题随便做，$5$ min 过掉，预估为橙。过了几分钟还有人插了个气球过来（三道题一个气球）。&lt;/p&gt;
&lt;p&gt;接着把 T5,T6 题目看了，都不太可做的样子，开始使劲推 T6。&lt;/p&gt;
&lt;p&gt;然后非常逆天，偷偷瞄了眼隔壁的初二巨佬 YYC 切了 T2,T3,T4 三题，估计 T3 是写奇奇怪怪的做法，又去想。&lt;/p&gt;
&lt;p&gt;想了挺久的，但两个操作时间复杂度不能都是 $O(\log)$。均摊复杂度？分块？可做？赶紧写，有一些细节调了一下，还非常庆幸第一次就看到了指数可能为负，特殊处理。调了挺久才过，预估为蓝。&lt;/p&gt;
&lt;p&gt;看到隔壁巨佬刚把 T1 写完 &lt;s&gt;，没有利用价值&lt;/s&gt; ，看榜接着想 T6。很像是什么贪心，就是在一条边上反复横跳凑路程。但貌似不一定是边权为极值的边，还需枚举横跳哪条边，但这样时间不够用了，很烦。&lt;/p&gt;
&lt;p&gt;又非常逆天的，偷偷瞄了眼隔壁的初二巨佬切了 T8，直接开。是数学题？不对啊就这个什么分布直接套公式啊 &lt;s&gt;，虽然我公式忘了推了半天&lt;/s&gt; 。所以问题就成了咋算盒子个数。第一反应依然是 $\text{bitset}$，然后看到数据范围刚好不够用。一共只有 $2 \times 10^5$ 个球，但暴力似乎也不行。 &lt;s&gt;两种方法？根号分治？可做？赶紧写，有一些细节调了一下，&lt;/s&gt; 也过掉了，预估为蓝下位。&lt;/p&gt;
&lt;p&gt;又想 T6，想逝世是不是能枚举边权最大或最小的若干条边，好像还需已死的 SPFA。思路看起来很假，实际写出来一点也不正确，调了半天感觉真的假了。&lt;/p&gt;
&lt;p&gt;还剩一个小时，然后就封榜了，封榜前是 $132$ 名。T6 假了看 T5。计数题推了个神奇式子出来，貌似一点用没有。看隔壁巨佬开始写 T7 了，也去看，又想了十分钟结果连个 DP 数组都定义不出来。总之啥也没写出来，T6 越调样例越不对劲了，直接放弃挣扎。&lt;/p&gt;
&lt;p&gt;还有 $20$ min 的时候隔壁巨佬把 T7 调出来了，STO%%%ORZ。一直颓到比赛结束。&lt;/p&gt;
&lt;p&gt;下午听了仨讲座，听完吃晚饭，晚饭吃完又等了一会儿就开始滚榜，从七百多开始滚 &lt;s&gt;，下面全是大学生&lt;/s&gt; 。滚到自己排在 $159$ 名，上面还有一堆阿克的巨佬。&lt;/p&gt;
&lt;p&gt;阿克的一个清华，其他都是高中还有初中，WMH 都只排初中里第三，CSY 喜提 rk $1$。&lt;/p&gt;
&lt;p&gt;然后娱乐节目，一堆选手上台跳科目三 &lt;s&gt;，奖励一年的百度会员&lt;/s&gt; 。接着颁奖，竟然有个铜奖。&lt;/p&gt;
&lt;p&gt;然后是第二个娱乐节目，鉴于大家在 QQ 里都说要打铁回去，所以给没发到奖的同学发铁牌和一把锤子打铁。&lt;/p&gt;
&lt;p&gt;第三个娱乐节目，摇手机，手都要摇断了还是没进过前六。&lt;/p&gt;
&lt;p&gt;然后就结束了，回酒店睡觉，睡前又颓了点游寄，明天早上看升国旗。&lt;/p&gt;
&lt;h2&gt;2024-01-01 (DAY 1)&lt;/h2&gt;
&lt;p&gt;五点半起床，下楼打个滴去天安门，结果打到了一看导航就 500 米。送到一般开始堵了，就下车走过去。&lt;/p&gt;
&lt;p&gt;队伍没有想象的长，在长安街另一边看的，人大概只有七八层，挤到差不多第三层，手机举到最高能拍到升旗。广场太大，声音传过来都和升旗错开了。&lt;/p&gt;
&lt;p&gt;升完旗还有一群鸟从天安门后面飞出来的，应该是人为搞起来的，还挺壮观。&lt;/p&gt;
&lt;p&gt;中午就回家，要赶火车北京烤鸭都没吃上，买的太多了。&lt;/p&gt;
&lt;p&gt;回家继续颓，反正寒假还得去重庆（&lt;/p&gt;
&lt;h2&gt;2024-01-02 (DAY 2)&lt;/h2&gt;
&lt;p&gt;题解这么快就出了？&lt;/p&gt;
&lt;p&gt;事实证明我的非正解能力还是非常强的……两道 $\text{bitset}$ 的题一道也不是用 $\text{bitset}$ 做的，两道根号的题一道不是用根号做的（&lt;/p&gt;
&lt;h2&gt;附属文件&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;/posts/appendix-travelogue-astar-2023&quot;&gt;statement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bilibili.com/video/BV1St4y1o7oX/?spm_id_from=333.337.search-card.all.click&amp;amp;vd_source=406007d7cd03e46e62e493434f22a349&quot;&gt;solution&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded><author>candy0014</author></item><item><title>百度之星 2023 题目</title><link>https://candy0014.github.io/posts/appendix-travelogue-astar-2023</link><guid isPermaLink="true">https://candy0014.github.io/posts/appendix-travelogue-astar-2023</guid><description> </description><pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/posts/travelogue-astar-2023&quot;&gt;百度之星 2023 游记&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;初赛&lt;/h2&gt;
&lt;h3&gt;T1&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T2&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic2.png&quot; alt=&quot;2.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T3&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic3.png&quot; alt=&quot;3.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T4&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic4.png&quot; alt=&quot;4.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T5&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic5.png&quot; alt=&quot;5.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T6&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic6.png&quot; alt=&quot;6.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T7&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic7.png&quot; alt=&quot;7.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T8&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic8.png&quot; alt=&quot;8.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;决赛&lt;/h2&gt;
&lt;h3&gt;T1&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic9.png&quot; alt=&quot;9.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T2&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic10.png&quot; alt=&quot;10.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T3&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic11.png&quot; alt=&quot;11.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T4&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic12.png&quot; alt=&quot;12.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T5&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic13.png&quot; alt=&quot;13.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T6&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic14.png&quot; alt=&quot;14.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T7&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic15.png&quot; alt=&quot;15.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T8&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic16.png&quot; alt=&quot;16.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T9&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic17.png&quot; alt=&quot;17.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T10&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic18.png&quot; alt=&quot;18.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T11&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic19.png&quot; alt=&quot;19.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;T12&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://picbed.candy0014.icu/posts/Appendix-Travelogue-Astar-2023/pic20.png&quot; alt=&quot;20.png&quot; /&gt;&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>THUWC &amp; NOIWC 2024 游记</title><link>https://candy0014.github.io/posts/travelogue-thuwc-noiwc-2024</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-thuwc-noiwc-2024</guid><description> </description><pubDate>Thu, 25 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2023-12-22&lt;/h2&gt;
&lt;p&gt;THUWC 能去？在重庆？？&lt;/p&gt;
&lt;h2&gt;2023-12-23&lt;/h2&gt;
&lt;p&gt;WC 也能去？？？在重庆？？？？&lt;/p&gt;
&lt;h2&gt;2024-01-15 (DAY -10 / -14)&lt;/h2&gt;
&lt;p&gt;收到了 THUWC 的报到证。去年还是 FSB 拉关系搞进的，今年是自己进的了。&lt;/p&gt;
&lt;h2&gt;2024-01-25 (DAY 0 / -4)&lt;/h2&gt;
&lt;p&gt;去重庆，要到宁波赶飞机，早上 5:40 起床，吃完早饭下楼等 ZHY 巨佬。&lt;/p&gt;
&lt;p&gt;ZHY 巨佬昨天刚切了第六分块，还拿了个最优解（本来是 rk 2 的，但 rk 1 的用户被封禁了），准备在火车上颓题解。&lt;/p&gt;
&lt;p&gt;到宁波坐地铁到飞机场，在候机室看 ZHY 巨佬写题解。&lt;/p&gt;
&lt;p&gt;马上上飞机了 FSB 带着一堆初二巨佬过来（LYL,XY,SC）。&lt;/p&gt;
&lt;p&gt;飞机上没网，就和 ZHY 玩奇葩的游戏。具体就是开一个 txt 写个 $8 \times 8$ 的 01 矩阵，然后在另一个 txt 默写一遍，两个文件不能同时打开。玩到 $1$ 分 $15$ 秒。&lt;/p&gt;
&lt;p&gt;然后抄写 ZHY 巨佬刚写的第六分块代码 $11.24\ \text{Kb}$，里面全是空格，真的打不来，还不能用 &lt;code&gt;ctrl C,V&lt;/code&gt; 真的烦死了。&lt;/p&gt;
&lt;p&gt;从上往下抄了 $28$ 分钟才抄到核心代码，感觉心态已经炸掉，不打空格了，又写了个 &lt;code&gt;push_up&lt;/code&gt; 函数就颓了。一个 &lt;code&gt;push_up&lt;/code&gt; 函数直接干 $90$ 行，还要用闵可夫斯基和维护。&lt;/p&gt;
&lt;p&gt;不知道玩啥了，就继续颓邮寄。&lt;/p&gt;
&lt;p&gt;下飞机坐地铁，其实不能叫地铁，都是在天上飞的，真的没见过很神奇。&lt;/p&gt;
&lt;p&gt;到酒店入住，然后去报到试机。因为重庆太神奇，上坡下坡爬楼梯一大堆，路都是叠起来，FSB 带队走错好多次，差点迷路，两公里走了 $40$ min，累死。&lt;/p&gt;
&lt;p&gt;进考场一看，全装的是 NOI Linux 2.0，都没用过几次。一看试机题 T1 写 a+b，T2 简单构造，T3 和去年 THUSC 的 T2 一样，其实就还行的平均值原理用一下，但试机还不会写……&lt;/p&gt;
&lt;p&gt;T3 交互还没写完直接给强制关机了。交互都还不会测，只能回酒店继续颓。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;试机题目：&lt;/strong&gt;&lt;a href=&quot;https://uoj.ac/problem/1&quot;&gt;$\boxed{\text{T1}}$&lt;/a&gt;&lt;a href=&quot;https://uoj.ac/problem/225&quot;&gt;$\boxed{\text{T2}}$&lt;/a&gt;&lt;a href=&quot;https://uoj.ac/problem/52&quot;&gt;$\boxed{\text{T3}}$&lt;/a&gt;&lt;strong&gt;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;回酒店又走了三十来分钟，累死。吃了个 KFC，去过了试机 T3，把交互搞会，睡前颓游记，九点半睡觉。&lt;/p&gt;
&lt;h2&gt;2024-01-26 (DAY 1 / -3)&lt;/h2&gt;
&lt;p&gt;彻底寄了。。。&lt;/p&gt;
&lt;p&gt;本来打算 6:10 起来，不知道为啥五点醒了，测洛谷是大吉，&lt;code&gt;rp++&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;然后翻了下犇犇，发现 XHGua 巨佬昨天晚上十一点多发了游记，看了下发现试机去的真的太晚，好多巨佬都没见到，其实也许是认不出来（听说监考的是巨佬）。&lt;/p&gt;
&lt;p&gt;XHGua 巨佬昨天都换了好多徽章，结果我徽章还没到，太离谱了，只能等 WC 的时候再换。&lt;/p&gt;
&lt;p&gt;今天打算跟 XHGua学习下怎么面基巨佬，还加了个面基群，好像还没有审核通过。起床发现审核过了。&lt;/p&gt;
&lt;p&gt;吃早饭，还不错，走去考场，又累半死，把软件配置一下，就等着开题。&lt;/p&gt;
&lt;p&gt;8:00 直接开 T1，神奇的题，一看数据范围 $n \le 15$，我能写出来的这种东西应该就只有状压。&lt;/p&gt;
&lt;p&gt;然后输入写完发现复杂度假了一点，又感觉和费用流像，随便建了个模，看起来非常正确，然后打费用流板子。太久没打寄了好多次，终于不 RE 了然后样例过不了。&lt;/p&gt;
&lt;p&gt;又一看模建错了，搞成一个人的单价了。然后改了半天，因为真的很像网络流都没有怀疑建不出来模，建了不下半个小时感觉真的建不出来了。&lt;/p&gt;
&lt;p&gt;于是浪费了 $1$ h $20$ min 后才去看 T2，算期望？不管了跳过。T3 神奇交互，送了 $24$ 分。&lt;/p&gt;
&lt;p&gt;决定先把所有的暴力都打一遍，打到四个小时才打完了 $45+52+24+15=136$。&lt;/p&gt;
&lt;p&gt;看了下 T3 数据范围，部分分都没看，觉得不会做就跑了，痛失 $27$ 分。&lt;/p&gt;
&lt;p&gt;然后非常神奇，T2 的细节有点多但简单的矩阵快速幂，本来有三十几分的，看成了两分，觉得麻烦就不想写，搞 T1 去了。&lt;/p&gt;
&lt;p&gt;T1 第 3 个包思路对了调了好久，最后一个 $i=0$ 要特判改了过的。多了 $13$ 分，只剩 $12$ min 了。&lt;/p&gt;
&lt;p&gt;然后仍然没发现 T2 矩阵快速幂有三十几分，还以为是两分，写了 $7$ min 感觉不可能写完了，直接颓。&lt;/p&gt;
&lt;p&gt;出赛场了才知道没写 T2 矩阵快速幂有多傻逼，直接寄成 $58+52+24+15=149$……本来 T2 加三十几，T3 加 $27$，就算 T1 的 $13$ 没写也不至于啊……&lt;/p&gt;
&lt;p&gt;ZHY 那个巨佬考 $202$ 说自己考 $89$，真的无语了。出去一问好像我考的最低，个个都考 $200$ 以上，挂的太惨了。&lt;/p&gt;
&lt;p&gt;吃午饭吃完拍合影，那个摄像头转的老慢，还转三圈，还不能动，好烦。&lt;/p&gt;
&lt;p&gt;去听讲座，先讲了无关紧要的东西，然后讲人工智能的实现，挺有趣的。提问环节的名言：明天工程题会要实现人工智能吗，鼓掌鼓掌。&lt;/p&gt;
&lt;p&gt;面基群里有人说尺子姐姐就坐我们这排中间，听完讲座 ZHY 巨佬去换徽章。我暂时没徽章，但尺子姐姐送了一个，太善良了，膜拜。&lt;/p&gt;
&lt;p&gt;晚上到洪崖洞转了一圈，入口进去还以为就这么点，然后看到是九楼。到一楼拍照还是挺壮观的。&lt;/p&gt;
&lt;p&gt;回酒店快九点了，颓游寄……&lt;/p&gt;
&lt;h2&gt;2024-01-27 (DAY 2 / -2)&lt;/h2&gt;
&lt;p&gt;真的全寄了。。。&lt;/p&gt;
&lt;p&gt;早上 4:00 醒了一次，回去睡了，6:30 起床去测试。8:27 发密码条，直接开题。于是。&lt;/p&gt;
&lt;p&gt;昨天刚有人问今天手搓人工智能，然后今天就，。。，手搓人工智能。。。&lt;/p&gt;
&lt;p&gt;想把那人宰了。&lt;/p&gt;
&lt;p&gt;题目是要写一个人工智障和题目的 $25$ 个人工智能下四子棋，每个先后手下两盘，赢几个得几十分。&lt;/p&gt;
&lt;p&gt;打开下发文件，一看有个 PDF，是人工智能原理。看了一半不想看了，后面一大半都要用一堆数学公式，最后都讲到 alphago 原理了，写不了一点。&lt;/p&gt;
&lt;p&gt;一堆算法看了半天决定写 $\alpha\beta$ 剪枝。但讲这东西实现的就一页，特简略，根本看不懂。好在有一堆图解，随便理解一下手搓图解，好像理解是对的。于是光荣的理解错了。&lt;/p&gt;
&lt;p&gt;又想了下估价函数细节，直接开写，写了一小时多算是写完了，写了有 $7$ 个 $\text{Kb}$，然后发现交互题不会编译运行了。&lt;/p&gt;
&lt;p&gt;按题目里的指令搞下来弄了半天，CE 调了好久，终于能运行了，结果全部 RE。他不给主函数，搞得根本不能调试，随便搞了一会，一直把递归深度调到 $2$ 了才好运行。&lt;/p&gt;
&lt;p&gt;于是全部输给了题目的 AI。又调半天，死活赢不了第 $2$ 个 AI。随了 $50$ 组数据，结果胜率只有 $8%$……&lt;/p&gt;
&lt;p&gt;然后开始各种调参数，删代码，加代码，优化估价函数，胜率就是上不去。最后把题都交了一遍，悲催了 $30+10+0+0+0$。又调了两下参数，最后 $5$ min 交了两发给第一题，把十次提交都用完了。赛时没评测出来，最后有没有加分都不知道。&lt;/p&gt;
&lt;p&gt;出去一问个个 $100^+$，完了是真寄了。然后又一问，ZHY 巨佬只写个估价函数没递归有 $150$，XY 直接搜索没带剪枝有 $100^+$，也有估价函数特简略考 $100^+$ 的。结果我一个写了详细估价函数 $+$ $\alpha\beta$ 剪枝的寄光了。不理解。&lt;/p&gt;
&lt;p&gt;晚上吃完火锅回来，想来想去没明白哪里思路有问题，似乎要么就是写挂了，思路有可能出问题的就 $\alpha\beta$ 剪枝部分。然后打开电脑搜详细教程，好家伙，完全理解错了，那一堆图解全是特殊例子，啥都看不出来。心态起飞。&lt;/p&gt;
&lt;p&gt;但现在还不能确定是不是只有这里错了，明天把比赛代码默写一遍继续调吧。&lt;/p&gt;
&lt;p&gt;晚上有 Codeforces？？？打啊！&lt;/p&gt;
&lt;p&gt;微信上问了一圈没人打的，XHGua 没看到消息来不及了（其实 SZC 也打了但我们不知道）。&lt;/p&gt;
&lt;p&gt;但至少 ZHY 打，两个人搞开黑多好。&lt;/p&gt;
&lt;p&gt;装了个 Better CodeForces 插件，自带翻译，爽死了。&lt;/p&gt;
&lt;p&gt;搞了半天结果 ZHY 先开了 T1，只能开 T2 了。一看大水题，三分钟过了，代码放在 &lt;code&gt;note.ms&lt;/code&gt;。然后 ZHY T1 也过了，也放在 &lt;code&gt;note.ms&lt;/code&gt;，随便互抄改改马蜂就过了（&lt;/p&gt;
&lt;p&gt;开 T3，看了半天差点没看懂，结果 ZHY 说是 T1 的 SPJ。$3$ min 似乎有个神秘构造法，先写上去，然后惊奇的发现样例过不了！然后一看是构造小问题，改了，样例过了。&lt;/p&gt;
&lt;p&gt;然后 ZHY 直接交，然后 WA 了，都不敢轻举妄动了。还以为构造假了，改了一会儿，结果 ZHY 多了两发罚时，我多了一发。然后莫名其妙把证明胡了，就离谱。&lt;/p&gt;
&lt;p&gt;看了半天，ZHY 先看到我变量名错了，交了过了；然后再看到 ZHY 多测不清空，交了也过了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$Updated\ on\ 2024\cdot 05\cdot 16$：然而写这篇文章的 SB 并没有过 THUSC 2024 的 D1 T2。。。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;T4 一看通过率离谱，但还是开题，简单数学？ &lt;s&gt;看 ZHY 代码&lt;/s&gt; 写了，吃了一发罚时，&lt;code&gt;ll&lt;/code&gt; 开上过了。&lt;/p&gt;
&lt;p&gt;开 T5。啊？平衡树板子？？和我们出的 &lt;a href=&quot;https://www.luogu.com.cn/contest/145051&quot;&gt;TZOI Round 0&lt;/a&gt; 的 &lt;a href=&quot;https://www.luogu.com.cn/problem/T398695?contestId=145051&quot;&gt;T2 落叶&lt;/a&gt; 这么像？？？&lt;/p&gt;
&lt;p&gt;还 $55$ min 以为能过，结果细节太多没调出来，太离谱了。ZHY 题目看错也没过。&lt;/p&gt;
&lt;h2&gt;2024-01-28 (DAY 3 / -1)&lt;/h2&gt;
&lt;p&gt;一天休息。&lt;/p&gt;
&lt;p&gt;第一件事经 ZHY 巨佬提醒立刻打开 CF 查 Rating。没上紫，但 rk $138$ 涨了 $105$ 还是很满意了。&lt;/p&gt;
&lt;p&gt;吃完早饭先写昨天晚上没搞完的 T5，交了好多发全是 WA，还非常玄学的本地过了 CF 上没过。&lt;/p&gt;
&lt;p&gt;过于玄学不想调了，开写人工智障。一个小时不到默写了个智障（那我考场四个小时在干什麽！）。等 ZHY 把图形化界面写好发现真的是智障。&lt;/p&gt;
&lt;p&gt;调代码，调到中午，还是智障，下午玩了一圈，回来继续调。&lt;/p&gt;
&lt;p&gt;偶然删掉 $\alpha\beta$ 又加了两个特判，不智障了，自己玩了几盘，让 ZHY 玩了几盘，虽然挺轻敌的，但下了几盘确实被电脑虐了。后来认真起来电脑还是打不过的，已经很满意了。&lt;/p&gt;
&lt;h2&gt;2024-01-29 (DAY 0)&lt;/h2&gt;
&lt;p&gt;打算八点去育才参加 WC 啦。&lt;/p&gt;
&lt;p&gt;坐地铁到育才中学，好像是第一组到的，学校都没啥人。搞好报道，拿了一堆东西，学校里转了一圈，坡和楼梯好多，吃个饭要累死。&lt;/p&gt;
&lt;p&gt;入住面到了些巨佬，都是金钩，换了俩徽章。真的社恐，完全不敢说话。顺便把之前欠 ZHY 和 XHGua 的给换上。尺子姐姐找不到，得以后再还。&lt;/p&gt;
&lt;p&gt;好像 ZHY 床位对面就是 WZF 巨佬，压迫感极强。&lt;/p&gt;
&lt;p&gt;下午说好和 XHGua 和 ZHY 一起开黑打 USACO。打得很差，T1 没写出来，结果后面 T2,T3 全是水的。&lt;/p&gt;
&lt;p&gt;晚饭吃完发现操场上有打羽毛球的，过去打了半小时。XHGua 好厉害，被虐惨了。&lt;/p&gt;
&lt;p&gt;去听开幕式，全是套话，没啥好听的。说乐子还是有的，一个开幕式诞生了如下名梗：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;“预祝 NOI 冬奥会取得圆满成功！”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“每个人出生的时候啊，脑袋里空空如也。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我们坚持在双减政策中做好加法。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“搞计算机的就只有 $0$ 和 $1$。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“你拿过省一没有？”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我们举办这么一次活动，是很花钱的，废了很大力气。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“下面欣赏歌曲《我，chen_zhe，纷飞过来！》”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;……&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;开幕式回来被推去和滴叉巨佬换徽章，社恐根本不知道咋说，好在 XHGua 群友说了，顺了个徽章，膜拜几下赶紧跑，真的社死。&lt;/p&gt;
&lt;h2&gt;2024-01-30 (DAY 1)&lt;/h2&gt;
&lt;p&gt;早上六点多就醒了，早上 LXL 讲数据结构，好期待。但为了等 XHGua 群友还是只提前了 $20$ 分钟。&lt;/p&gt;
&lt;p&gt;听说座位随便坐，就和两个台州巨佬一起坐在二楼。突然看到下面有要签名的，被 ZHY 拉着下去了。&lt;/p&gt;
&lt;p&gt;然后到台下 ZHY 就停了，拉都拉不动，就说要我先上去。台下观察 LXL 了好久，等他看起来悠闲的时候带上帽子就冲上去了。回头看到 ZHY 也上来了。&lt;/p&gt;
&lt;p&gt;签名要到了，社死也死过了。但 LXL 长得真挺珂爱的，看不出来像毒瘤。&lt;/p&gt;
&lt;p&gt;LXL 讲可持久化数据结构，不讲分块，ZHY 急死了。讲得应该算挺能懂的，就是到后面跟不上节奏了。&lt;/p&gt;
&lt;p&gt;吃完饭打乒乓去，下午听 IOI rk1 XTQ 巨佬讲课，课前要了签名，人很帅，字也很帅。&lt;/p&gt;
&lt;p&gt;XTQ 讲的是《OI 在 TCS 中的应用》，都是听不懂的东西，成功地把“无权无向图的最短路”“背包问题”“01 序列区间改区间和”讲成了高攀不起的样子。&lt;/p&gt;
&lt;p&gt;反正这东西在理论科学里优化点常数，或者把时间复杂度的指数优化了 $0.09$ 都很 NB，但说实话在 OI 中确实没啥用。&lt;/p&gt;
&lt;p&gt;晚上本来有集训队员论文交流的，以为没人去就没去，结果好像好多人都去了，亏。&lt;/p&gt;
&lt;p&gt;继续打乒乓，回宿舍颓了会儿 phigros 之后去吃夜宵（其实就是点汤圆和水饺）。&lt;/p&gt;
&lt;h2&gt;2024-01-31 (DAY 2)&lt;/h2&gt;
&lt;p&gt;早餐碰到 ZHY 巨佬，催我写 Ynoi 催了好多天了，然后脑子一热立了个 flag，WC 结束之前过掉一到 Ynoi。决定写时代的眼泪，也不知道能不能完成。&lt;/p&gt;
&lt;p&gt;早上 QLR 杂题选讲，要了签名。算是比较简单了，毕竟大部分题目都能听懂，也有写蓝和紫题。就最后放了两道刚考的 IOI 的题。&lt;/p&gt;
&lt;p&gt;下午北京大学某物理系教授 YX 讲量子计算。好多人都翘掉了，本来也想翘的，但还是去了。课上全在颓，电脑连网时发现全报告厅一堆热点，一定都在认真听课。&lt;/p&gt;
&lt;p&gt;上到中间还出一个梗：“你们会矩阵乘法的？”。&lt;/p&gt;
&lt;p&gt;晚上去试机，结果 ZHY 通行牌子还丢了，找了好久。进去一看还真是 NOIP 2021！但为啥我除了 T1 一道原题都没做过啊！&lt;/p&gt;
&lt;p&gt;本来就在 T1 写了个 A+B problem 测试一下，结果好像左右两边两个巨佬都在写。还没 $20$ 分钟左边的就 AK 了，也不知道是不是直接改了样例。&lt;/p&gt;
&lt;p&gt;还是写了 T1 过了题目样例，结果用 SelfEval 测了下成功保龄（由此可见 CCF 给的题目样例是多么的强）。&lt;/p&gt;
&lt;h2&gt;2024-02-01 (DAY 3)&lt;/h2&gt;
&lt;p&gt;WC 测试，做好了保龄的心理准备。&lt;/p&gt;
&lt;p&gt;进考场发现桌上有纸质试题，喂食用的东西，还有五个牌子，要啥举啥牌子。&lt;/p&gt;
&lt;p&gt;八点前电脑都打不开。8:02 开始考试，花 $1$ 分钟搞了一下 sublime 然后开题。&lt;/p&gt;
&lt;p&gt;哇 T1 计数题。不会做。脑子抽了，这种选若干个 $t_i$ 的和不超过 $T$ 的东西不是显然背包吗？没想到。。。暴力一看还挺多的，先开 T2。&lt;/p&gt;
&lt;p&gt;T2 有形式化题面？看不懂一点，还是决定看非形式化。很好，非形式化看懂了。感觉 check 可以贪，草稿纸上画了下发现确实可以贪。嗯为啥贪只和相邻两个大小关系有关？以为推错了，又想了一遍发现没问题。于是 $O(n^2)$ 的算法有了，部分分 $44$，不管了开 T3。&lt;/p&gt;
&lt;p&gt;T3 非常悲催。看了半天样例没看懂。理解了好久都没搞懂，关键是他连个样例解释都没有。觉得很难，不想写了。&lt;/p&gt;
&lt;p&gt;开打暴力，T1 打了 $n=20$ 的暴力，T2 打了 $O(n^2)$ 暴力，加起来有 $35+44=79$ 了。&lt;/p&gt;
&lt;p&gt;然后发现 T1 有特殊性质保证 $t_i$ 可以不用考虑的，这不数学题吗？先写上去，调了一会儿发现大样例没过。看了好久发现分类讨论少讨论了一个，加上过了 $t_i=1$ 的大样例，多了 $20$ 分。&lt;/p&gt;
&lt;p&gt;重新去理解 T3 看看有什么暴力分。在盯着样例看了不下 $20$ 分钟后终于看懂了。一个区间不一定是下面的 pushup 上来的，还可能是父亲和兄弟作差。然后感觉彻底不会了。&lt;/p&gt;
&lt;p&gt;看了眼部分分似乎 $O(n\times 2^{2n})$ 的极其暴力的做法有 $10$ 分。&lt;/p&gt;
&lt;p&gt;又突然感觉 T2 暴力好像能优化成正解，但好像要分 $8$ 类讨论。又突然感觉 T1 的 $a_i=1$ 的特殊性质好像可做，但确实只是好像。&lt;/p&gt;
&lt;p&gt;然后选择困难症犯了，打 T1 特殊性质 $10$ 分，写 T2 正解 $56$ 分，打 T3 暴力 $10$ 分。但 T2 的 $56$ 分真的太诱人了，考虑了 $5$ min 决定写 T2 正解。&lt;/p&gt;
&lt;p&gt;草稿纸上画了半天，似乎用 set 和线段树维护答案比较方便。一看时间还有一个半小时，希望做法不假还在草稿纸上验证正确性搞了 $10$ 分钟。还有 $80$ 分钟开写。&lt;/p&gt;
&lt;p&gt;分类讨论每个都要在草稿上画一大堆东西真的好烦。代码写了 $160^+$ 行终于写完了。测样例，第一个过了，第二个没过，赶紧找错。花五分钟顶针出了错，过了第二个样例。&lt;/p&gt;
&lt;p&gt;然后第三个样例又寄了。此时还有 $20$ 分钟。又选择困难症了，写 T3 暴力至少能搞到 $5$ 分，但也许调出 T2 正解就差这几分钟。&lt;/p&gt;
&lt;p&gt;反正决定调 T2，最后啥也没调出来。听说 ZHY 巨佬做出了同样的选择，但是他 T2 过了。&lt;/p&gt;
&lt;p&gt;一出考场好像 XHGua 也寄了，似乎是 $70+24+0=94$。然后看到 ZHY 跑过来，说他 T3 挂了，问他有没有过题，他说 T1,T2 过了！&lt;/p&gt;
&lt;p&gt;似乎他们 T1 都会做，赶紧问。背包？？？重新看了遍题目。这不是显然背包？？？我考场上想了个啥？？？&lt;/p&gt;
&lt;p&gt;考太差了，估计 Cu 没有。&lt;/p&gt;
&lt;p&gt;下午颓了好久，颓到查分，还好都没挂分，XHGua 写的 T3 暴力，样例没测但拿了 $5$ 分，变成了 $70+24+5=99$ 和我一样。&lt;/p&gt;
&lt;p&gt;然后听题目讲解，T1 真的不想听，T2 正解是个很奇妙的问题转化，处理一下 $O(n)$ 都能做，但不指望能在考场上想到。&lt;/p&gt;
&lt;p&gt;回宿舍一圈问下来都每一个比 $100$ 低的，倒是 $100+0+0=100$ 的一大堆，LHX 巨佬还 AK 了。几天后 FSB 的批是逃不了了。&lt;/p&gt;
&lt;p&gt;晚上有文艺汇演，除了 YC 中学的演出其他都挺不错的，好多 OIer 唱歌都好好。中间有个谁是卧底，极其刺激。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;玩家：线段树；卧底：平衡树。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;玩家：李欣隆；卧底：李白天。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;玩家：OI；卧底：原神。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;2024-02-02 (DAY 4)&lt;/h2&gt;
&lt;p&gt;早上 EI 讲组合递推，讲了 $10$ 分钟然后根本听不懂了，去调四子棋人工智障。一早上过去还是智障。&lt;/p&gt;
&lt;p&gt;下午杂题选讲，又讲了两道 IOI 的题。其他的也勉强能听懂，ZHY 后面全在写刚讲的 IOI 的黑题，调了一会儿交上去花花绿绿一片。&lt;/p&gt;
&lt;p&gt;吃完晚饭去论文答辩，发现根本听不懂，去自习室颓了。听 ZHY 讲了时代的眼泪思路，写个一小半代码就回宿舍。&lt;/p&gt;
&lt;h2&gt;2024-02-03 (DAY 5)&lt;/h2&gt;
&lt;p&gt;程思元讲随机化，去听了，前面能听懂的挺多，还放了随机化的简单（指代码）例题可以去水，挺好的，水了一篮一紫。&lt;/p&gt;
&lt;p&gt;下午讲什么计算机教育，不听，调 Ynoi。于是 Dev-C++ 经典来了，误删后没法撤回，昨天的一小半代码没了要重打。&lt;/p&gt;
&lt;p&gt;阵地转移到自习室，写完继续调，有 ZHY 代码作拍子都不用手打暴力了，很方便。调了快一个小时过了？？？&lt;/p&gt;
&lt;p&gt;看了眼代码发现 ZHY $200^+$ 的代码被压到了 $97$ 行。闲着没事继续压行压到了 $60^-$。&lt;/p&gt;
&lt;p&gt;想起昨天看到的帖子，关于代码每行平均长度，据说在 $[16,20]$ 是正常的。测了一下压行版时代的眼泪，是 $83$。。。&lt;/p&gt;
&lt;p&gt;听说晚上有 ATC 的 ABC。没打过 ATC 的比赛，也不知道 ABC 是什么难度。反正和 ZHY 还有 XHGua 一起报了。&lt;/p&gt;
&lt;p&gt;很惨，一堆罚时，最后一分钟 AK 了。&lt;/p&gt;
&lt;h2&gt;2024-02-04 (DAY 6)&lt;/h2&gt;
&lt;p&gt;最后一天了。集训队论文答辩，非常紧张，之前 SKC 巨佬排到 rk$5$，就看今天了。&lt;/p&gt;
&lt;p&gt;反正讲的东西都听不懂，但第三名花花那个英文自我介绍有点结巴被 DZD 怼了。SKC 讲的很好，反正我认为是六个里讲的最好的。&lt;/p&gt;
&lt;p&gt;以为稳了，但还是没进。哎。&lt;/p&gt;
&lt;p&gt;闭幕式由于打铁根本不想去听，在自习室颓。会寝室送 XHGua 回去，然后躺床上了。&lt;/p&gt;
&lt;h2&gt;2024-02-05 (DAY 7)&lt;/h2&gt;
&lt;p&gt;怎么说呢，全部打铁，寄的不是一点，只能寄希望于 APIO 了。&lt;/p&gt;
&lt;p&gt;飞机上断网搞了四道蓝题，回去测过了三道。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>P10194 [USACO24FEB] Milk Exchange G 题解</title><link>https://candy0014.github.io/posts/solution-p10194</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-p10194</guid><description> </description><pubDate>Wed, 28 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;开始打比赛只剩 $3$ h 了，晚了 $1$ min 提交，痛失铂金……&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P10194&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;有长度为 $n$ 的&lt;strong&gt;环形&lt;/strong&gt;序列 $a$，初始时 $b=a$，每次操作令 $b_i=\min(b_{i-1},a_i),\forall\ i \in [1,n]$。&lt;/p&gt;
&lt;p&gt;求前 $n$ 次操作，每次操作后 $b$ 数组的和。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;这里使用 &lt;code&gt;3 8 9 2 5 4 7 1 6&lt;/code&gt; 这个样例来进行模拟。&lt;/p&gt;
&lt;p&gt;由于奶牛是排成一圈的，所以可以将容量最小的奶桶轮换到第一个。此时，牛奶的量变为 &lt;code&gt;1 6 3 8 9 2 5 4 7&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这时容易发现，第 $i$ 个奶桶的牛奶量在 $j$ 次操作后，会变成 $\min\limits_{k=\max(i-j+1,1)}^i {a_k}$。&lt;/p&gt;
&lt;p&gt;这时候仍然不好观察，每次操作后每个奶桶的牛奶量变化，但是当我们把所有每次操作后牛奶量的表画出来时，就变得方便多了：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;操作&lt;/th&gt;
&lt;th&gt;$\color{red}1$&lt;/th&gt;
&lt;th&gt;$\color{purple}2$&lt;/th&gt;
&lt;th&gt;$\color{yellow}3$&lt;/th&gt;
&lt;th&gt;$\color{brown}4$&lt;/th&gt;
&lt;th&gt;$\color{blue}5$&lt;/th&gt;
&lt;th&gt;$\color{green}6$&lt;/th&gt;
&lt;th&gt;$\color{gray}7$&lt;/th&gt;
&lt;th&gt;$\color{orange}8$&lt;/th&gt;
&lt;th&gt;$\color{pink}9$&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$0$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{purple}6$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{brown}8$&lt;/td&gt;
&lt;td&gt;$\color{blue}9$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{gray}5$&lt;/td&gt;
&lt;td&gt;$\color{orange}4$&lt;/td&gt;
&lt;td&gt;$\color{pink}7$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{brown}8$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{orange}4$&lt;/td&gt;
&lt;td&gt;$\color{orange}4$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$2$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{orange}4$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$3$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$4$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$5$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$6$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$7$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{green}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$8$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;td&gt;$\color{red}1$&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以发现，除了 $1$ 号奶桶容量在表中构成了一个完整的三角形，其它奶桶容量都构成了一个平行四边形。我们要求的答案，就是每行数的总和。&lt;/p&gt;
&lt;p&gt;对于 $i$ 号桶对应的平行四边形，其对每一行产生的贡献，可以分为三段：一段公差为 $a_i$ 的等差数列，一段公差为 $0$ 的等差数列，一段公差为 $-a_i$ 的等差数列。而区间加等差数列是一个十分经典的问题，两次差分即可解决，如果不会请出门右转 &lt;a href=&quot;https://www.luogu.com.cn/problem/P4231&quot;&gt;P4231 三步必杀&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;显然，我们只要知道出 $i$ 号桶对应平行四边形的底（$a$）和高（$h$），就能计算出要加的是哪三段等差数列。下面考虑平行四边形的底和高如何计算。我们用 $i=3$ 号桶对应的平行四边形举例。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;操作&lt;/th&gt;
&lt;th&gt;${}1$&lt;/th&gt;
&lt;th&gt;${}2$&lt;/th&gt;
&lt;th&gt;${}3$&lt;/th&gt;
&lt;th&gt;${}4$&lt;/th&gt;
&lt;th&gt;${}5$&lt;/th&gt;
&lt;th&gt;${}6$&lt;/th&gt;
&lt;th&gt;${}7$&lt;/th&gt;
&lt;th&gt;${}8$&lt;/th&gt;
&lt;th&gt;${}9$&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$0$&lt;/td&gt;
&lt;td&gt;${\color{blue}{\blacksquare}}1$&lt;/td&gt;
&lt;td&gt;${}6$&lt;/td&gt;
&lt;td&gt;${\color{purple}{\blacksquare}}\color{yellow}3$&lt;/td&gt;
&lt;td&gt;${}8$&lt;/td&gt;
&lt;td&gt;${}9$&lt;/td&gt;
&lt;td&gt;${\color{orange}{\blacksquare}}2$&lt;/td&gt;
&lt;td&gt;${}5$&lt;/td&gt;
&lt;td&gt;${}4$&lt;/td&gt;
&lt;td&gt;${}7$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${\color{green}{\blacksquare}}\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;${}8$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}4$&lt;/td&gt;
&lt;td&gt;${}4$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$2$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${\color{red}{\blacksquare}}1$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}4$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$3$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;$\color{yellow}3$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$4$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$5$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$6$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$7$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}2$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$8$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;td&gt;${}1$&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;$$a=dis({\color{purple}{\blacksquare}},{\color{green}{\blacksquare}})=dis({\color{purple}{\blacksquare}},{\color{red}{\blacksquare}})-1=dis({\color{purple}{\blacksquare}},{\color{blue}{\blacksquare}})-1=i-pre_i=3-pre_3=2$$&lt;/p&gt;
&lt;p&gt;$$d=dis({\color{purple}{\blacksquare}},{\color{orange}{\blacksquare}})-1=nex_i-i=nex_3-3=3$$&lt;/p&gt;
&lt;p&gt;其中 $pre_i$ 和 $nex_i$ 分别表示在 $i$ 之前最后一个小于等于 $a_i$ 的下标，以及在 $i$ 之后第一个小于 $a_i$ 的下标。这两个数组可以通过单调栈求得。&lt;/p&gt;
&lt;p&gt;理由也很好解释：$i$ 号桶在 $i-pre_i$ 次操作后，就只能剩下 $a_{pre_i}$ 升牛奶；$i$ 号桶的奶在传到 $nex_i$ 时，就只能剩下 $a_{nex_i}$ 升牛奶。&lt;/p&gt;
&lt;p&gt;所以我们可以求出 $i$ 号桶对应的底为 $i-pre_i$，对应的高为 $nex_i-i$。然后就能求出三个区间并进行区间加等差数列的操作。&lt;/p&gt;
&lt;p&gt;这里有一个小细节：为什么 $pre_i$ 算的是小于等于 $a_i$，而 $nex_i$ 算的是小于 $a_i$。其实为了不重不漏地填数，两个必须是一个小于，一个小于等于。但由于我们开始时默认 $1$ 号桶构成的是一个三角形，而如果 $pre_i$ 算的是小于 $a_i$，那么若再碰到和 $a_1$ 相等的 $a_i$，就会加上一个超出表格的梯形，并且还会重复加一个单元格，所以 $pre_i$ 算的必须是小于等于。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long long ll;//不开 long long 见祖宗
const ll N=5e5+5;
ll n,a[N&amp;lt;&amp;lt;1];
ll pre[N],nex[N];
ll mi=1e9,mik;
ll st[N],r;
ll p[N];//差分数组
void change(ll l,ll r,ll x,ll d){//将从 l 到 r 的数加上以 x 为首项，d 为公差的等差数列
	if(l&amp;gt;r) return;
	ll y=x+(r-l)*d;
	p[l]+=x,p[l+1]-=x;
	p[l+1]+=d,p[r+1]-=d;
	p[r+1]-=y,p[r+2]+=y;
}
int main(){
	#ifndef ONLINE_JUDGE
	freopen(&quot;test.in&quot;,&quot;r&quot;,stdin);
	freopen(&quot;test.out&quot;,&quot;w&quot;,stdout);
	#endif
	ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
	cin&amp;gt;&amp;gt;n;
	for(ll i=1;i&amp;lt;=n;i++){
		cin&amp;gt;&amp;gt;a[i],a[i+n]=a[i];
		if(mi&amp;gt;a[i]) mi=a[i],mik=i;
	}
	for(ll i=1;i&amp;lt;=n;i++) a[i]=a[i+mik-1];//将最小值移到第一个

	r=0,st[r]=1;//单调栈求 pre 数组
	for(ll i=2;i&amp;lt;=n;i++){
		while(r&amp;gt;=1&amp;amp;&amp;amp;a[st[r]]&amp;gt;a[i]) r--;
		pre[i]=st[r],st[++r]=i;
	}
	r=0,st[r]=n+1;//单调栈求 nex 数组
	for(ll i=n;i&amp;gt;=2;i--){
		while(r&amp;gt;=1&amp;amp;&amp;amp;a[st[r]]&amp;gt;=a[i]) r--;
		nex[i]=st[r],st[++r]=i;
	}

	change(1,n,a[1],a[1]);
	for(ll i=2;i&amp;lt;=n;i++){
		ll A=i-pre[i],D=nex[i]-i;//平行四边形的底为 A，高为 D
		if(A&amp;lt;=D){//分类讨论
			change(1,A-1,a[i],a[i]);
			change(A,D,a[i]*A,0);
			change(D+1,A+D-1,a[i]*(A-1),-a[i]);
		}
		else{
			change(1,D,a[i],a[i]);
			change(D+1,A-1,a[i]*D,0);
			change(A,A+D-1,a[i]*D,-a[i]);
		}
	}

	for(ll i=1;i&amp;lt;=n;i++) p[i]+=p[i-1];//做两次前缀和还原数组
	for(ll i=1;i&amp;lt;=n;i++) p[i]+=p[i-1];
	for(ll i=2;i&amp;lt;=n;i++) cout&amp;lt;&amp;lt;p[i]&amp;lt;&amp;lt;&quot;\n&quot;;
	cout&amp;lt;&amp;lt;p[n]&amp;lt;&amp;lt;&quot;\n&quot;;//n 次操作后的结果和 n-1 次操作的结果相同
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>联合省选 2024 游记</title><link>https://candy0014.github.io/posts/travelogue-zjoi-2024</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-zjoi-2024</guid><description> </description><pubDate>Mon, 04 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2024-02-26 (DAY -5)&lt;/h2&gt;
&lt;p&gt;终于收到通知能去联合省选 &lt;s&gt;（颓废）&lt;/s&gt; 了！&lt;/p&gt;
&lt;h2&gt;2024-02-27 (DAY -4)&lt;/h2&gt;
&lt;p&gt;早上翘课打 FSB 的模拟赛，写了个比赛记录 &lt;a href=&quot;https://www.luogu.com.cn/article/oa8tg4fo&quot;&gt;2024-02-27 省选模拟赛&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;2024-03-02 (DAY 0)&lt;/h2&gt;
&lt;p&gt;省选第一天，早上 6:40 起床，吃了早饭和好多 NB 巨佬去考场，考场楼下又面到 XHGua 了。&lt;/p&gt;
&lt;p&gt;到考场刚好 7:45，准考证上说要 7:45 之前到的，结果一看考场里一个人也没有。密码条和草稿纸都没有，电脑也登不进，就趴桌上睡。&lt;/p&gt;
&lt;p&gt;大概 8:00 发密码条了，趁考生须知还没开始念，赶紧登电脑把文件夹都建好，还配置了下 sublime。结果考生须知念了几遍后，对面有个巨佬碰键盘被监考的训了。&lt;/p&gt;
&lt;p&gt;8:20 提前 $10$ min 发解压密码，可以看题了。&lt;/p&gt;
&lt;p&gt;一看 T1，非常神奇，给了一小段非形式化，接下来就写形式化题面了。&lt;/p&gt;
&lt;p&gt;给了个看起来像代数的形式化题面，结果非形式化题面写的是几何。觉得应该用几何做会方便一点，直接建系，似乎范围是不断扩大的菱形，此时觉得要做出来了。&lt;/p&gt;
&lt;p&gt;又过 $15$ min 想到要求的式子可以搞成，一个以 $n$ 个向量依次循环运动的点，多久能进一个不断扩大的菱形区域。&lt;/p&gt;
&lt;p&gt;打算对每个点所构成的集合依次处理。想了个三分的做法，但好像写不出来（幸好没继续想，最后发现时限 $0.5$ s）。然后想分象限讨论，正确性也许是对的，但代码难写。&lt;/p&gt;
&lt;p&gt;又想了 $10$ min 并没有想出更好的方法，四个分讨写就写吧。刚写了一个分讨，发现第二个分讨只要把前一个的坐标乘一个 $-1$ 就好。多想了想，好像没啥问题。于是两个循环套上第一个分讨把码量减少了 $\dfrac{3}{4}$。&lt;/p&gt;
&lt;p&gt;代码好多细节，写到了十点多，写完了。小样例最后一个询问寄了，检查了好久，发现追及问题都不会做了，顺便顶针出几个下标写错的。&lt;/p&gt;
&lt;p&gt;小样例过了，第二个大样例寄了，又看了好久，也许是一个多小时，终于 debug 出了两个向上取整写成向下取整的，改了甚至过了第三个大样例。写完大概是 11:10，感觉一身轻松。&lt;/p&gt;
&lt;p&gt;出去上了个厕所回来想 T2，不想正解了，看一档部分分写一档，前六个点非常可做，写了两段暴力。特殊性质 B 看起来也挺好做的，想了半个小时左右想出来了，二分答案加树形 dp，调到快结束，终于过了大样例，$40$ 分到手。&lt;/p&gt;
&lt;p&gt;最后剩个 $15$ min，T3 暴力根本来不及打，直接放弃，输出了 &lt;code&gt;ZHYAKIOI!!!&lt;/code&gt;。最后 $2$ min 检查文件名，幸好没问题。&lt;/p&gt;
&lt;p&gt;出考场一问 ZHY 输入格式炸了调了好久，痛失 AC。 &lt;s&gt;鉴于 THUWC 的那两次，直到他把博客发出来才停止怀疑。&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;XHGua 似乎稳定发挥，暴力都打满了。ZHY 的 T3 打了 $8$ 分，非常惊讶（暴力是 $16$ 分），结果他说输出 $n!$ 有特殊性质分，我去，白丢 $8$ 分。WZJ 估分 $100+40+16=156$，也没注意到 T3 的特殊性质（&lt;/p&gt;
&lt;p&gt;回房间突然听说 T1 的 $inf$ 要开到 $3\times 10^{18}$，我只开了 $1\times 10^{18}$ 啊！算了我们要坚信 CCF 的脚是构造不出这种数据的。&lt;/p&gt;
&lt;p&gt;下午教 ZHY 学自行车，很快就学会了。比赛他骑一圈我骑两圈，结果慢了几秒。&lt;/p&gt;
&lt;p&gt;晚上去 WZJ 房间聊天，他说 T2 的二分答案在只有一个数的情况时，$r$ 要开到 $2^{k+1}$，完了又没开到！心态炸了，希望不要出这么缺德的数据。&lt;/p&gt;
&lt;p&gt;晚上十点多就被强制入睡了。&lt;/p&gt;
&lt;h2&gt;2024-03-03 (DAY 1)&lt;/h2&gt;
&lt;p&gt;大寄，没啥好写的了。&lt;/p&gt;
&lt;p&gt;T1 花半个小时打完了 $40$ 分暴力，看 T2，似乎有几档部分分比较好写的，但决定先想 T1 的特殊性质。&lt;/p&gt;
&lt;p&gt;总之就是想了好多思路，其中还有好些能优化到正解的，反正全部假了。写了两个半小时没过大样例，最后一个思路写出来的代码就只在一个大样例的一组数据里寄了两个数字。&lt;/p&gt;
&lt;p&gt;本来觉得马上要调出来了，调了 $10$ min 发现有些不对劲，按刚才的思路手推这个样例寄了。然后发现之前默认正确的一个结论假了，三个小时白费。&lt;/p&gt;
&lt;p&gt;剩 $40$ min 打 T2，一看暴力只有 $5$ 分，还很麻烦，就去打特殊性质 B，结果打到最后 $10$ min 过不了大样例，发现又假了。来不及写 $5$ 分暴力了，特判了两组数据跑路。&lt;/p&gt;
&lt;p&gt;问 ZHY 说 T1 会 $O((2^n)^2)=O(4^n)$ 树形 dp，加上特殊性质 A 有 $80$ 分，T2 暴力打满有 $30$ 分。虽然翻不了盘但至少 DAY 2 在全省排的上号。听说 ZHY 在地铁站想出了 T1 正解。&lt;/p&gt;
&lt;p&gt;反正最后就 $40+10+0=50$，还没 DAY 0 一半高，寄光了。&lt;/p&gt;
&lt;h2&gt;2024-03-07&lt;/h2&gt;
&lt;p&gt;哎出分挂得好惨。DAY 1 T1 挂了 $20$，T2 挂了 $20$，一共挂了 $40$。&lt;/p&gt;
&lt;p&gt;考试的时候手欠以为 T1 的 $\text{inf}$ 开太大会爆 $\text{ll}$，然后改成了 $4\times 10^9$，成功的寄了。回来改成 $10^{12}$ 过了，白挂 $20$ 分。&lt;/p&gt;
&lt;p&gt;T2 代码忘了没测，可能是后面那个二分答案的上界问题吧，不清楚。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>CSP-S 2024 游记</title><link>https://candy0014.github.io/posts/travelogue-csps-2024</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-csps-2024</guid><description> </description><pubDate>Tue, 08 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2024-11-12: 因【数据删除】迁至&lt;a href=&quot;/posts/travelogue-ex-csps-2024&quot;&gt;游记完整版&lt;/a&gt;
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;【数据删除】&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;2024-09-20 (DAY -1)&lt;/h2&gt;
&lt;p&gt;学校很早就放了，回家颓了一会儿和 ZHY 做地铁去火车站回台州。&lt;/p&gt;
&lt;p&gt;路上从 ZHY 那里学了一些「仍在依据宋蛇的言语持续不断地添加、修改内容」的宋语。&lt;/p&gt;
&lt;p&gt;火车晚点了 $10$ min，在火车站让 ZHY 胡一道刚做的计数 dp，检票时间只剩 $2$ min 才看到，差点进去不。&lt;/p&gt;
&lt;h2&gt;2024-09-21 (DAY 0)&lt;/h2&gt;
&lt;p&gt;不考 J 组的感觉挺好的，早上不用早起，颓了一早上就去考点。&lt;/p&gt;
&lt;p&gt;考点考试前可以用机房作休息室，好评。面到了台中来考 S 组的同学，还有 MarsTraveller，结果他 Phi 的 rks 都 $15.50$ 多了，然后我就成我认识的音游人里最菜的了。&lt;/p&gt;
&lt;p&gt;到 2:00 去考场，结果考场门口连个安检的都没有，非常难绷。坐我后面的初二应该是镇中台的主力，旁边一堆他同学围着他，他好像还知道 ZHY。&lt;/p&gt;
&lt;p&gt;考前和他聊天，问了一下，他初一 CSP-S 就二等了，和俺一样。但还是感觉要被单调队列了。据说 J 组初赛改了一堆题目，好像说在比赛结束后几秒还有老师进来要改题目，和监考老师说了几句后又说不用改了（大雾。然后和他说 S 组初赛题目至少得挂两三道。&lt;/p&gt;
&lt;p&gt;试卷发下来离开考还有两三分钟，直接开干选择题，结果写完两面后被监考老师警告了，所以开始前只能用肉眼顶针。&lt;/p&gt;
&lt;p&gt;开考后 $5$ min 做了选择题，一题环计数当寄了空着，还有不知道哈希表咋搞空了两题。&lt;/p&gt;
&lt;p&gt;后面做得还是挺快的，$1$ h 做完，就是完善程序的答案让人不敢相信自己的答案是正确的。本来以为去年的 $\texttt{ABCDAABCDA}$ 已经挺离谱的了，今年直接放 $9$ 个 $\texttt{A}$？&lt;/p&gt;
&lt;p&gt;回去补了选择题的环计数，哈希表不会就随便蒙了一个。&lt;/p&gt;
&lt;p&gt;但是初赛题目并没有挂 &lt;s&gt;，差评&lt;/s&gt;。&lt;/p&gt;
&lt;p&gt;晚上和台州的 OIer 吃饭，对了下答案，发现全寄光了。哈希表寄了，$16$ 个节点的完全二叉树只有 $4$ 层，眼瞎没看到 &lt;code&gt;inf=0x1f&lt;/code&gt;，总之挂了好多分。ZHY 就挂了一个判断。&lt;/p&gt;
&lt;p&gt;吃饭的时候给他们普及 Songlish，听了千本宋，打了 omegagros，斗了地主。虽然挂了一堆分但还是挺高兴的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;【数据删除】&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;2024-10-25 (DAY -1)&lt;/h2&gt;
&lt;p&gt;早上不打算写题，直接开始翻知乎。后来看到 XiaY 和 ifffer 在打板子比赛，进去过了几道题。&lt;/p&gt;
&lt;p&gt;然后被 FSB 拉出去听他放 P（FSB 原话）。罚站近一个小时，全程绷不住，反正大部分都是“建一个输入文件，生成一个输出文件”之类的东西。但是比以前多了他花 $200$ 块钱幻想自己是小说龙族男主统治世界从一个地球飞到另一个球的奇幻故事。&lt;/p&gt;
&lt;p&gt;下午和 BP,ZHY,XiaY 坐火车去杭州。打了一车的块，和别人 1V1 了一把，但火车进隧道网络直接断掉击飞了。&lt;/p&gt;
&lt;p&gt;晚上继续颓，打了下 Phi 刷了会儿视频就睡了。&lt;/p&gt;
&lt;h2&gt;2024-10-26 (DAY 0)&lt;/h2&gt;
&lt;p&gt;早上自然醒。去杭师大里面转了一圈，然后去 BP 酒店。说做出来一道题就走着去厕所，实在憋不住了就跑着去厕所。&lt;/p&gt;
&lt;p&gt;中午去外面吃午饭，想起 ifffer 还考普及，于是猜他会不会卡在 T3。12:00 一到立刻轮番轰炸 ifffer 手机，但连着轰了 $20$ min 还是没人接。&lt;/p&gt;
&lt;p&gt;半个小时的时候 ifffer qq 发 XiaY 消息了，太感动了竟然做出了 T3。&lt;/p&gt;
&lt;p&gt;中午回去睡了半小时，就延那条走了好多遍的路去那个考了好多场试的考场。&lt;/p&gt;
&lt;p&gt;安检进场。发现了 XiaY 和 ZHY。&lt;/p&gt;
&lt;p&gt;开考前 $10$ min 下发大样例密码。翻了下数据，除了一题比较神奇以外没啥能看出来的。趁监考老师不注意把文件夹建好了。&lt;/p&gt;
&lt;p&gt;开考前 $2$ min 下发题面密码。输错了一次很难绷。&lt;/p&gt;
&lt;p&gt;开 T1！马上会了。开考先去配了 sublime，然后开打，$5$ min 一遍过大样例。&lt;/p&gt;
&lt;p&gt;开 T2，顶针了 $1$ min 后会了。上来先打了一堆分讨。写完第一问代码，打算先看下对不对。结果第一问没过去。心态比较崩，调了半天，多写了个 &lt;code&gt;++cnt&lt;/code&gt;。写第二问，一遍过了小样例。此时看到 ZHY 走着去了一次厕所。&lt;/p&gt;
&lt;p&gt;测大样例，击飞。发现多测不清空，改了，测大样例，击飞，第一问答案有的和正确答案差 $1$。觉得是精度问题，改小了 &lt;code&gt;eps&lt;/code&gt;，还是击飞。于是打算先放着 T2 去看后面的题。&lt;/p&gt;
&lt;p&gt;开 T3，手推样例猜了些奇怪的结论，发现都是对的，但不知道有啥用。根据这些性质推了很久，结果花了快 $1$ h 得出了一个强于原问题的不可做题。中间还看到 ZHY 又走着去了一次厕所。&lt;/p&gt;
&lt;p&gt;换了个思路，搞了个 $O(n^2)$ dp。突然发现相邻相同的数必是同种颜色，于是缩掉后 $dp_{l,r}=dp_{l,l}$？dp 状态直接变成一维的了？转移直接可以 $O(1)$ 了？然后就做完了？不太敢相信。但又想到 ZHY 两次上厕所时间这么近，也是有可能的。&lt;/p&gt;
&lt;p&gt;花 $5$ min 敲完了代码，改了个初始权值的小 bug，小样例直接过，测大样例，一遍过！看了眼转移，只有两行，压行可以压成一行。逆天 T3。&lt;/p&gt;
&lt;p&gt;看完 T4 题面后想起 T2 大样例还没过，debug 了 $15$ min 发现少写了个特判，加上过了。&lt;/p&gt;
&lt;p&gt;还剩两个小时不到一点，开肝 T4。看题目就感觉非常不可做，胡了个自认为很对的 $O(n\log n)$ 的东西后直接写。写到还剩 $30$ min 的时候终于过了小样例。&lt;/p&gt;
&lt;p&gt;然后脑子就抽了，直接跳过了两个特殊性质的大样例去测了没有特殊性质的。发现击飞了把把。输出还是加密过的，根本发不现是咋寄的。&lt;/p&gt;
&lt;p&gt;决定肉眼顶针，顶到结束也没顶出来。于是到考试结束也没有测两个特殊性质。&lt;/p&gt;
&lt;p&gt;最后 $1$ min 草率地检查了一下 &lt;code&gt;freopen&lt;/code&gt;，然后就结束了。&lt;/p&gt;
&lt;p&gt;ZHY 过来说他 $1$ h 过了前三题，T4 写了 $3$ h 没分。BP 结束前 $10$ min 调完了 $O(n\log n)$。&lt;/p&gt;
&lt;p&gt;出去一问，发现人均过前三题。T4 冲正解或 $O(n\log n)$ 的大部分都没啥分，倒是写暴力和特殊性质的搞到了一堆分。反正就是一个大无语的状态。&lt;/p&gt;
&lt;p&gt;但几乎所有人 T2 都写的二分查找，我一个人写的浮点数，慌死。&lt;/p&gt;
&lt;p&gt;地铁上才发现自己做法假掉了。想起还有特殊性质，似乎做法在特殊性质上是对的？不是，我没测特殊性质大样例啊！所以知不道是不是能过特殊性质了。但大概率是过不了。&lt;/p&gt;
&lt;p&gt;BP 说群里说 T2 大样例很水，只能希望 T2 不要挂分。&lt;/p&gt;
&lt;p&gt;现在 NOIP 是知不道能能不去了。&lt;/p&gt;
&lt;h2&gt;2024-11-02&lt;/h2&gt;
&lt;p&gt;晚上才知道后天就出分了。保佑不要挂分啊！&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.                    _ooOoo_
                    o8888888o
                    88&quot; . &quot;88
                    (| -_- |)
                     O\ = /O
                 ____/`---&apos;\____
               .   &apos; \\| |// `.
                / \\||| : |||// \
              / _||||| -:- |||||- \
                | | \\\ - /// | |
              | \_| &apos;&apos;\---/&apos;&apos; | |
               \ .-\__ `-` ___/-. /
            ___`. .&apos; /--.--\ `. . __
         .&quot;&quot; &apos;&amp;lt; `.___\_&amp;lt;|&amp;gt;_/___.&apos; &amp;gt;&apos;&quot;&quot;.
        | | : `- \`.;`\ _ /`;.`/ - ` : | |
          \ \ `-. \_ __\ /__ _/ .-` / /
  ======`-.____`-.___\_____/___.-`____.-&apos;======
                     `=---=&apos;
 
  .............................................
           佛祖保佑             永无BUG
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2024-11-04&lt;/h2&gt;
&lt;p&gt;下午发现吃饭时间没到机房声音就大起来了。登上官网一看是四点出分。于是也没做题了，等着出分。&lt;/p&gt;
&lt;p&gt;有可能是 OI 生涯最后的几分钟，如果 T2 和 T4 挂掉的话。但希望不是。&lt;/p&gt;
&lt;p&gt;时间一到，点开成绩，竟然没有卡顿，然后 &lt;strong&gt;成绩单未上传，请稍后查看&lt;/strong&gt;。然后点出去一看，偷偷把时间改到了 5:30！逆天 CCF！&lt;/p&gt;
&lt;p&gt;下面为了平复心情写了道题，食堂吃完饭回来打块。&lt;/p&gt;
&lt;p&gt;到五点半，登到官网，卡了。完了是真出分了。&lt;/p&gt;
&lt;p&gt;狂按 &lt;code&gt;F5&lt;/code&gt;，还真给刷出来了。一看成绩，$340$！$100+100+100+40=340$！竟然没挂！看来前几天攒的 rp 果然有用！&lt;/p&gt;
&lt;p&gt;好像是机房里第一个刷出来的。其他人刷了好久刷出来了 $504$ 分。&lt;/p&gt;
&lt;p&gt;最后好像大家都没大挂，但是 ZHY T4 没调出来有点伤心。其他还是皆大喜欢的。&lt;/p&gt;
&lt;p&gt;晚上填了 NOIP 推荐表。&lt;/p&gt;
&lt;p&gt;希望这篇游记可以继续往下写。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>CSP-S 2024 游记（完整版）</title><link>https://candy0014.github.io/posts/travelogue-ex-csps-2024</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-ex-csps-2024</guid><description> </description><pubDate>Tue, 08 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2024-11-12: 由&lt;a href=&quot;/posts/travelogue-csps-2024&quot;&gt;原游记&lt;/a&gt;迁移至此
:::&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把前后好多天的东西都写进去了，批话很多。嫌烦可以直接点目录。&lt;/p&gt;
&lt;h2&gt;2024-09-01&lt;/h2&gt;
&lt;p&gt;据说 zhzx 那边有教育局领导来视察，还要等一个星期才能过去。&lt;/p&gt;
&lt;p&gt;初中已经开学了，也没有去学校最后见一见原来的初中同学，还是有点小遗憾的。希望以后还可以面基到。&lt;/p&gt;
&lt;h2&gt;2024-09-09&lt;/h2&gt;
&lt;p&gt;可以去 NB 了，在 jcsy 呆了一天，晚上会出租房上了个化学课。应该是周一和周三晚上要上 $1$ h 的化学。&lt;/p&gt;
&lt;h2&gt;2024-09-10&lt;/h2&gt;
&lt;p&gt;去 zhzx，选的电脑位置比较难绷（正对着机房大门口，后面忘了）。&lt;/p&gt;
&lt;p&gt;下午打模拟赛，是 ZHY 和 BP 昨天拉的。&lt;/p&gt;
&lt;p&gt;后面每几天就要有人拉一场模拟赛，美其名曰“限时训练”（和原初中的“周末限时作业”有异曲同工之妙）。&lt;/p&gt;
&lt;p&gt;比较好的是中午和晚饭之后机房没老师管，可以干些别的事情，但由于位置比较难绷好几次翻了。&lt;/p&gt;
&lt;p&gt;发现机房打的游戏单一化了，以前基本都是打 generals 的，现在全变打块了，不会打块的还有下军棋，好像研发出了一堆奇怪的打法（比如工兵可以当炸弹之类的）。也有打 Celeste 的。&lt;/p&gt;
&lt;h2&gt;2024-09-19&lt;/h2&gt;
&lt;p&gt;打完模拟赛，晚上去找点以前的初赛题做，结果发现全都做过不知道几遍了，所以开始玩花活。但发挥失误还是不小心拿到了 $3$ pts 的好成绩。&lt;/p&gt;
&lt;h2&gt;2024-09-20 (DAY -1)&lt;/h2&gt;
&lt;p&gt;学校很早就放了，回家颓了一会儿和 ZHY 做地铁去火车站回台州。&lt;/p&gt;
&lt;p&gt;路上从 ZHY 那里学了一些「仍在依据宋蛇的言语持续不断地添加、修改内容」的宋语。&lt;/p&gt;
&lt;p&gt;火车晚点了 $10$ min，在火车站让 ZHY 胡一道刚做的计数 dp，检票时间只剩 $2$ min 才看到，差点进去不。&lt;/p&gt;
&lt;h2&gt;2024-09-21 (DAY 0)&lt;/h2&gt;
&lt;p&gt;不考 J 组的感觉挺好的，早上不用早起，颓了一早上就去考点。&lt;/p&gt;
&lt;p&gt;考点考试前可以用机房作休息室，好评。面到了台中来考 S 组的同学，还有 MarsTraveller，结果他 Phi 的 rks 都 $15.50$ 多了，然后我就成我认识的音游人里最菜的了。&lt;/p&gt;
&lt;p&gt;到 2:00 去考场，结果考场门口连个安检的都没有，非常难绷。坐我后面的初二应该是镇中台的主力，旁边一堆他同学围着他，他好像还知道 ZHY。&lt;/p&gt;
&lt;p&gt;考前和他聊天，问了一下，他初一 CSP-S 就二等了，和俺一样。但还是感觉要被单调队列了。据说 J 组初赛改了一堆题目，好像说在比赛结束后几秒还有老师进来要改题目，和监考老师说了几句后又说不用改了（大雾。然后和他说 S 组初赛题目至少得挂两三道。&lt;/p&gt;
&lt;p&gt;试卷发下来离开考还有两三分钟，直接开干选择题，结果写完两面后被监考老师警告了，所以开始前只能用肉眼顶针。&lt;/p&gt;
&lt;p&gt;开考后 $5$ min 做了选择题，一题环计数当寄了空着，还有不知道哈希表咋搞空了两题。&lt;/p&gt;
&lt;p&gt;后面做得还是挺快的，$1$ h 做完，就是完善程序的答案让人不敢相信自己的答案是正确的。本来以为去年的 $\texttt{ABCDAABCDA}$ 已经挺离谱的了，今年直接放 $9$ 个 $\texttt{A}$？&lt;/p&gt;
&lt;p&gt;回去补了选择题的环计数，哈希表不会就随便蒙了一个。&lt;/p&gt;
&lt;p&gt;但是初赛题目并没有挂 &lt;s&gt;，差评&lt;/s&gt;。&lt;/p&gt;
&lt;p&gt;晚上和台州的 OIer 吃饭，对了下答案，发现全寄光了。哈希表寄了，$16$ 个节点的完全二叉树只有 $4$ 层，眼瞎没看到 &lt;code&gt;inf=0x1f&lt;/code&gt;，总之挂了好多分。ZHY 就挂了一个判断。&lt;/p&gt;
&lt;p&gt;吃饭的时候给他们普及 Songlish，听了千本宋，打了 omegagros，斗了地主。虽然挂了一堆分但还是挺高兴的。&lt;/p&gt;
&lt;h2&gt;2024-09-??&lt;/h2&gt;
&lt;p&gt;第一次听说有学校可以把两个单休调到国庆放两天的（雾&lt;/p&gt;
&lt;h2&gt;2024-10-01&lt;/h2&gt;
&lt;p&gt;至少还是有放假的。去舟山朱家尖玩了一天，海浪挺大的，好评。&lt;/p&gt;
&lt;h2&gt;2024-10-03&lt;/h2&gt;
&lt;p&gt;两天放完了，剩下几天全打模拟赛，是几所学校一人出一场。pdf 标题上写的全是 NOIP 模拟赛，但是有近一半的概率爆出省选模拟赛的难度，每场打出来的分数的方差及其巨大。&lt;/p&gt;
&lt;h2&gt;2024-10-22&lt;/h2&gt;
&lt;p&gt;打的最烂的一次。&lt;/p&gt;
&lt;p&gt;T1 $10$ min 写完了，数组开小一个 $0$ 挂成 $70$。&lt;/p&gt;
&lt;p&gt;T2 $50$ min 写完了，没看到空间限制没写滚动数组挂成 $60$。&lt;/p&gt;
&lt;p&gt;T3 屎山写了一整场没过样例。&lt;/p&gt;
&lt;p&gt;T4 $O(n^3)$ dp 暴力统计答案不完全挂成 $0$。&lt;/p&gt;
&lt;p&gt;一共 $100+100+0+20 \to 70+60+0+0$，rk $3$ $\to$ rk $13$。&lt;/p&gt;
&lt;p&gt;等下还要被 FSB D，当遗言写的这段。&lt;/p&gt;
&lt;h2&gt;2024-10-25 (DAY -1)&lt;/h2&gt;
&lt;p&gt;早上不打算写题，直接开始翻知乎。后来看到 XiaY 和 ifffer 在打板子比赛，进去过了几道题。惊奇地发现 ifffer 不会线段树 2（&lt;/p&gt;
&lt;p&gt;然后被 FSB 拉出去听他放 P（FSB 原话）。罚站近一个小时，全程绷不住，反正大部分都是“建一个输入文件，生成一个输出文件”之类的东西。但是比以前多了他花 $200$ 块钱幻想自己是小说龙族男主统治世界从一个地球飞到另一个球的奇幻故事。&lt;/p&gt;
&lt;p&gt;下午和 BP,ZHY,XiaY 坐火车去杭州。打了一车的块，和别人 1V1 了一把，但火车进隧道网络直接断掉击飞了。&lt;/p&gt;
&lt;p&gt;晚上继续颓，打了下 Phi 刷了会儿视频就睡了。&lt;/p&gt;
&lt;h2&gt;2024-10-26 (DAY 0)&lt;/h2&gt;
&lt;p&gt;早上自然醒。去杭师大里面转了一圈，然后去 BP 酒店。说做出来一道题就走着去厕所，实在憋不住了就跑着去厕所。&lt;/p&gt;
&lt;p&gt;中午去外面吃午饭，想起 ifffer 还考普及，于是猜他会不会卡在 T3。12:00 一到立刻轮番轰炸 ifffer 手机，但连着轰了 $20$ min 还是没人接。&lt;/p&gt;
&lt;p&gt;半个小时的时候 ifffer qq 发 XiaY 消息了，太感动了竟然做出了 T3。&lt;/p&gt;
&lt;p&gt;中午回去睡了半小时，就延那条走了好多遍的路去那个考了好多场试的考场。&lt;/p&gt;
&lt;p&gt;安检进场。发现了 XiaY 和 ZHY。&lt;/p&gt;
&lt;p&gt;开考前 $10$ min 下发大样例密码。翻了下数据，除了一题比较神奇以外没啥能看出来的。趁监考老师不注意把文件夹建好了。&lt;/p&gt;
&lt;p&gt;开考前 $2$ min 下发题面密码。输错了一次很难绷。&lt;/p&gt;
&lt;p&gt;开 T1！马上会了。开考先去配了 sublime，然后开打，$5$ min 一遍过大样例。&lt;/p&gt;
&lt;p&gt;开 T2，顶针了 $1$ min 后会了。上来先打了一堆分讨。写完第一问代码，打算先看下对不对。结果第一问没过去。心态比较崩，调了半天，多写了个 &lt;code&gt;++cnt&lt;/code&gt;。写第二问，一遍过了小样例。此时看到 ZHY 走着去了一次厕所。&lt;/p&gt;
&lt;p&gt;测大样例，击飞。发现多测不清空，改了，测大样例，击飞，第一问答案有的和正确答案差 $1$。觉得是精度问题，改小了 &lt;code&gt;eps&lt;/code&gt;，还是击飞。于是打算先放着 T2 去看后面的题。&lt;/p&gt;
&lt;p&gt;开 T3，手推样例猜了些奇怪的结论，发现都是对的，但不知道有啥用。根据这些性质推了很久，结果花了快 $1$ h 得出了一个强于原问题的不可做题。中间还看到 ZHY 又走着去了一次厕所。&lt;/p&gt;
&lt;p&gt;换了个思路，搞了个 $O(n^2)$ dp。突然发现相邻相同的数必是同种颜色，于是缩掉后 $dp_{l,r}=dp_{l,l}$？dp 状态直接变成一维的了？转移直接可以 $O(1)$ 了？然后就做完了？不太敢相信。但又想到 ZHY 两次上厕所时间这么近，也是有可能的。&lt;/p&gt;
&lt;p&gt;花 $5$ min 敲完了代码，改了个初始权值的小 bug，小样例直接过，测大样例，一遍过！看了眼转移，只有两行，压行可以压成一行。逆天 T3。&lt;/p&gt;
&lt;p&gt;看完 T4 题面后想起 T2 大样例还没过，debug 了 $15$ min 发现少写了个特判，加上过了。&lt;/p&gt;
&lt;p&gt;还剩两个小时不到一点，开肝 T4。看题目就感觉非常不可做，胡了个自认为很对的 $O(n\log n)$ 的东西后直接写。写到还剩 $30$ min 的时候终于过了小样例。&lt;/p&gt;
&lt;p&gt;然后脑子就抽了，直接跳过了两个特殊性质的大样例去测了没有特殊性质的。发现击飞了把把。输出还是加密过的，根本发不现是咋寄的。&lt;/p&gt;
&lt;p&gt;决定肉眼顶针，顶到结束也没顶出来。于是到考试结束也没有测两个特殊性质。&lt;/p&gt;
&lt;p&gt;最后 $1$ min 草率地检查了一下 &lt;code&gt;freopen&lt;/code&gt;，然后就结束了。&lt;/p&gt;
&lt;p&gt;ZHY 过来说他 $1$ h 过了前三题，T4 写了 $3$ h 没分。BP 结束前 $10$ min 调完了 $O(n\log n)$。&lt;/p&gt;
&lt;p&gt;出去一问，发现人均过前三题。T4 冲正解或 $O(n\log n)$ 的大部分都没啥分，倒是写暴力和特殊性质的搞到了一堆分。反正就是一个大无语的状态。&lt;/p&gt;
&lt;p&gt;但几乎所有人 T2 都写的二分查找，我一个人写的浮点数，慌死。&lt;/p&gt;
&lt;p&gt;地铁上才发现自己做法假掉了。想起还有特殊性质，似乎做法在特殊性质上是对的？不是，我没测特殊性质大样例啊！所以知不道是不是能过特殊性质了。但大概率是过不了。&lt;/p&gt;
&lt;p&gt;BP 说群里说 T2 大样例很水，只能希望 T2 不要挂分。&lt;/p&gt;
&lt;p&gt;现在 NOIP 是知不道能能不去了。&lt;/p&gt;
&lt;h2&gt;2024-11-02&lt;/h2&gt;
&lt;p&gt;搞神经 ZH 信息素养大赛的题。大无语 T3 换了三题，最后放个奇怪的大模拟，数据造三次，心情不好。&lt;/p&gt;
&lt;p&gt;晚上才知道后天就出分了。保佑不要挂分啊！&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                     _ooOoo_
                    o8888888o
                    88&quot; . &quot;88
                    (| -_- |)
                     O\ = /O
                 ____/`---&apos;\____
               .   &apos; \\| |// `.
                / \\||| : |||// \
              / _||||| -:- |||||- \
                | | \\\ - /// | |
              | \_| &apos;&apos;\---/&apos;&apos; | |
               \ .-\__ `-` ___/-. /
            ___`. .&apos; /--.--\ `. . __
         .&quot;&quot; &apos;&amp;lt; `.___\_&amp;lt;|&amp;gt;_/___.&apos; &amp;gt;&apos;&quot;&quot;.
        | | : `- \`.;`\ _ /`;.`/ - ` : | |
          \ \ `-. \_ __\ /__ _/ .-` / /
  ======`-.____`-.___\_____/___.-`____.-&apos;======
                     `=---=&apos;
 
  .............................................
           佛祖保佑             永无BUG
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2024-11-04&lt;/h2&gt;
&lt;p&gt;下午发现吃饭时间没到机房声音就大起来了。登上官网一看是四点出分。于是也没做题了，等着出分。&lt;/p&gt;
&lt;p&gt;有可能是 OI 生涯最后的几分钟，如果 T2 和 T4 挂掉的话。但希望不是。&lt;/p&gt;
&lt;p&gt;时间一到，点开成绩，竟然没有卡顿，然后 &lt;strong&gt;成绩单未上传，请稍后查看&lt;/strong&gt;。然后点出去一看，偷偷把时间改到了 5:30！逆天 CCF！&lt;/p&gt;
&lt;p&gt;下面为了平复心情写了道题，食堂吃完饭回来打块。&lt;/p&gt;
&lt;p&gt;到五点半，登到官网，卡了。完了是真出分了。&lt;/p&gt;
&lt;p&gt;狂按 &lt;code&gt;F5&lt;/code&gt;，还真给刷出来了。一看成绩，$340$！$100+100+100+40=340$！竟然没挂！看来前几天攒的 rp 果然有用！&lt;/p&gt;
&lt;p&gt;好像是机房里第一个刷出来的。其他人刷了好久刷出来了 $504$ 分。&lt;/p&gt;
&lt;p&gt;最后好像大家都没大挂，但是 ZHY T4 没调出来有点伤心。其他还是皆大喜欢的。&lt;/p&gt;
&lt;p&gt;晚上填了 NOIP 推荐表。但愿 FSB 不要出现没报上的情况。&lt;/p&gt;
&lt;p&gt;晚上不打算做题了，开始水游记和水贴。&lt;/p&gt;
&lt;p&gt;希望这篇游记可以继续往下写。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>CF1691F K-Set Tree 题解</title><link>https://candy0014.github.io/posts/solution-cf1691f</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-cf1691f</guid><description> </description><pubDate>Thu, 24 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;提供一种不用 dp 的做法，跑得飞快。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/CF1691F&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codeforces.com/problemset/problem/1691/F&quot;&gt;CF 传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给定一棵有 $n$ 个点的树及正整数 $k$，定义 $F(u,S) $为以 $u$ 为根时包含集合 $S$ 中所有点的最小子树的大小，求 $\sum_{u=1}^{n}\sum_{|S|=k}F(u,S)$。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;先考虑对于一个给定的集合 $S$，有没有什么简单的式子可以表示$\sum_{u=1}^n F(u,S)$。&lt;/p&gt;
&lt;p&gt;我们称这样的 $u$ 为关键点：$u\in S$，或者以 $u$ 为根时，至少有两棵子树里有 $\in S$ 的点。显然若 $u$ 为关键点，则 $F(u,S)=n$。如在样例 2 中，若 $S={3,7}$，则点 $3,2,4,7$ 为关键点。&lt;/p&gt;
&lt;p&gt;对于关键点之外的点，设它们形成了 $m$ 个连通块，第 $i$ 个连通块大小为 $sz_i$。若 $u$ 在第 $i$ 个连通块中，则 $F(u,S)=n-sz_i$。&lt;/p&gt;
&lt;p&gt;考虑所有点的 $F$ 值之和：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;共有 $n-\sum sz_i$ 个关键点，每个关键点的 $F$ 值为 $n$，共为 $n\times (n-\sum sz_i)=n^2-n\sum sz_i$；&lt;/li&gt;
&lt;li&gt;第 $i$ 个连通块有 $sz_i$ 个点，每个点的 $F$ 值为 $n-sz_i$，共为 $\sum sz_i\times(n-sz_i)=n\sum sz_i-\sum sz_i^2$；&lt;/li&gt;
&lt;li&gt;所有点的 $F$ 值之和为 $n^2-n\sum sz_i+n\sum sz_i-\sum sz_i^2=n^2-\sum sz_i^2$。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;故问题转化为求每种 $S$ 下的 $\sum sz_i^2$ 之和。发现连通块一共只有 $2(n-1)$ 个（每条树边两侧的连通块），考虑每个连通块的贡献。&lt;/p&gt;
&lt;p&gt;先计算以 $u$ 为根的子树作为连通块的次数。对于一种 $S$，这棵子树被作为连通块当且仅当 $fa_u$ 是关键点。记 $SZ_u$ 为以 $1$ 为根时 $u$ 子树的大小。此时有两种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$fa_u\in S$：此时共有 $\dbinom{n-SZ_u-1}{k-1}$ 种情况；&lt;/li&gt;
&lt;li&gt;$fa_u\not\in S$：此时共有 $\dbinom{n-SZ_u-1}{k}-{\large\sum\limits_{v\in son_{fa_u},v\not=u}}\dbinom{SZ_v}{k}-\dbinom{n-SZ_{fa_u}-1}{k}$ 种情况，即在去掉 $u$ 子树和 $fa_u$ 后的点中取 $k$ 个，然后去掉 $fa_u$ 不是关键点的情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以 「全部点去掉 $u$ 子树」作为连通块的次数与上同理。&lt;/p&gt;
&lt;p&gt;然后即可算出答案。&lt;/p&gt;
&lt;p&gt;注意：可以先预处理出 $p_u={\large\sum\limits_{v\in son_{u}}}\dbinom{SZ_v}{k}$，否则在前一种情况中多次访问父亲的儿子，会被菊花图卡掉。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int N=2e5+5;
ll ksm(ll u,ll v=mod-2){ll tmp=1;u%=mod;while(v) tmp=tmp*((v&amp;amp;1)?u:1)%mod,u=u*u%mod,v&amp;gt;&amp;gt;=1;return tmp;}
ll jie[N],inv[N];
void init(int n=N-3){
	jie[0]=1;
	for(int i=1;i&amp;lt;=n;i++) jie[i]=1ll*jie[i-1]*i%mod;
	inv[n]=ksm(jie[n],mod-2);
	for(int i=n-1;i&amp;gt;=0;i--) inv[i]=1ll*inv[i+1]*(i+1)%mod;
}
ll C(ll u,ll v){
	if(v&amp;lt;0||v&amp;gt;u) return 0;
	return 1ll*jie[u]*inv[v]%mod*inv[u-v]%mod;
}
//---------------------------------------------预处理组合数
int head[N],tot;
struct EDGE{
	int nex,to;
} e[N&amp;lt;&amp;lt;1];
void add(int u,int v){
	e[++tot].nex=head[u],e[tot].to=v;
	head[u]=tot;
}
ll n,k,SZ[N],fa[N],p[N];
ll ans=0;
void dfs(int u,int fat){ //预处理 SZ,p,fa 数组
	SZ[u]=1,fa[u]=fat;
	for(int i=head[u];i;i=e[i].nex){
		int v=e[i].to;
		if(v==fat) continue;
		dfs(v,u);
		SZ[u]+=SZ[v];
		p[u]=(p[u]+C(SZ[v],k))%mod;
	}
}
int main(){
	ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
	init();
	cin&amp;gt;&amp;gt;n&amp;gt;&amp;gt;k;
	for(int i=1,u,v;i&amp;lt;n;i++){
		cin&amp;gt;&amp;gt;u&amp;gt;&amp;gt;v;
		add(u,v),add(v,u);
	}
	dfs(1,0);
	ll num;
	for(int u=2;u&amp;lt;=n;u++){
		num=C(n-SZ[u]-1,k-1)+C(n-SZ[u]-1,k)-(p[fa[u]]-C(SZ[u],k))-C(n-SZ[fa[u]],k);
		num%=mod;
		ans=(ans+SZ[u]*SZ[u]%mod*num)%mod; //第一种连通块

		num=C(SZ[u]-1,k-1)+C(SZ[u]-1,k)-p[u];
		num%=mod;
		ans=(ans+(n-SZ[u])*(n-SZ[u])%mod*num)%mod; //第二种连通块
	}
	cout&amp;lt;&amp;lt;(n*n%mod*C(n,k)%mod-ans+mod)%mod&amp;lt;&amp;lt;&quot;\n&quot;; //计算答案
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>NOIP 2024 游记</title><link>https://candy0014.github.io/posts/travelogue-noip-2024</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-noip-2024</guid><description> </description><pubDate>Thu, 28 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2024-11-22&lt;/h2&gt;
&lt;p&gt;似乎成功了。整个机房都去了。&lt;/p&gt;
&lt;h2&gt;2024-11-??&lt;/h2&gt;
&lt;p&gt;发现 NOI 官网写的要自选操作系统，但报名的时候没选。问了一圈只有 ZHY 妈妈给他选了 Linux，其他全是未知。&lt;/p&gt;
&lt;p&gt;以前考试复习 Linux 怎么用，现在要复习 Win 怎么用了。&lt;/p&gt;
&lt;h2&gt;2024-11-28 (DAY -2)&lt;/h2&gt;
&lt;p&gt;NOIP 前最后一次模拟赛。&lt;/p&gt;
&lt;p&gt;T3 MLE，T2 写太久导致 T4 没时间写暴力。&lt;/p&gt;
&lt;p&gt;当做给 NOIP 涨 rp 的。&lt;/p&gt;
&lt;h2&gt;2024-11-29 (DAY -1)&lt;/h2&gt;
&lt;p&gt;明天考试，早上到机房按惯例开打板子赛。&lt;/p&gt;
&lt;p&gt;ZHY 说赛前打得板子赛时大概率用不到，于是得出结论：赛前要多打板子，这样赛时就不会考这些了（大雾&lt;/p&gt;
&lt;p&gt;开了一个&lt;a href=&quot;https://www.luogu.com.cn/problem/P3710&quot;&gt;数据结构题&lt;/a&gt;，一起想了一会儿，想了个大概的思路。希望明天不要大数据结构。&lt;/p&gt;
&lt;p&gt;下午坐大巴去，上车不久就开块了。发现了 ZEN 的垃圾行模式，可以将自己打的伤害给自己，非常好玩。ifffer 荣批，不会玩。&lt;/p&gt;
&lt;p&gt;住上次省选的酒店，和 XiaY 住一个房间。吃饭前复习了 Win 的拍子怎么写。&lt;/p&gt;
&lt;p&gt;晚上 8:30 被 FSB 叫去开例会，开不开一样，罚站 $1$ h。&lt;/p&gt;
&lt;p&gt;回去打了一下块，后来懒得动了，用电视放熊出没和喜羊羊，10:15 睡觉，设了第二天 6:30 的大香蕉闹钟。&lt;/p&gt;
&lt;h2&gt;2024-11-30 (DAY 0)&lt;/h2&gt;
&lt;p&gt;被大香蕉闹钟弄醒了。床上颓了 $10$ min，吃完饭大巴去杭师大。&lt;/p&gt;
&lt;p&gt;又走了一遍不知道已经走了几遍的去考场的路，也不知道以后还可以走几遍。&lt;/p&gt;
&lt;p&gt;到得很早，别的学校大多都还没来。WLZX 来的时候面了 XHGua,CZY 一些老乡。&lt;/p&gt;
&lt;p&gt;在考场门口站了一会，ZHY 提议说先一个人进去看，是 Linux 就咳嗽一下，是 Win 就擤一下鼻涕。但没人想先进去。&lt;/p&gt;
&lt;p&gt;后来还是一起进去了，发现是 Linux，非常高兴。周围看了一圈，能看到好多认识的。&lt;/p&gt;
&lt;p&gt;位置靠墙，好评，直接在赛前配好了 sublime 且没被发现。&lt;/p&gt;
&lt;p&gt;8:23 发样例，看到了一只 $12$ 个大样例的题。没发现大模拟。对题意没有头猪。&lt;/p&gt;
&lt;p&gt;8:28 发题面，开 T1 看着像贪或 dp。&lt;/p&gt;
&lt;p&gt;8:30，NOIP，启动！（监考都没报考试开始，边上的人都开始敲代码才发现的&lt;/p&gt;
&lt;p&gt;不是为啥啊，我细节都还没想好你们咋全都开始敲了啊？觉得可能在敲头，就没管，继续想。&lt;/p&gt;
&lt;p&gt;不是为啥啊，$1$ min 都过去了头应该敲完了啊，咋键盘声音还是这么响？？？难道 T1 这么唐直接贪心就行啦？&lt;/p&gt;
&lt;p&gt;细节也不想了，直接开写，写了几段有复制粘贴了几段就没了。测样例，小样例没过。&lt;/p&gt;
&lt;p&gt;心慌，觉得贪心假掉了。直接手模样例，但是发现非常正确。debug，$1$ min 后发现一只 bug，改掉过了小样例，大样例一遍过。&lt;/p&gt;
&lt;p&gt;觉得 T1 贪很可能假，打算后面有时间回来写拍。&lt;/p&gt;
&lt;p&gt;$15$ min 开 T2，神秘计数，手模一下发现确定的单点划分出来的东西互不影响，直接化简到确定头尾的区间问题。&lt;/p&gt;
&lt;p&gt;计数直接一手真难则反。诶不是，直接做完了？敲代码，一遍过小样例，第二个大样例寄了。好在挂的是小点，发现竟然有相同的对子！去重之后直接过，此时 $30$ min。&lt;/p&gt;
&lt;p&gt;按 CSP 传统走着去了厕所，顺便平复下心情。毕竟提前开香槟容易击飞。&lt;/p&gt;
&lt;p&gt;开 T3，依然困难计数题。看完题面感觉不可做。一看特殊性质，前面的三挡 $k\le 1,k\le 2,k\le 8$，鉴定为容斥。&lt;/p&gt;
&lt;p&gt;但我咋不会做 $k=1$ 啊？？？觉得很难想，直接开 T4，LXL 风格的数据结构。&lt;/p&gt;
&lt;p&gt;一眼暴力部分分给到了 $32$，相比平时模拟赛 $10$ 分暴力还是非常良心的。&lt;/p&gt;
&lt;p&gt;没犹豫直接打暴力，$20$ min 肝完一遍过样例。&lt;/p&gt;
&lt;p&gt;继续特殊性质链，转为序列上问题。开始考虑二分答案，正确性显然，时间过不去。换成整体二分，时间变成 $\log^2$，能过 $10^5$ 但过不了 $5\times 10^5$。&lt;/p&gt;
&lt;p&gt;不知道整体二分在不在 NOIP 考纲内，但感觉有更精细的做法。于是没打整体二分开始想单 $\log$。没想出来做法，又去上厕所，觉得还是先想 T3 为妙。&lt;/p&gt;
&lt;p&gt;发现决策是正确的。T3 想到对每个节点的儿子进行某种顺序连边，其中只有起点固定为离靠近关键边的那条边，于是 $k=1$ 的答案就是 $\prod (du_u-1)!$！很漂亮啊，跟关键边是那条都无关，推式子的压力小了好多。&lt;/p&gt;
&lt;p&gt;花 $3$ min 写完，感谢出题人给 $12$ 组大样例，测了一发，过了 $k=1$ 的点，皆大喜欢。&lt;/p&gt;
&lt;p&gt;既然要容斥那 $k=2$ 的点显然不能逾越。开始想同时满足两个关键边作为根的计数。先推完了一条边能为根的充要条件，然后构造同时满足两条边的。&lt;/p&gt;
&lt;p&gt;中间构造假了一次，导致差点以为没有同时满足两个关键边的树，浪费了 $20$ min。突然发现小样例二样例解释里就有这种情况，直接画样例并猜测样例的情况就是充要。发现显然是正确的。&lt;/p&gt;
&lt;p&gt;稍微算了下方案数，又是好看的一个式子 $\prod (du_u-1-[\text{u is between two critical edges}])! = \prod (du_u-1)! \times \prod (du_u-1)^{-1}\cdot[\text{u is between two critical edges}]$！判断在两关键边之间用了 LCA，运气巨好直接从 T4 的暴力搬过来用。快速打完，过了 $k=2$ 的大样例。&lt;/p&gt;
&lt;p&gt;考虑 $k&amp;gt;2$ 的情况，显然有贡献的若干条边在一条链上，而这种情况的树的数量，和只取离得最远的两条边的树的数量是相同的！&lt;/p&gt;
&lt;p&gt;所以只要枚两条边，计算这两条边同时可以为根的情况，再乘上被计算的次数就行了。所以被计算了几次呢？设 $x$ 为两条边中间的关键边的数量，那应该是被计算了 $-\sum \binom{x}{i}\times (-1)^i$ 次。嗯？这东西不是在 $x&amp;gt;0$ 的时候都是 $0$ 吗？&lt;/p&gt;
&lt;p&gt;复杂度 $O(n\log +k^2)$，一看竟然有 $84$ 分！&lt;/p&gt;
&lt;p&gt;代码不难写，维护树上链和还有树上链积就行。维护树上链积过不了大样例调了一下，发现根节点度数为 $1$ 就会出现 $\dfrac{0}{0}$ 这样的东西。于是把 $n=2$ 判掉然后挑了个非叶子节点为根就过大样例了。&lt;/p&gt;
&lt;p&gt;打掉两个特殊性质还剩 $1$ h。&lt;/p&gt;
&lt;p&gt;继续想 T4 特殊性质。草稿纸上画了 $40$ min，没想出来。（PS：想的最久的一个做法是正解的一个步骤）&lt;/p&gt;
&lt;p&gt;$20$ min 写整体二分怕是不够了，所以去检查前面的代码和重测大样例。&lt;/p&gt;
&lt;p&gt;测到 T3 第 $8$ 个大样例，发现不对了。为啥跑了 $0.99$ s？又跑了一遍，咋变 $0.999$ s 了？&lt;/p&gt;
&lt;p&gt;完了还得卡常。卡了 $10$ min，时间一点没减。完了要寄了。诶忘开 O2 了？开上变 $0.6$ s 了。绷不住了。&lt;/p&gt;
&lt;p&gt;最后 $5$ 分钟打算摆烂了。突然发现 T1 一个不知道假没假的处理，慌了。赶紧改掉，不是大样例咋寄了啊？哦是复制代码忘记改变量了，改掉还剩 $1$ min，大样例过了。&lt;/p&gt;
&lt;p&gt;最后扫了遍 &lt;code&gt;freopen&lt;/code&gt;，没填字节数表，结束了。&lt;/p&gt;
&lt;p&gt;估 $100+100+84+32=316$。&lt;/p&gt;
&lt;p&gt;问分数，好多人写了 T4 的整体二分，但也好多人被 T3 创飞了。BP 打了 T3 的 $O(nk)$ 和 T4 的整体二分，估 $324$ pts，应该初中里挺高了。&lt;/p&gt;
&lt;p&gt;但一堆人 T1 写了很久？想想贪心确实没证过正确性，拍也没来得及写，又开始慌。但 IceKylin 和我贪得一样，说他证过了，稍微不慌了点。&lt;/p&gt;
&lt;p&gt;拿到手机瞄了下 LA 群，好多说 T1 是蓝的。&lt;/p&gt;
&lt;p&gt;坐等出分。（据说计数题不容易挂分，不知道真假&lt;/p&gt;
&lt;p&gt;祈祷 T1 不要假，祈祷多测不要不清空，祈祷取模取完全。&lt;/p&gt;
&lt;p&gt;下面好长时间都没比赛了，舒服了。&lt;/p&gt;
&lt;h2&gt;2024-12-02&lt;/h2&gt;
&lt;p&gt;据说卡线能去 WC 了。但今年 WC 在浙江为啥名额还这么少？&lt;/p&gt;
&lt;h2&gt;2024-12-06&lt;/h2&gt;
&lt;p&gt;下午 4:00 出分。还有 $3$ h。难绷。要似了。&lt;/p&gt;
&lt;p&gt;3:45 据说能查分了。好像是 CCF 的 bug。上申诉通道可以看到分数了。&lt;/p&gt;
&lt;p&gt;以前没这么搞过，差点申诉直接提交了。没发现分数在哪，旁边 IceKylin 说没挂分才发现。真的没挂分。开心了。&lt;/p&gt;
&lt;p&gt;然后【数据删除】，叫出去【数据删除】，撤回一个开心。真【数据删除】。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>P8170 [eJOI2021] Waterfront 题解</title><link>https://candy0014.github.io/posts/solution-p8170</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-p8170</guid><description> </description><pubDate>Wed, 04 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P8170&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给定两个长为 $n$ 的序列 $a,b$ 及整数 $m,k,x$，定义一轮操作为：对于所有 $a_i\gets a_i+b_i (1\le i\le n)$，然后进行至多 $k$ 次「选择一个 $i$ 满足 $a_i\ge x$，令 $a_i\gets a_i-x$」。最小化 $m$ 轮操作后 $a$ 中的最大值。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;最小化最大值，容易想到二分答案，于是设问题变为判断答案不大于 $g$ 是否可行。&lt;/p&gt;
&lt;p&gt;容易知道答案固定时每个下标的操作总次数是确定的，设 $i$ 下标被操作 $c_i$ 次。&lt;/p&gt;
&lt;p&gt;我们对每个下标 $i$，枚举 $1\le j\le c_i$，计算 $a_i$ 的第 $j$ 次操作至少要几轮操作后才可以进行，将其记为 $pos_{i,j}$。&lt;/p&gt;
&lt;p&gt;于是原问题变为了：对于每对 $i,j$，都要在 $pos_{i,j}$ 至 $m$ 轮中选择一轮进行操作，并且需要满足每一轮的操作次数都不超过 $k$。这个问题就可以直接用贪心解决了。&lt;/p&gt;
&lt;p&gt;直接记 $t_y$ 表示有几个 $pos_{i,j}=y$。从前往后遍历 $t$，维护变量 $s$ 表示当前最少有几个操作需要进行。则对于一个 $y$，$s\gets \max(s+t_y-k,0)$。答案 $g$ 可行当且仅当最后 $s=0$。&lt;/p&gt;
&lt;p&gt;那么一次 &lt;code&gt;check&lt;/code&gt; 的复杂度为 $\sum c$。注意到若 $\sum c_i &amp;gt; m\times k$ 则必定无解，故总复杂度为 $O(\log V\times\sum c) \le O(\log V\times mk)$。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long long ll;
const int N=10005;
int n,m,k,x;
int a[N],b[N],c[N],d[N],t[N];
// a,b,c,t 的含义如题目或题解中所说，d 数组为第 i 个数在不进行操作的情况下，m 轮后会变成多少
inline int _ceil(int x,int y){
	int g=x/y;
	return g+(g*y!=x);
}
bool check(int g){
	ll cnt=0; // 注意 c 数组的和可能会爆 int
	for(int i=1;i&amp;lt;=n;i++) if(d[i]&amp;gt;g){ // 为避免出现负数，可将本来就满足条件的下标跳过
		c[i]=_ceil(d[i]-g,x);
		if(d[i]-c[i]*x&amp;lt;0) return 0; // 一个数最后不可能在 [0,g] 中的情况
		cnt+=c[i];
	}
	if(cnt&amp;gt;m*k) return 0; // 判掉必定无解的情况
	for(int i=1;i&amp;lt;=m;i++) t[i]=0;
	for(int i=1;i&amp;lt;=n;i++) if(d[i]&amp;gt;g){
		for(int j=1;j&amp;lt;=c[i];j++){
			int pos=1;
			if(b[i]&amp;amp;&amp;amp;a[i]&amp;lt;j*x) pos=_ceil(j*x-a[i],b[i]); // 计算 pos
			t[pos]++;
		}
	}
	int s=0;
	for(int i=1;i&amp;lt;=m;i++) s=max(s+t[i]-k,0);
	return s==0;
}
int main(){
	ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
	cin&amp;gt;&amp;gt;n&amp;gt;&amp;gt;m&amp;gt;&amp;gt;k&amp;gt;&amp;gt;x;
	for(int i=1;i&amp;lt;=n;i++){
		cin&amp;gt;&amp;gt;a[i]&amp;gt;&amp;gt;b[i];
		d[i]=a[i]+b[i]*m;
	}
	int l=0,r=1.1e8,mid,ans=0; // 二分答案
	while(l&amp;lt;=r){
		mid=(l+r)&amp;gt;&amp;gt;1;
		if(check(mid)) r=mid-1,ans=mid;
		else l=mid+1;
	}
	cout&amp;lt;&amp;lt;ans&amp;lt;&amp;lt;&quot;\n&quot;;
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>CF295E Yaroslav and Points 题解</title><link>https://candy0014.github.io/posts/solution-cf295e</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-cf295e</guid><description> </description><pubDate>Mon, 16 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;提供一种分块做法，跑得飞快。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/CF295E&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codeforces.com/problemset/problem/295/E&quot;&gt;CF 传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;维护数轴上的 $n$ 个点，支持单点移动，以及查询一个值域区间内的所有点对距离和。&lt;/p&gt;
&lt;p&gt;保证移动距离不超过 $1000$，且任意时刻任意两点不重合。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;对于查询，假设所有点已经排好序，则可以将值域区间转化成下标区间，显然可以拆贡献。&lt;/p&gt;
&lt;p&gt;设值域区间转化成的下标区间为 $[l,r]$，则 $\sum\limits_{i=l}^{r} x_i\times (i-l) - \sum\limits_{i=l}^{r} x_i\times (r-i)$ 即为所求。&lt;/p&gt;
&lt;p&gt;上面的式子还可以继续拆，$\sum\limits_{i=l}^{r} x_i\times (i-l) - \sum\limits_{i=l}^{r} x_i\times (r-i)=2\sum\limits_{i=l}^{r} x_i\times i - (l+r)\sum\limits_{i=l}^{r} x_i$，这启示我们可以使用数据结构维护 $x_i\times i$ 和 $x_i$ 的区间和。&lt;/p&gt;
&lt;p&gt;这时候题意中的两点保证就有用了，他保证了在一次修改中，$x$ 数组被打乱的范围不会太大，只有 $1000$。我们完全可以对这个被打乱的区间内的所有数进行暴力修改。&lt;/p&gt;
&lt;p&gt;统计一下修改次数和查询次数，发现共有 $10^5\times 1000$ 组单点修改，以及 $10^5$ 组区间查询，则 $O(1) - O(\sqrt{n})$ 的分块是一个很好的选择。&lt;/p&gt;
&lt;p&gt;于是这题就做完了，代码非常好写。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long long ll;
const int len=256;
int th[100005],st[100005],ed[100005];
struct node{ // O(1)-O(sqrt(n)) 的单点改区间和板子
	ll a[100005],sum[100005];
	void change(int x,ll k){
		k-=a[x],a[x]+=k,sum[th[x]]+=k;
	}
	ll query(int l,int r){
		ll ans=0;
		if(th[l]==th[r]){
			for(int i=l;i&amp;lt;=r;i++) ans+=a[i];
			return ans;
		}
		for(int i=l;i&amp;lt;=ed[th[l]];i++) ans+=a[i];
		for(int i=st[th[r]];i&amp;lt;=r;i++) ans+=a[i];
		for(int i=th[l]+1;i&amp;lt;th[r];i++) ans+=sum[i];
		return ans;
	}
}s1,s2; // s1 存 x[i] 的区间和，s2 存 x[i]*i 的区间和
int n,ca,a[100005],c[100005];
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin&amp;gt;&amp;gt;n;
	for(int i=1;i&amp;lt;=n;i++){
		th[i]=(i-1)/len+1,ed[th[i]]=i;
		if(th[i]!=th[i-1]) st[th[i]]=i;
	}
	for(int i=1;i&amp;lt;=n;i++) cin&amp;gt;&amp;gt;a[i],c[i]=a[i]; // 由于输入原因要存输入顺序的 c 数组
	sort(a+1,a+n+1);
	for(int i=1;i&amp;lt;=n;i++) s1.change(i,a[i]),s2.change(i,1ll*a[i]*i); // 预处理
	cin&amp;gt;&amp;gt;ca;
	while(ca--){
		int op,x,y;
		cin&amp;gt;&amp;gt;op&amp;gt;&amp;gt;x&amp;gt;&amp;gt;y;
		if(op==1){
			int id=lower_bound(a+1,a+n+1,c[x])-a; // 原数组下标转 x 数组下标
			c[x]+=y,x=id,a[x]+=y;
			int l=x,r=x;
			if(y&amp;gt;0) while(r&amp;lt;n&amp;amp;&amp;amp;a[r]&amp;gt;a[r+1]) swap(a[r],a[r+1]),r++; // 求出发生改变的区间
			else while(l&amp;gt;1&amp;amp;&amp;amp;a[l]&amp;lt;a[l-1]) swap(a[l],a[l-1]),l--;
			for(int i=l;i&amp;lt;=r;i++) s1.change(i,a[i]),s2.change(i,1ll*a[i]*i); // 暴力修改区间
		}
		else{
			x=lower_bound(a+1,a+n+1,x)-a,y=upper_bound(a+1,a+n+1,y)-a-1; // 值域区间转下标区间
			if(x&amp;gt;y){cout&amp;lt;&amp;lt;&quot;0\n&quot;;continue;}
			ll ans1=s1.query(x,y),ans2=s2.query(x,y); // ans1 是 x[i] 的区间和，ans2 是 x[i]*i 的区间和
			cout&amp;lt;&amp;lt;2*ans2-(x+y)*ans1&amp;lt;&amp;lt;&quot;\n&quot;;
		}
	}
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>P7322「PMOI-4」排列变换 题解</title><link>https://candy0014.github.io/posts/solution-p7322</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-p7322</guid><description> </description><pubDate>Tue, 04 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P7322&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给定常数 $k$。对于一个长度为 $n$ 的排列 $a$，定义序列 $f(a)={\max_{1 \le i \le k} {a_i},\max_{2 \le i \le k+1} {a_i},\ldots,\max_{n-k+1 \le i \le n} {a_i}}$。&lt;/p&gt;
&lt;p&gt;求出对于所有长度为 $n$ 的排列 $p$，$f(p)$ 中不同的数的个数之和。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;显然 $f$ 数组是由若干个互不相同的连续段构成的，于是我们只需要对连续段进行计数即可。&lt;/p&gt;
&lt;p&gt;因为连续段的数量等于「相邻两个数不同的对数」再加 $1$，所以对于每一个 $i$，考虑 $f(p)&lt;em&gt;i \not= f(p)&lt;/em&gt;{i+1}$ 的排列 $p$ 的数量。&lt;/p&gt;
&lt;p&gt;注意到 $f(p)&lt;em&gt;i$ 和 $f(p)&lt;/em&gt;{i+1}$ 是两个相邻的长度为 $k$ 的区间的最大值，那么他们不相同等价于：这两个区间的并（一个长度为 $k+1$ 的区间）的最大值位于这个大区间的头或尾。而在一共 $n!$ 个排列中，这个长度为 $k+1$ 的区间的最大值位于区间首尾的概率为 $\dfrac{2}{k+1}$，故共有 $n!\times \dfrac{2}{k+1}$ 个排列满足：对于某个固定的 $i$，有 $f(p)&lt;em&gt;i \not= f(p)&lt;/em&gt;{i+1}$。&lt;/p&gt;
&lt;p&gt;这个式子与 $i$ 无关，所以直接将其乘上 $i$ 的数量（即 $n-k$）即为答案。&lt;/p&gt;
&lt;p&gt;故答案为 $n!\times \dfrac{2}{k+1}\times (n-k)+n!$（最后加的 $n!$ 是因为每个排列有额外的 $1$ 的贡献）。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>P12546 [UOI 2025] Convex Array 题解</title><link>https://candy0014.github.io/posts/solution-p12546</link><guid isPermaLink="true">https://candy0014.github.io/posts/solution-p12546</guid><description> </description><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;本篇题解时间复杂度不一定正确，若有可以 Hack 此题解或证明复杂度（或证明卡不掉？）请联系笔者。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.luogu.com.cn/problem/P12546&quot;&gt;洛谷传送门&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;题意&lt;/h2&gt;
&lt;p&gt;给定序列 $a_n$，问能否重排使得坐标点 $(i,a&apos;_i)$ 下凸。&lt;/p&gt;
&lt;p&gt;$n\le 3\times 10^5$。&lt;/p&gt;
&lt;h2&gt;思路&lt;/h2&gt;
&lt;p&gt;题意显然可以转为：先对 $a$ 排序，然后划分成两个子序列（最小值使用两次），使得每个子序列的差分数组不降。&lt;/p&gt;
&lt;p&gt;考虑一种不同于其他题解的 dp 设计方案。&lt;/p&gt;
&lt;p&gt;设 $dp(i,x_1,x_2,y_1,y_2)$ 表示：是否有对前 $i$ 个元素的划分，使得划分出的第一个子序列，最后一个数的下标为 $x_1$，&lt;strong&gt;且若要满足差分数组不降的性质，下一个元素下标至少为 $y_1$&lt;/strong&gt;，$x_2,y_2$ 同理。&lt;/p&gt;
&lt;p&gt;于是可以写出一个 状态 $O(n^5)$，转移 $O(1)$ 的 dp，但这太劣了，考虑对 dp 状态维度进行压缩。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意到 $x_1,x_2$ 中至少一者为 $i$；想要在此状态下进行转移，则 $y_1,y_2$ 中至少一者为 $i+1$。压掉可以和 $i$ 相关的其中一个 $x$ 和一个 $y$，状态变为 $O(n^3)$，转移 $O(1)$&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;注意到 $y_1,y_2$ 不全为 $i+1$ 时，转移是唯一的（$i+1$ 只能分给 $y_?$ 等于 $i+1$ 的子序列）。又因为 dp 的初始状态满足 $y_1=y_2=i+1$，故在出现 $y_1,y_2$ 不全为 $i+1$ 时，可直接按此唯一的转移去做，直到 $y_1=y_2=i+1$，再将其记到 dp 数组里。于是可以只记录 $y_1,y_2=i+1$ 的情况，状态变为 $O(n^2)$，转移 $O(n)$。&lt;/p&gt;
&lt;p&gt;但是通过尝试构造数据，可以发现转移复杂度均摊后极难卡满，事实上数据确实也没卡掉。&lt;/p&gt;
&lt;p&gt;当然这一步应该是有一些复杂度正确的做法的，懒得想了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;考虑可行性 dp 的经典优化，注意到只需要记录满足 $dp(i,x)$ 为 $1$ 的最大的 $x$，据此进行转移即可覆盖所有情况，状态变为 $O(n)$，转移最劣 $O(n)$，实际极快。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本来打算写个暴力交一发，但他直接过了？&lt;/p&gt;
&lt;p&gt;时间复杂度 $O(n\log n+F(n)\times n)$，其中 $F(n)$ 为转移均摊后的神秘复杂度。&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
int n,a[300005],dp[300005];
void work(int x,int y,int i){
	int dx=a[i]-a[x],dy=0;x=i,i++;
	while(i&amp;lt;=n){
		if(a[i]-a[x]&amp;gt;=dx&amp;amp;&amp;amp;a[i]-a[y]&amp;gt;=dy) break;
		if(a[i]-a[x]&amp;gt;=dx) dx=a[i]-a[x],x=i,i++;
		else if(a[i]-a[y]&amp;gt;=dy) dy=a[i]-a[y],y=i,i++;
		else return;
	}
	dp[i-1]=max(dp[i-1],min(x,y));
}
void solve(){
	cin&amp;gt;&amp;gt;n;
	for(int i=1;i&amp;lt;=n;i++) cin&amp;gt;&amp;gt;a[i],dp[i]=0;
	sort(a+1,a+n+1);
	dp[1]=1;
	for(int i=1;i&amp;lt;n;i++) if(dp[i]) work(i,dp[i],i+1),work(dp[i],i,i+1);
	if(dp[n]) cout&amp;lt;&amp;lt;&quot;YES\n&quot;;
	else cout&amp;lt;&amp;lt;&quot;NO\n&quot;;
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int Ca;cin&amp;gt;&amp;gt;Ca;while(Ca--)solve();
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>candy0014</author></item><item><title>NOIP 2025 游记</title><link>https://candy0014.github.io/posts/travelogue-noip-2025</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-noip-2025</guid><description> </description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2025-11-28&lt;/h2&gt;
&lt;p&gt;坐了熟悉的大巴。走了熟悉的路线。住了熟悉的酒店。训了熟悉的话。&lt;/p&gt;
&lt;h2&gt;2025-11-29&lt;/h2&gt;
&lt;p&gt;进了熟悉的校门。到了熟悉的机房。&lt;/p&gt;
&lt;p&gt;过于熟悉甚至没意识到已经是正式参赛了。&lt;/p&gt;
&lt;p&gt;$08:25$ 发密码看题。&lt;/p&gt;
&lt;p&gt;T1 看完会了。T2 好像还行。&lt;/p&gt;
&lt;p&gt;$08:30$ 开考。&lt;/p&gt;
&lt;p&gt;T1 写完过了全部大样例。&lt;/p&gt;
&lt;p&gt;烧烤 T2。是不是有点困难了。&lt;/p&gt;
&lt;p&gt;欸不是直接组合数？$15 min$ 写完。小样例挂了。&lt;/p&gt;
&lt;p&gt;手模小样例。欸手模和答案怎么不一样。欸怎么给了样例解释。欸怎么看不懂样例解释。&lt;/p&gt;
&lt;p&gt;题面什么意味。。。。。。。。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;请选择该句子是什么意思：&lt;/p&gt;
&lt;p&gt;在所有 $2^n$ 种定价方案中，有多少种定价方案使得他按照上述购买策略能购买到的糖果的原价总和最大。&lt;/p&gt;
&lt;p&gt;A. 在所有 &lt;strong&gt;方案&lt;/strong&gt; 中，有多少种 &lt;strong&gt;方案&lt;/strong&gt; 使得他的 &lt;strong&gt;策略&lt;/strong&gt; 获得的原价总和在所有 &lt;strong&gt;方案&lt;/strong&gt; 中最大。&lt;/p&gt;
&lt;p&gt;B. 在所有 &lt;strong&gt;方案&lt;/strong&gt; 中有多少种 &lt;strong&gt;方案&lt;/strong&gt;，使得他的 &lt;strong&gt;策略&lt;/strong&gt; 获得的原价总和在这种方案时的所有 &lt;strong&gt;策略&lt;/strong&gt; 中最大。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;是不是有点困难了。怎么 &lt;code&gt;check&lt;/code&gt; 方案合法性。哦这个我会。好像跟好几个量有关。几个来着。好像是 $4$ 个量。&lt;/p&gt;
&lt;p&gt;数据范围好像够枚举两个量。哪一对呢。一对一对试。&lt;/p&gt;
&lt;p&gt;欸怎么快 $2 h$ 了后面的题还没想。必须先想 T3 了。&lt;/p&gt;
&lt;p&gt;好小清新的题。好多性质。限了深度应该链剖相关。推得极其顺利。$30 min$ 不到转为链剖。几分了。$76$。win。&lt;/p&gt;
&lt;p&gt;代码好写。$10 min$ 通过 $n\le 4000,m\le 50$ 的大样例。&lt;/p&gt;
&lt;p&gt;继续 T2。欸之前试到哪一对了。忘记了，随便试吧。&lt;/p&gt;
&lt;p&gt;欸不是怎么 快 $3 h$ 了。这不对吧 T2 还能有紫？T2 应该是蓝，什么地方糖了。&lt;/p&gt;
&lt;p&gt;$n^3$ 分有一些的。说不定是提示。想了一会。好像枚举 $3$ 个量能做。不管了先写。&lt;/p&gt;
&lt;p&gt;忘了多少时间了。写完了。小样例过了。最小的大样例挂了。坏了。&lt;/p&gt;
&lt;p&gt;手模不出来。开写指数级暴力。写完了。测了些东西。一堆地方边界写挂。改了近 $40 min$ 过小样例。还有 $1 h$ 不到。&lt;/p&gt;
&lt;p&gt;最里面那个 $n$ 好像是组合数前缀和。改了。改挂了。调 $10 min$。过大样例前几个点。&lt;/p&gt;
&lt;p&gt;欸不是 $5000$ 的样例挂了。写挂了吗。取模寄了吗。取模没寄啊。&lt;/p&gt;
&lt;p&gt;欸不是 $1000$ 的样例过了。数组开小了吗。好像是开小了。过了 $5000$ 大样例但超市。相信 NOIP 神机。还有 $25 min$。&lt;/p&gt;
&lt;p&gt;T4 暴力怎么还要单调队列。这东西好像挺容易挂的。不管了直接开写。过了小样例。还有 $3 min$。&lt;/p&gt;
&lt;p&gt;不对我 T3 代码怎么塞 T2 文件夹里了。赶紧拿出来。还有 $1.5 min$。&lt;/p&gt;
&lt;p&gt;文件读写对吗。好像对的。还有 $1 min$。&lt;/p&gt;
&lt;p&gt;T3 大样例还没测。没用了就算挂了也调不出来。&lt;/p&gt;
&lt;p&gt;来不及了。结束了。&lt;/p&gt;
&lt;p&gt;最好成绩是多少。好像 $100+100+76+30=306$。T2 最大点杭师大机子 T $0.6 s$。T4 大样例没测。&lt;/p&gt;
&lt;p&gt;好像还行。不挂分就还行。&lt;/p&gt;
&lt;p&gt;什么你说 T3 $m$ 范围前面大后面小。我数组开了 $50$ 还只测了最后那个大样例啊。T3 $-16$。&lt;/p&gt;
&lt;p&gt;什么你说 T2 杭师大机子 T $0.6 s$ 不一定能过。T2 $-8$。&lt;/p&gt;
&lt;p&gt;还有多少。好像 $100+92+60+30=282$。&lt;/p&gt;
&lt;p&gt;并非还行。&lt;/p&gt;
&lt;h2&gt;2025-12-??&lt;/h2&gt;
&lt;p&gt;什么你说 T4 小样例对了大样例寄了。T4 $-15$。还是在随机过点的情况下。&lt;/p&gt;
&lt;p&gt;没有分了。好像 $100+92+60+15=267$。&lt;/p&gt;
&lt;p&gt;T2 一共做了 $3 h$ 多是最大的问题了。&lt;/p&gt;
&lt;p&gt;但凡少做半个小时都有时间测 T3 和 T4 的全部大样例。&lt;/p&gt;
&lt;p&gt;T3 改个数组大小 $+16$。T4 拿到代码后丁真 $2 min$ 发现多写个 $-1$ 能 $+15$。&lt;/p&gt;
&lt;p&gt;又怎么样呢。NOIP 没救了。省选。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>NOIWC 2026 游记</title><link>https://candy0014.github.io/posts/travelogue-noiwc-2026</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-noiwc-2026</guid><description> </description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2026-??-??&lt;/h2&gt;
&lt;p&gt;太好了是第一次去 WC 欸。&lt;/p&gt;
&lt;p&gt;什么你说之前去过？OIerDB 上哪有？&lt;/p&gt;
&lt;h2&gt;2026-??-??&lt;/h2&gt;
&lt;p&gt;xcy 建了 TETR WC 群，进去了。&lt;/p&gt;
&lt;h2&gt;2026-02-05&lt;/h2&gt;
&lt;p&gt;看到了宿舍照。绷不住。比监狱小和简陋。&lt;/p&gt;
&lt;h2&gt;2026-02-06&lt;/h2&gt;
&lt;p&gt;飞机没晚点。到青岛挺冷的。&lt;/p&gt;
&lt;p&gt;报到没有发衣服。&lt;/p&gt;
&lt;p&gt;某一堆姓名牌的最上面是价值沉。&lt;/p&gt;
&lt;p&gt;从报到处到宿舍手要给冻死了。&lt;/p&gt;
&lt;p&gt;宿舍楼梯中间有防跳楼网。&lt;/p&gt;
&lt;p&gt;还好宿舍安排的上下铺，要不然真睡监狱了。&lt;/p&gt;
&lt;p&gt;发了全套洗漱用品好评。&lt;/p&gt;
&lt;p&gt;床上有标价 $400$ 的床单被套整套一副。应该是能拿走的吧。懒得套上了，直接塞行李箱里。&lt;/p&gt;
&lt;p&gt;TETR 群里有人发了房号，过去拿了个徽章。但自己没带。&lt;/p&gt;
&lt;p&gt;同学一起学校里逛了一下。发现了乒乓球桌但没有球和球拍。报到处发现了价值沉。&lt;/p&gt;
&lt;p&gt;晚饭质量符合预期，也许比预期好点。&lt;/p&gt;
&lt;p&gt;开幕式座位好像按 CSP 成绩排的。菜完了。又坐在了 YWZ 旁边，以前好几次考试坐他旁边。&lt;/p&gt;
&lt;p&gt;肚子的讲话忘记数说了几个 错！ 了。&lt;/p&gt;
&lt;p&gt;会宿舍打了两把特，差点上 U。&lt;/p&gt;
&lt;h2&gt;2026-02-07&lt;/h2&gt;
&lt;p&gt;上午大模型与教育。听了一半会宿舍了。&lt;/p&gt;
&lt;p&gt;下午先去棋牌室了，打算等上课了看群里风声。&lt;/p&gt;
&lt;p&gt;棋牌室里有打特的。见了 zifu 和 daiari 和 lhf。开了个房打了两把。&lt;/p&gt;
&lt;p&gt;听说课没意思，那算了不去了。&lt;/p&gt;
&lt;p&gt;电脑没电了先回宿舍了。&lt;/p&gt;
&lt;p&gt;晚上有 TETR 比赛。WC 里应该一堆人报名。&lt;/p&gt;
&lt;p&gt;晚上群里约去一个空教室。$7$ 点比赛 $6$ 点到，人几乎全在了。&lt;/p&gt;
&lt;p&gt;和 gza 打了一把 ft5，他机械好像每把都打挂了。&lt;/p&gt;
&lt;p&gt;发现热点很寄，连了 xcy 的热点。&lt;/p&gt;
&lt;p&gt;比赛开始后旁边有老哥因为一直在放直播他对战差点崩溃了。&lt;/p&gt;
&lt;p&gt;然后打了两把 90 堆叠拿下两个低分段的。&lt;/p&gt;
&lt;p&gt;然后遇到一个叫 juele 的 S+，1:0 后网炸了。重新连后按 1:1 开始。不知道是自己还是电脑的问题 DAS 变得极其怪异，直接挂到了 1:4。然后网炸了。于是分到了败者组。&lt;/p&gt;
&lt;p&gt;关电脑回宿舍给电脑冷静一下。&lt;/p&gt;
&lt;p&gt;下一把开始前打了会儿 ZEN 恢复手感。&lt;/p&gt;
&lt;p&gt;碰到几个效率爷。直接跟他爆了。&lt;/p&gt;
&lt;p&gt;期间 juele -&amp;gt; light，light -&amp;gt; wsc。&lt;/p&gt;
&lt;p&gt;然后和这个击败 wsc 的 allspin+速度 玩家 light 对上了。&lt;/p&gt;
&lt;p&gt;但对面 md 挺多的差点直接封了。&lt;/p&gt;
&lt;p&gt;然后和胜者组被打下来的 juele 碰到了。生气的封了他。&lt;/p&gt;
&lt;p&gt;最后连赢两把 _knownerror 拿下了。获得了旺旺大礼包。&lt;/p&gt;
&lt;p&gt;网络极差没法好好打。可以去看直播回放。&lt;a href=&quot;https://www.bilibili.com/video/BV1naFxz4EQY&quot;&gt;https://www.bilibili.com/video/BV1naFxz4EQY&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;2026-02-08&lt;/h2&gt;
&lt;p&gt;上午 lhx。三分之一左右掉线了。&lt;/p&gt;
&lt;p&gt;下午 lhf。一半左右回宿舍了。&lt;/p&gt;
&lt;p&gt;晚上试机。神秘国产电脑。写了 5e8 线性筛测 3-3.5s 不等。&lt;/p&gt;
&lt;p&gt;厕所抽象。&lt;/p&gt;
&lt;p&gt;回去看研究组第一场。&lt;/p&gt;
&lt;h2&gt;2026-02-09&lt;/h2&gt;
&lt;p&gt;比赛日。&lt;/p&gt;
&lt;p&gt;提前半个小时站考场门口受冻。&lt;/p&gt;
&lt;p&gt;发密码。interaction。&lt;/p&gt;
&lt;p&gt;三个交互式。&lt;/p&gt;
&lt;p&gt;检查英文名，是按字典序的。&lt;/p&gt;
&lt;p&gt;按照之前经验顺序一定是 132。&lt;/p&gt;
&lt;p&gt;题面长度和复杂性印证了。&lt;/p&gt;
&lt;p&gt;看 T1。一眼可做题。数据范围多测 $5\times 10^7$ 组放了 $4$ 分难绷。&lt;/p&gt;
&lt;p&gt;草稿纸上推了 $10$ 分钟开始写。细节一堆。$30 min$ 过小样例。交一发 $0$ 分。&lt;/p&gt;
&lt;p&gt;注意到 $n\le 10$ 没过。果断写暴力开拍。拍出来有地方写挂了。交一发 $16$ 分。&lt;/p&gt;
&lt;p&gt;注意到 $n\le 100$ 没过。果断开拍。拍出来有地方写假了。不太好改，改了 $10 min$。交一发 $84$ 分。&lt;/p&gt;
&lt;p&gt;不想卡常。此时过 $50 min$。&lt;/p&gt;
&lt;p&gt;看 T2。不会。刻画成了治疗计划。似乎有点区别，而且治疗计划也没补。刻画了一下最短路，没刻画出来。&lt;/p&gt;
&lt;p&gt;看 T3。不会。看错了评分方式。发现送了 $37$。后面好像有启发式的分数。不管了先打暴力。暴力怎么打。哦糖了。$15 min$ 写完。加上后面启发式部分有 $44$ 分。&lt;/p&gt;
&lt;p&gt;看 T2。刻画了一下网络流，没刻画出来。T2 好难。&lt;/p&gt;
&lt;p&gt;看 T1。循环写糖了 &lt;code&gt;break&lt;/code&gt; 写成 &lt;code&gt;continue&lt;/code&gt; 了。交一发 $96$。现在就算有时间也不会去卡了。&lt;/p&gt;
&lt;p&gt;看 T2。有好多特殊性质。做哪个特殊性质。特殊性质怎么做。&lt;/p&gt;
&lt;p&gt;A 和 B 看起来是写给暴力的。等下再说。&lt;/p&gt;
&lt;p&gt;C 的分好多。C 怎么做。是可达性问题。好像能转坐标系。好像有 &lt;code&gt;bitset&lt;/code&gt;。好像又不太行。&lt;/p&gt;
&lt;p&gt;D 的分也不少。D 怎么做。看起来是正解少讨论一种情况。那会毛线啊。&lt;/p&gt;
&lt;p&gt;CD $12$ 分。CD 怎么做。好像直接贪。直接贪对吗。好像对吧。细节好多。全是边界。&lt;/p&gt;
&lt;p&gt;忘了写多长时间了。写完大样例全挂。&lt;/p&gt;
&lt;p&gt;丁真不出来。大样例里有个小点的，尝试对着这个调。好像坐标转换写挂了。改了。过了这个小点的数据。后面全挂。&lt;/p&gt;
&lt;p&gt;生气了直接弃了。准备先写暴力。暴力怎么写。暴力不会写。只会写 $n\le 10$。&lt;/p&gt;
&lt;p&gt;算了爱写不写，直接开冲。冲了 $20$ 分钟过了 $n\le 10$ 共 $8$ 分。&lt;/p&gt;
&lt;p&gt;还有半小时。丁真 CD 性质。丁真出来有个地方忘取 $\max$ 了。改了。大样例过了。&lt;/p&gt;
&lt;p&gt;暴力还有 $8$ 分。$n\le 1000$ 怎么写。$n\le 1000$ 不会写。&lt;/p&gt;
&lt;p&gt;坐了 $20$ 分钟遗憾离场。&lt;/p&gt;
&lt;p&gt;Cu 应该是稳了，Ag 不知道其他人情况，Au 应该是不可能的。&lt;/p&gt;
&lt;p&gt;问了同学。有人 T3 没打完。T2 好像两极分化严重。&lt;/p&gt;
&lt;p&gt;T2 是建模图论，建出来的都很高，没建出来的暴力也没几分。&lt;/p&gt;
&lt;p&gt;T2 建出来的人也许不多。好像有 Ag 了。&lt;/p&gt;
&lt;p&gt;下午查分。T3 反向挂 $1$ 分。&lt;/p&gt;
&lt;p&gt;听说 xqw 王朝了。&lt;/p&gt;
&lt;p&gt;文艺汇演符合预期。B 站上有回放。&lt;/p&gt;
&lt;h2&gt;2026-02-10&lt;/h2&gt;
&lt;p&gt;忘了。&lt;/p&gt;
&lt;h2&gt;2026-02-11&lt;/h2&gt;
&lt;p&gt;听说 xqw 又王朝了。&lt;/p&gt;
&lt;h2&gt;2026-02-12&lt;/h2&gt;
&lt;p&gt;答辩符合预期。&lt;/p&gt;
&lt;p&gt;有人稳定发挥，提问装得很懂算法的样子。&lt;/p&gt;
&lt;p&gt;有人稳定发挥，问了比去年更抽象的问题。&lt;/p&gt;
&lt;p&gt;闭幕式低于预期。&lt;/p&gt;
&lt;p&gt;不知道表演了什么意味。&lt;/p&gt;
&lt;p&gt;Cu 榜上全是大手子。&lt;/p&gt;
&lt;p&gt;获得唯一分数 $161$。&lt;/p&gt;
&lt;p&gt;隔着两个位置是 wjz $164$。&lt;/p&gt;
&lt;p&gt;xcy 踩线 $168$ Au。&lt;/p&gt;
&lt;p&gt;发现把 T2 的剩下 $8$ 分暴力（&lt;code&gt;bitset&lt;/code&gt;）打掉就 Au 了。&lt;s&gt;顺便能把 xcy 拱掉&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;pmd 强势通过 T3 捧杯。&lt;/p&gt;
&lt;h2&gt;2026-02-13&lt;/h2&gt;
&lt;p&gt;回家过寒假去了。&lt;/p&gt;
</content:encoded><author>candy0014</author></item><item><title>联合省选 2026 游记</title><link>https://candy0014.github.io/posts/travelogue-zjoi-2026</link><guid isPermaLink="true">https://candy0014.github.io/posts/travelogue-zjoi-2026</guid><description> </description><pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;2026-03-06&lt;/h2&gt;
&lt;p&gt;去酒店。家长没跟。和 ykq 住一间。&lt;/p&gt;
&lt;p&gt;学习打雀。打了几把之后爆蛋了。&lt;/p&gt;
&lt;p&gt;打特。寄了一把。不打了睡觉。&lt;/p&gt;
&lt;h2&gt;2026-03-07&lt;/h2&gt;
&lt;p&gt;早上在酒店上了厕所。很好。避免了每次考试前在考场外拉肚子。&lt;/p&gt;
&lt;p&gt;08:20 发解压密码。看题。&lt;/p&gt;
&lt;p&gt;先看数据范围。$5000,200,250$。是不是可以摆了。&lt;/p&gt;
&lt;p&gt;T1 显然期望拆概率。状态好像至少要两维。加个转移至少 $n^3$。完了不会做。长剖还是啥。好像不好做。&lt;/p&gt;
&lt;p&gt;不是我在想什么树形 dp 不是本来就 $n^2$ 吗。&lt;/p&gt;
&lt;p&gt;写了一会儿过样例了。大样例 $3 s$。哪里挂了。不是我逆元处理到 $n^2$ 干嘛。&lt;/p&gt;
&lt;p&gt;大样例 $1.2 s$。还要卡常。不是我 -O2 怎么没开。&lt;/p&gt;
&lt;p&gt;大样例 $0.6 s$。弃了。&lt;/p&gt;
&lt;p&gt;$45 min$。&lt;/p&gt;
&lt;p&gt;T2 特殊性质怎么做。哦直接 dp。&lt;/p&gt;
&lt;p&gt;欸特殊性质有没有有什么区别。好像上个自动机就行。&lt;/p&gt;
&lt;p&gt;状态怎么设。好像 $n^2 k^2$。是不是有点爆炸。哦长度好像不长那就是 $n^3 k$ 的。&lt;/p&gt;
&lt;p&gt;哦是不是可以 &lt;code&gt;bitset&lt;/code&gt;。是不是做完了。欸不是怎么记录方案。炸了。&lt;/p&gt;
&lt;p&gt;算了还是直接 $n^3 k$ dp 吧。好像有 $60$ 分。&lt;/p&gt;
&lt;p&gt;不难写，忘了多少时间写完了。小样例跑出答案了。欸大样例怎么长度都不一样。&lt;/p&gt;
&lt;p&gt;哦方案输出挂了。欸大样例长度怎么还不一样。&lt;/p&gt;
&lt;p&gt;哦贡献统计错了。大样例长度一样了。&lt;/p&gt;
&lt;p&gt;怎么没下发 &lt;code&gt;checker&lt;/code&gt;。算了自己写一个。&lt;code&gt;assert&lt;/code&gt; 对了。&lt;/p&gt;
&lt;p&gt;欸是不是有中间 &lt;code&gt;Impossible&lt;/code&gt; 的情况。算了先看 T3。&lt;/p&gt;
&lt;p&gt;T3 这么多特殊性质一定有很多分吧。&lt;/p&gt;
&lt;p&gt;这个性质 B 看着好有性质。有什么性质。哦帮你定位用的。&lt;/p&gt;
&lt;p&gt;好像可以想象成环形序列。哦那每个数就是连续段。&lt;/p&gt;
&lt;p&gt;怎么判连续段能不能缩成一个点。找规律好像和模 $3$ 有关。不变量是断点左边减右边模 $3$。&lt;/p&gt;
&lt;p&gt;那不是每段长度都模 $3$ 为 $1$ 吗。哦不对完全通过会交换左右即加了个负号。那模 $3$ 余 $2$ 也能变成余 $1$。&lt;/p&gt;
&lt;p&gt;好强的性质。&lt;/p&gt;
&lt;p&gt;B 性质好像细节很多但一定是能写得完的。$n\le 16$ 送了。$m\le 2$ 好像也送了。分还挺多的。&lt;/p&gt;
&lt;p&gt;一个一个写吧。&lt;/p&gt;
&lt;p&gt;欸 $m\le 2$ 怎么这么难写。先把 $n\le 16$ 写了。&lt;/p&gt;
&lt;p&gt;怎么一遍过样例了。怎么样例只有 $O(1)$ 个 &lt;code&gt;Yes&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;不管了写 B 性质。RE 跑不出来。欸方案输出又寄了。过了 B 性质的大样例。&lt;/p&gt;
&lt;p&gt;还有大半个小时 T2 的 &lt;code&gt;Impossible&lt;/code&gt; 应该来得及判。&lt;/p&gt;
&lt;p&gt;想了一个最保险的判法。怎么 D 性质跑 $1.7 s$。把最慢的那个拉出来跑 $5$ 遍要 $3.6 s$。&lt;/p&gt;
&lt;p&gt;能否卡常。好像 $0$ 的位置太多了。开个数组存非 $0$ 位置吧。欸不是怎么 $4 s$ 多了。&lt;/p&gt;
&lt;p&gt;赶紧撤回。还有 $10 min$。&lt;/p&gt;
&lt;p&gt;没有分可以拿了。$100+60/75+44=204/219$。坐等结束。&lt;/p&gt;
&lt;p&gt;T1 怎么这么多人写 $n^3$ 过大样例的。&lt;/p&gt;
&lt;p&gt;T2 怎么全都过了。&lt;/p&gt;
&lt;p&gt;T3 大样例怎么水成这样。&lt;/p&gt;
&lt;p&gt;好像不挂分还行。挂了直接寄。&lt;/p&gt;
&lt;p&gt;T1 可撤销背包有除以 $0$ 的啊。根本没考虑过。大样例过了直接没管。也许是对的吧不对大样例好像是会寄的。&lt;/p&gt;
&lt;p&gt;T2 怎么能把长度记在结果里。大抵是糖丸了丢的近 $20$ 分。&lt;/p&gt;
&lt;p&gt;T3 倒是没什么人很高。&lt;/p&gt;
&lt;p&gt;下午和同学出去走路。直接走到个综合体吃晚饭去了。&lt;/p&gt;
&lt;p&gt;发现了神秘奶龙读物。&lt;/p&gt;
&lt;p&gt;抓娃娃机好贵。根本抓不住。&lt;/p&gt;
&lt;p&gt;舞萌怎么这么难。&lt;/p&gt;
&lt;p&gt;吃饭好多人排队。&lt;/p&gt;
&lt;p&gt;吃完饭打车回酒店。&lt;/p&gt;
&lt;p&gt;打特。寄了两把。&lt;/p&gt;
&lt;h2&gt;2026-03-08&lt;/h2&gt;
&lt;p&gt;早上在酒店上了厕所。很好。避免了每次考试前在考场外拉肚子。&lt;/p&gt;
&lt;p&gt;08:20 发解压密码。看题。&lt;/p&gt;
&lt;p&gt;什么鬼一个真交互一个假交互。都去学 IOI 了吗。&lt;/p&gt;
&lt;p&gt;幸好真交互放在 T1 要不然肯定得被区分。&lt;/p&gt;
&lt;p&gt;数据范围给的提示太明显了。显然得先找 $0$ 的位置。&lt;/p&gt;
&lt;p&gt;然后糖了 $15 min$ 发不现找到 $0$ 后怎么做。&lt;/p&gt;
&lt;p&gt;发现糖了。$10 min$ 写完代码。过大样例。&lt;/p&gt;
&lt;p&gt;$0$ 在开头会不会寄。好像得加句东西。&lt;/p&gt;
&lt;p&gt;T2 什么玩意。这数据范围交互库怎么能跑 $4.5 s$。&lt;/p&gt;
&lt;p&gt;不对啊手模样例二答案不应该是完全图吗。不应该啊。&lt;/p&gt;
&lt;p&gt;欸怎么是完全图异或。看成链异或了。怪不得交互库跑 $4.5 s$。&lt;/p&gt;
&lt;p&gt;但你交互库跑 $4.5 s$ 怎么敢时限开 $6 s$ 的。&lt;/p&gt;
&lt;p&gt;和 WC T3 那个画树倒是挺像的。得先估个上界。&lt;/p&gt;
&lt;p&gt;和度数有关吗。好像有关。那有一个上界了。&lt;/p&gt;
&lt;p&gt;好像和每次修改边数的奇偶性有关。那有两个上界了。&lt;/p&gt;
&lt;p&gt;小样例好像对的。直接开写。&lt;/p&gt;
&lt;p&gt;怎么样例 $3$ 第 $9$ 个点和答案差 $2$。&lt;/p&gt;
&lt;p&gt;输出度数序列。一看就是故意构造的。&lt;/p&gt;
&lt;p&gt;先测后面的样例。样例 $3,5,6,8$ 的第 $9$ 个点都挂。被做局了。&lt;/p&gt;
&lt;p&gt;都输出一下。好像 $n$ 是偶数，都没被第一个上界卡，都被第二个上界卡了。&lt;/p&gt;
&lt;p&gt;直接特判。通过了所有样例。&lt;/p&gt;
&lt;p&gt;$k=3$ 以前写过类似的很简单。$n\le 18$ 怎么做。&lt;/p&gt;
&lt;p&gt;好像有个线性基。线性基求异或后 &lt;code&gt;popcount&lt;/code&gt; 最大能做吗。看起来不太能做。&lt;/p&gt;
&lt;p&gt;不是 $n\le 18$ 的暴力都这么困难吗。&lt;/p&gt;
&lt;p&gt;先把 $k=3$ 写了。&lt;/p&gt;
&lt;p&gt;退火吗。随机调整呢。试一下。能过 $n\le 8$ 的样例。&lt;/p&gt;
&lt;p&gt;顺便手搓些数据验证之前答案对不对。之前想得没挂，写挂了。改好了。&lt;/p&gt;
&lt;p&gt;T3 好像是防 AK 的超级困难题。送的分不多好像，而且都要分包写。&lt;/p&gt;
&lt;p&gt;脑子比较混乱了。决定直接开打暴力。&lt;/p&gt;
&lt;p&gt;拼了菊花。$+4$。&lt;/p&gt;
&lt;p&gt;拼了 $r=1$。$+4$。&lt;/p&gt;
&lt;p&gt;拼了 $n^3$。$+8$。&lt;/p&gt;
&lt;p&gt;我怎么不会 $n^2$。&lt;/p&gt;
&lt;p&gt;算了考试都快结束了。不写了。&lt;/p&gt;
&lt;p&gt;什么玩意考试延长 $15 min$。&lt;/p&gt;
&lt;p&gt;脑子坏掉了没去继续想 T3 $n^2$。&lt;/p&gt;
&lt;p&gt;检查了 T1 $0$ 在首尾的情况。没挂。&lt;/p&gt;
&lt;p&gt;延长时间没分。结束了。&lt;/p&gt;
&lt;p&gt;估 $100+40+16=156$。&lt;/p&gt;
&lt;p&gt;好像 T1 有人没判 $0$ 在首尾寄了。&lt;/p&gt;
&lt;p&gt;好像普遍 T2 没做出第一问。xy 声称第一问分讨极多。&lt;/p&gt;
&lt;p&gt;好像 T3 暴力分有很多。&lt;/p&gt;
&lt;p&gt;能赢吗。&lt;/p&gt;
&lt;h2&gt;2026-03-09&lt;/h2&gt;
&lt;p&gt;爬山。打特。没去想考试。&lt;/p&gt;
&lt;h2&gt;2026-03-10&lt;/h2&gt;
&lt;p&gt;起床想了 $1 min$ D2T2。发现判的东西是很显然的第三个上界。和 $n$ 是偶数没关系。&lt;/p&gt;
&lt;p&gt;最小的 Hack &lt;code&gt;n=7,m=0,k=5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这会挂多少。不知道。&lt;/p&gt;
&lt;p&gt;去机房测了 qoj 数据。根本没有这种数据。但愿如此吧。&lt;/p&gt;
&lt;h2&gt;2026-03-12&lt;/h2&gt;
&lt;p&gt;按道理来说今天出分。&lt;/p&gt;
&lt;p&gt;上午已经很多省出来了。&lt;/p&gt;
&lt;p&gt;ZJ 没出。&lt;/p&gt;
&lt;p&gt;想了 $2 min$ D1T3。$m=2$ 好像少讨论了两种情况。好像每组会以 $1/2$ 的概率挂掉。大样例怎么没测出来。&lt;/p&gt;
&lt;p&gt;这会挂多少。应当挂完了。&lt;/p&gt;
&lt;p&gt;ypq 出去接了个电话说高二的都进了。&lt;/p&gt;
&lt;p&gt;中午能查分了。&lt;/p&gt;
&lt;p&gt;几乎没挂。D2T2 挂 $8$ 分。应该是 $n\le 8$ 暴力挂了。&lt;/p&gt;
&lt;p&gt;其他全部取到上界。&lt;/p&gt;
&lt;p&gt;好像进了。&lt;/p&gt;
</content:encoded><author>candy0014</author></item></channel></rss>