2023.4-2023.5 水题记录 (持续更新)

摆烂了属于是.

1. P4071 [SDOI2016]排列计数

错排板子, 显然答案为 \(\dbinom{n}{m}D_{n-m}\), \(D_k\)m 为错排数.

2. P5104 红包发红包

连续型随机变量入门题. 本人不太熟练, 写一下过程.

根据题中条件, 抽到钱数在 \([0,x](x\in[0,w])\) 间的概率为 \(\dfrac{x}{w}\). 求导得概率密度函数

\[f(x)=\begin{cases}\dfrac{1}{w},&x\in[0,w]\\0,&\text{otherwise}\end{cases} \]

故抽一次得到钱数的期望为

\[E_1(w)=\int_{-\infty}^{+\infty}xf(x)\mathrm{d}x=\int_{0}^{w}xf(x)\mathrm{d}x=\dfrac{w}{2} \]

抽第 \(k\) 次时, 枚举第一次抽到的钱数 \(x\), 并且根据抽 \(k-1\) 次即 \(E_{k-1}(w)\) 的结果, 有

\[E_k(w)=\int_{0}^{w}E_{k-1}(w-x)f(x)\mathrm{d}x \]

数学归纳易证 \(E_k(w)=\dfrac{w}{2^k}\).

3. CF1333E Road to 1600

这题是怎么紫的?

显然 \(n=2\) 不可能; 对 \(n=3\) 我们可以构造:

\[\begin{matrix} 2 & 8 & 7\\ 3 & 4 & 6\\ 1 & 5 & 9 \end{matrix}\]

大概思路是把后绕到最后一步需要马步, 然后试着让车能一次走完.

对于更大的 \(n\) 就简单了, 直接在外面绕圈就行了.

4. CF717E Paint it really, really dark gray

实际上很简单. 直接 dfs 就行, 如果当前点颜色不正确就和父亲结点反复横跳一下 (对于根结点就是随便找一个子结点跳来跳去, 反正路径不要求在根结点结束)

5. CF1534D Lost Tree

这种东西应该是套路题, 但是我没见过.

首先钦定 \(1\) 为根询问一下, 按照深度奇偶将点分为两部分.

然后实际上距离这个条件就没啥用了. 我们取两部分中更小的一部分, 直接找出来和它们直接相连的点就能还原整棵树的形态.

6. CF938E Max History

数数题.

发现这是个严格递增的爬坡求和 (不算最后一个元素), 我们考虑每个元素的贡献.

我们数出来严格比 \(a_p\) 小的数的数量 \(k_p\), 枚举 \(a_p\) 前放的数的数量有

\[\sum\limits_{i=0}^{k_p}\dbinom{k_p}{i}i!(n-i-1)! \]

化简式子作为练习, 最后算出来得 \(\dfrac{n!}{n-k_p}\), 求和即可.

7. P5752 [NOI1999] 棋盘分割

众所周知方差=平方的平均数-平均数的平方, 均方差再开根号.

只需要让平方的平均数最小. 这个可以直接无脑 dp 掉.

(具体状态转移如下)

inline int s(int xa,int ya,int xb,int yb)
{
	return sum[xb][yb]-sum[xb][ya-1]-sum[xa-1][yb]+sum[xa-1][ya-1];
}
inline int sq(int xa,int ya,int xb,int yb)
{
	return s(xa,ya,xb,yb)*s(xa,ya,xb,yb);
}
inline int maxc(int xa,int ya,int xb,int yb){return xb-xa+yb-ya;}
int dfs(int xa,int ya,int xb,int yb,int c)
{
	if(f[xa][ya][xb][yb][c]!=inf)return f[xa][ya][xb][yb][c];
	if(c==0)return f[xa][ya][xb][yb][c]=sq(xa,ya,xb,yb);
	for(int xx=xa;xx<=xb-1;xx++)
	{
		if(maxc(xa,ya,xx,yb)>=c-1)
			f[xa][ya][xb][yb][c]=min(f[xa][ya][xb][yb][c],sq(xx+1,ya,xb,yb)+dfs(xa,ya,xx,yb,c-1));
		if(maxc(xx+1,ya,xb,yb)>=c-1)
			f[xa][ya][xb][yb][c]=min(f[xa][ya][xb][yb][c],sq(xa,ya,xx,yb)+dfs(xx+1,ya,xb,yb,c-1));
	}
	for(int yy=ya;yy<=yb-1;yy++)
	{
		if(maxc(xa,ya,xb,yy)>=c-1)
			f[xa][ya][xb][yb][c]=min(f[xa][ya][xb][yb][c],sq(xa,yy+1,xb,yb)+dfs(xa,ya,xb,yy,c-1));
		if(maxc(xa,yy+1,xb,yb)>=c-1)
			f[xa][ya][xb][yb][c]=min(f[xa][ya][xb][yb][c],sq(xa,ya,xb,yy)+dfs(xa,yy+1,xb,yb,c-1));
	}
	return f[xa][ya][xb][yb][c];
}

8. CF1375G Tree Modification

神秘题.

仔细观察操作影响, 发现这个操作实际上是将树黑白染色后将其中一个点反色了.

因为菊花图是一个白点 \(n-1\) 个黑点, 故操作至少需要 \(\min\{x,y\}-1\) 步, \(x,y\) 分别表示两种颜色的点的数量.

实际上这么多步就足够了, 因为若一种颜色 (不妨设为白色) 的点数大于一, 我们总能找到一个黑点连接两个白点, 将三点作为 \(a,b,c\) 操作即可.

9. P2048 [NOI2010] 超级钢琴

典题.

对于 \(k=1\), 给定一个左端点 \(x\), 限制区间长度为 \([l,r]\) 时, 答案即为

\[\max\{s_i\}-s_{x+l},i\in[x+l-1,\min\{n,x+r-1\}] \]

其中 \(s_p\) 是前缀和. 通过 ST 表我们能 \(O(n\log n)\) 预处理, \(O(1)\) 取用答案.

对于一般的 \(k\) 实际上只需稍作改动. 将所有的答案扔到堆里面每次取最小值就完事了. 每次取出时将 \((x,l,r,p)\) 分裂成 \((x,l,p-1,p_1)\)\((x,p+1,r,p_2)\) 即可. (其中 \(p\) 是答案的右端点, 可 \(O(1)\) 计算; 分裂是为了只把已经取用的答案去掉)

10. CF383C Propagating tree

简单题. 跑 dfs 序然后区间操作就完事了.

具体地, 对于深度为奇数的点记录的是减量, 对于深度为偶数的点记录的是增量. 增加值的时候, 如果增加的是偶数就正常加, 增加的是奇数就加相反数.

11. CF235A LCM Challenge

水题, 当 \(n\) 为偶数显然 \(n(n-1)(n-2)\), 当 \(n\) 为奇数在 \((n-1)(n-2)(n-3)\)\(n(n-1)(n-3)\ (3\nmid n)\) 里面选较大的一个.

12. CF1396B Stoned Game

有趣博弈论.

首先如果有一堆比其他堆的和都多, 先手直接占住就必胜.

因此双方都需避免该种情况的出现, 此时每次取可以取的最多一堆一定是不劣的.

结果是最后所有石子都被取完, 根据石子的奇偶性判断胜负.

13. [ARC127C] Binary Strings

找规律题, 把字典序和排名列出来很容易就能发现规律.

具体地, 首先开头一位一定是 \(1\), 并将排名减 \(1\). 接下来重复操作:

  • 若排名的最高位 (带前导零) 是 \(0\), 则下一位是 \(0\), 去掉最高位并减 \(1\).
  • 否则下一位是 \(1\), 去掉最高位, 无需减 \(1\).
  • 如果某次减 \(1\) 后变成了 \(0\), 那么立即结束.

说起来太抽象了, 列个表.

image

(好像还是很抽象)

14. CF1415D XOR-gun

首先这个序列是非严格单增的.

然后注意到一个很强的性质: 如果有三个相邻位最高位为 \(1\), 直接把后面两个合起来就破坏掉了.

结合单增和数值范围, 我们发现当 \(n>60\) 时必然可以用一步破坏!

于是对 \(n\leqslant 60\) 预处理前缀异或和暴力枚举就完事了.

15. CF1349B Orac and Medians

有用技巧: 遇到中位数要想赋值 \(-1/1\).

这个题将小于中位数的赋为 \(-1\), 大于等于的赋为 \(1\).

注意此时如果有一个长度大于 \(1\) 的区间和大于 \(0\), 可以一次操作把它全推成 \(1\), 然后每次在边缘扩展一个就能全赋成中位数.

于是只需求最大子段和 (判掉单独的 \(1\)) 即可.

注意判掉 \(n=1\) 和中位数不存在的情况, 样例相当良心.

16. CF1325D Ehab the Xorcist

神秘构造. 因为异或是不进位加法, 有 \(u\leqslant v\)\(u,v\) 同号.

\(d=u-v\). 然后会神奇地发现 \((\dfrac{d}{2},\dfrac{d}{2},v)\) 就满足要求.

但是有些情况完全可以做到 \(2\). 我们下面证明若存在长为 \(2\) 的构造, 则它是唯一的.

(咕咕咕)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章