杂题选讲(LCH) 5.6 题解

1.[ICPC2018 WF]Gem Island

组合计数

题意

给定\(n,d,r\),求不定方程\(\sum_{i=1}^{n}x_i=d,x_i\ge 0\)的一组解中前\(r\)大的值的和的期望。

\(1\leq n,d\leq 500\)

题解

如果仅仅是求解总方程的解数的话,即为\(f(n,d)=\binom{n+d-1}{d}\).

我们换一个角度,从迭代的角度考虑方案数,我们每次选择\(k\)个数给它们多分一个,剩下可分的元素也都留给它们,相当于依据值的大小一层一层划分集合。

从这个角度来看,\(f(n,d)=\sum_{k}\binom{n}{k}f(k,d-k)\).

\(g(n,d)\)表示所有解的前\(r\)大的值之和,利用上面的角度可以得出递推式:

\[g(n,d)=\sum_k\binom{n}{k}(g(k,d-k)+min(r,k)\times f(k,d-k)) \]

最后答案即为\(g(n,d)/f(n,d)+r\)(加\(r\)是原题的题目背景导致),时间复杂度\(O(n^2 d)\).

本题在模意义下还有一种时间复杂度更优的做法,

2.[ICPC2018 WF]Conquer The World

模拟费用流

题意

模拟费用流,树上老鼠进洞问题。

要求每个老鼠\(y\)必须要进一个洞\(x\),洞有容量,洞可以不满。

\(n\leq 2.5\times 10^5,\sum y \leq \sum x\leq 10^6\)

题解

第一次打模拟费用流的题目,当一道题的所求与网络流相同,但网络流明显会超时时,可以根据题目特点模拟费用流,本题推荐博客

3.[CERC2015]Frightful Formula

组合计数

题意

已知\(f_{i,1}=l_i,f_{1,i}=t_i,f_{i,j}=af_{i,j-1}+bf_{i-1,j}+c\),求\(f_{n,n}\).

\(n\leq 2\times 10^5\)

题解

本题主要在于观察每类贡献如何计算,具体见博客.

4.[NEERC2016]Game on Graph

博弈论

题意

A 和 B 在玩一个有向图上的游戏。两人轮流操作,每次可以将棋子沿着其中一条边移动,不能移动者输。

你要对于每个点,分别求出以这个店为起点开始游戏,两人分别作为先手,最终会输,赢,还是平局(游戏无限循环)。

其中,A 更期望将游戏变为平局;B更期望游戏不要平局。当然,在不平局的基础上,两人都更希望赢。

\(n,m\leq 2\times 10^5\)

题解

首先判断一个点是否一定平局:

没有出度的点一定可以判断胜负,然后拓扑排序,若A能到的点中所有点均可以判断正负,他就得可以判断正负;若B能到的点中有一个点可以判断正负,他就能判断正负。此时没有遍历到的还上的点一定为平局。

然后对可以判断正负的点再拓扑一次,此时AB策略相同:若所有后继状态均另一人赢,则他必输;有一个状态另一人输,则他可赢。此时没有遍历到的环上的点一定为A赢B输(B宁愿输也不平局)。

5.[NWRRC2015]Graph

贪心 构造

题意

给定一张 有向无环图,你可以至多添加 \(k\) 条有向边,使得这仍然是一个有向无环图,使得字典序最小的拓扑序的字典序尽量大。

输出这个拓扑序以及方案。

\(n,m,k\le 10^5\)

题解

细节很难完全想清楚的一道构造题,题解

备注:若最大堆为空或者最大堆中最大的节点编号小于当前节点,且当前拓扑序集合为空,为了防止出现环/为了防止由编号小的点连向编号大的点,不往最大堆中插入点。

6.[CERC2013]Escape

贪心 启发式合并 可并堆

题意

给定一棵大小为\(n\)的树,第一次进入每个节点时会增加或减少你的血量,初始血量为0,问血量不低于零的情况下能否从点\(1\)走到点\(t\)\(1≤n≤2*10^5,abs(点权)≤10^6\)

题解

这题感觉过题比较容易,但有些细节仍需思考。考虑用启发式合并/每个点维护若干个点对\((x,y)\)表示若花费\(x\)的代价可以获得\(y\)的血量,首先当前点的新点对的血量为正,之后在保证\(x\)不增大的前提下继续合并,对于\(t\),我们将其连向一个新节点,获得\(+inf\)的血量,以确保我们一定会选择走向\(t\).

7.[CERC2013]Captain Obvious and the Rabbit-Man

递推关系

题意

定义 Fibonacci 数 \(f_0 = 0, f_1 = 1, f_n = f_{n-1} + f_{n-2}\) (\(n \ge 1\)),有一个数列 \(\left\{ a_n \right\}\) 满足 $ a_n = c_1 \cdot f_2^n + c_2 \cdot f_3^n + \cdots + c_k \cdot f_{k+1}^n $ 其中 \(c_1, c_2, \cdots, c_k\) 为常数。

现在给定 \(a_1, a_2, \cdots, a_k\)\(\hspace{-0.444em} \pmod M\) 时的值,你需要求出 \(a_{k+1} \bmod M\)

\(n\le 4000\)

题解(待补)

本题涉及的前置知识较多,题做得差不多后再补题解。

8.[ICPC2016 WF]Longest Rivers

贪心

题意

题解

题解

9.[CF24D]Broken robot

概率期望 高斯消元 带状矩阵

题意

\(n\)\(m\) 列的矩阵,现在在$ (i,j)$,每次等概率向左,右,下走或原地不动,但不能走出去,问走到最后一行期望的步数。

\(n,m\le 10^3\)

题解

转移方程易写出,但求解的话需要对带状矩阵进行高斯消元。

注意到这道题不要求写出模意义下的值,只要求求出近似值,这时候对于同一个状态反复转移不失为一个较好的策略。

带状矩阵

#include<bits/stdc++.h>
using namespace std;
const int N=1005;
double f[N][N],k[N];
int n,m,a,b;
int main(){
	cin>>n>>m>>a>>b;
	for(int i=1;i<=m;i++)k[i]=2+(i!=1)+(i!=m);
	for(int i=n-1;i>=a;i--)
		for(int t=0;t<100;t++)
			for(int j=1;j<=m;j++)
				f[i][j]=(f[i][j]+f[i][j+1]+f[i][j-1]+f[i+1][j])/k[j]+1;
	printf("%.10lf\n",f[a][b]);
	return 0;
}

10.[CERC2015]Ice Igloos

计算几何

题意

给你\(n\)个圆,\(m\)条线段,求每条线段与多少圆相交。

\(n,m\leq 10^5,1\leq x_i,y_i \leq 500,0<r_i<1\),各坐标均为整点

题解

可以说是平生第一道正式的计算几何题,

题解by aztl

11.[ICPC2017 WF]Money for Nothing

分治 决策单调性

题意

坐标平面上有 \(m\) 个红点,\(n\) 个蓝点。你需要找到一个边平行于坐标轴的矩形,使得它以一个红点为左下角,蓝点为右上角,且面积最大。

\(n,m\leq 5\times 10^5,\)

题解

学到了新东西——利用分治法维护决策单调性,在本题中相比单调栈维护更易于码代码。

题解

void divide(int l,int r,int nl,int nr){
	if(l>r||nl>nr)return;
	int mid=(l+r)>>1;
	ll res=-1e18;int Mid=0;
	for(int i=nl;i<=nr;i++)
		if(a[mid].x<b[i].x||a[mid].y<b[i].y)
			if(a[mid]*b[i]>res)res=a[mid]*b[i],Mid=i;
	if(Mid){
		divide(l,mid-1,nl,Mid);
		divide(mid+1,r,Mid,nr);
		ans=max(ans,res);
	}
}

12.[HEOI2013]SAO

组合计数 树形DP

题意

给定一个有向的树结构,需要安排选择节点的顺序,父子节点间有限制(父亲必须先选或者儿子必须先选),求方案数。

\(n\leq 1000\)

题解(待补)

这道题在这篇博客提到的题中属于非常常规的一道题(这道题本身也不是杂题选讲的正式内容),或许THUSC后会自己码一份题解。

13.[NEERC2017]Knapsack Cryptosystem

阈值 Meet In the Middle 数论

题意

T1.PNG

题解

题解

学到的东西:

(1)按数据规模分类的思想

(2)Meet In the Middle算法

(3)同余式的除法

要注意:1<<64未定义,未避免RE,需写为2<<63

14.[ICPC2017 WF]Son of Pipe Stream(未做)

网络流 人类智慧

题意

题解

15.[NWRRC2017]Fygon 2.0(未做)

状压DP 计数

题意

题解

16.[ICPC2014 WF]Pachinko(未做)

概率期望 高斯消元 带状矩阵

题意

题解

17.[CERC2015]Cow Confinement(未做)

扫描线

题意

题解

posted @ 2021-05-06 19:19  Robert_JYH  阅读(208)  评论(3编辑  收藏  举报