没有合适的资源?快使用搜索试试~ 我知道了~
首页程序算法题解大全:洛谷与CF经典题目详解
程序算法题解大全:洛谷与CF经典题目详解
需积分: 5 0 下载量 98 浏览量
更新于2024-06-20
收藏 1.11MB PDF 举报
"《程序算法题解实用知识库分享》是一份全面的IT资料,专注于算法题目的解析和解答。这份文档涵盖了多种编程竞赛平台(如Codeforces和洛谷)上的经典题目,包括CF1294F、CF1632E1/E2、CF1646D等,涉及到的问题类型广泛,如数据结构(如树、字符串)、动态规划、图论等。其中,CF1294F题解展示了如何通过直观的理解来优化解决方案,提出了一种O(n)复杂度的方法,利用树的特性来找到与直径两端点距离之和最大的节点。 在解决这个问题时,关键步骤是确定直径的两个端点,然后计算每个非端点节点到这两个端点的路径长度和深度。通过预先计算这些距离和深度信息,可以简化查找过程,例如在CF1294F中,作者提出用O(nlogn)的时间复杂度求解,通过找出两个端点到目标节点的路径长度之和加上两者深度差,得出最终的答案。 此外,文档还包含了其他难度级别的题目,如背包问题(多人背包),字符串处理(如失配树,KMP算法),以及一些经典比赛题目(如NOI、LNOI等)。每一道题解都详细阐述了解题思路,旨在帮助读者提升算法理解和实践能力。这份知识库对于学习者来说,是一个宝贵的参考资料,可以帮助他们在算法竞赛中取得更好的成绩,提高编程技巧。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/88360338/bg8.jpg)
1.
2.
1.
CF398B题解
题目描述
有一个 的网格,其中 格子涂上了色。每次随机选择一个格子n × n n \times n n × n m m m
有可能是涂过色的格子 涂色,求让网格每一行每一列都至少有一个格子涂了色的操作( ( ( ) ) )
次数期望。
算法分析
考虑进行DP,设 表示剩 行, 列没有涂色,将f [ i ] [ j ] f[i][j] f[i][j] i i i j j j
网格全部涂上色的期望次数。
先来看预处理的部分,也就是当 或者 的情况。这两种情况本i = 0 i=0 i = 0 j = 0 j=0 j = 0
质上是一样的,下面讲解如何求出 的情况。i = 0 i=0 i = 0
i = 0 i=0 i = 0 的时候,我们就可以剩掉 这一维,因为一直是 。下面讲解两种方i i i 0 0 0
法。
设 表示已经涂了 个格子,将格子全涂满的期望步数。显然 d p [ i ] dp[i] dp[i] i i i d
,我们要求的答案是 ,所以是逆推。p [ n ] = 0 dp[n] = 0 dp[n] = 0 d p [ 0 ] dp[0] dp[0]
有 的概率涂到已经涂过色的格子,此时仍然需要涂 i n \frac{i}{n} ni d p [ i ] dp[i] dp[
次;有 的概率涂到还没有被涂色的格子,此时需要涂 i] n i n \frac{n-i}{n} nni d p [ i
次。所以转移式为 + 1 ] dp[i+1] dp[i + 1] d p [ i ] = i n × d p [ i ] + n i n × d p
[ i + 1 ] + 1 dp[i] = \frac{i}{n} \times dp[i] + \frac{n-i}{n} \times dp[i+1] + 1 dp
,这里的 表示这一次涂色的代价。把式子化简[i] = ni × dp[i] + nni × dp[i + 1] + 1 + 1 +1 +1
一下,就变成了 d p [ i ] = d p [ i + 1 ] + n n i dp[i] = dp[i+1] + \frac{n}{n-i} dp
。最后整理一下会发现变成了 [i] = dp[i + 1] + nin d p [ 0 ] = ∑ i = 1 n n i dp[0] = \sum_
。{i=1}^n \frac{n}{i} dp[0] = i=1n in
考虑当已经涂了 个格子,从剩下的格子中随机选一个涂,概率是 i 1 i-1 i 1 n i + 1 n
,期望为 \frac{n-i+1}{n} nni+1 1 p = n n i + 1 \frac{1}{p} = \frac{n}{n-i+1} p1 = ni+
。所以总期望为 1n ∑ i = 1 n n n i + 1 = ∑ i = 1 n n i \sum_{i=1}^n \frac{n}{n-
。i+1} = \sum_{i=1}^n \frac{n}{i} i=1n ni+1n = i=1n in
所以我们要的 就为 f [ i ] [ 0 ] f[i][0] f[i][0] f [ i 1 ] [ 0 ] + n i f[i-1][0] +
, 为 \frac{n}{i} f[i 1][0] + in f [ 0 ] [ i ] f[0][i] f[0][i] f [ 0 ] [ i 1 ] + n i f
。[0][i-1] + \frac{n}{i} f[0][i 1] + in
然后来看DP的部分。我们看 可以从哪几种情况转移。f [ i ] [ j ] f[i][j] f[i][j]
剩下 行, 列,表示这一次涂色涂的格子正好使新的 行和 i 1 i-1 i 1 j 1 j-1 j 1 1 1 1
列被涂。一共有 个格子,满足该条件的格子有 1 1 1 n × n n \times n n × n i × j i
个 可以想象一下,此时抽象为一个 的网格,\times j i × j ( ( ( i × j i \times j i × j
∑
∑ ∑
CF398B题解
第 6 页 /共
42 页
![](https://csdnimg.cn/release/download_crawler_static/88360338/bg9.jpg)
1.
2.
3.
4.
这个网格里面的每一个位置都满足可以使 行和 列被涂 ,此时的期望为 1 1 1 1 1 1 ) ) ) f
[ i 1 ] [ j 1 ] × i × j n 2 f[i-1][j-1] \times \frac{i \times j}{n^2} f[i 1][j 1
。] × n2i×j
剩下 行, 列,表示这一次涂色涂的格子可以使新的 行被涂,而且i 1 i-1 i 1 j j j 1 1 1
该位置对应的列已经被涂过色了,有 行, 列的网格中的每一个位置满足i i i n j n-j n j
条件,此时的期望为 f [ i 1 ] [ j ] × i × ( n j ) n 2 f[i-1][j] \times \frac{i
。\times (n-j)}{n^2} f[i 1][j] × n2i×(nj)
剩下 行, 列,表示这一次涂色涂的格子可以使新的 列被涂,而且i i i j 1 j-1 j 1 1 1 1
该位置对应的行已经被涂过色了,有 行, 列的网格中的每一个位置满足n i n-i n i j j j
条件,此时的期望为 f [ i ] [ j 1 ] × ( n i ) × j n 2 f[i][j-1] \times \frac{(n-
。i) \times j}{n^2} f[i][j 1] × n2(ni)×j
剩下 行, 列,表示这一次涂色不能使新的 行或者新的 列图上色。i i i j j j 1 1 1 1 1 1
有 行, 列的网格中的每一个位置满足条件,此时的期望为 n i n-i n i n j n-j n j f [ i
] [ j ] × ( n i ) × ( n j ) n 2 f[i][j] \times \frac{(n-i) \times (n-j)}{n^2} f[
。i][j] × n2(ni)×(nj)
所以总的转移式为 f [ i ] [ j ] = f [ i 1 ] [ j 1 ] × i × j n 2 + f [ i 1 ] [ j
] × i × ( n j ) n 2 + f [ i ] [ j 1 ] × ( n i ) × j n 2 + f [ i ] [ j ] × (
n i ) × ( n j ) n 2 + 1 f[i][j] = f[i-1][j-1] \times \frac{i \times j}{n^2} + f[i-
1][j] \times \frac{i \times (n-j)}{n^2} + f[i][j-1] \times \frac{(n-i) \times j}
{n^2} + f[i][j] \times \frac{(n-i) \times (n-j)}{n^2} + 1 f[i][j] = f[i 1][j 1] × n2i
× j + f[i 1][j] × n2i × (n j) + f[i][j 1] × n2(n i) × j + f[i][j] × n2(n i) × (n j) + 1
这里的 和上面的相同,也是表示这一次涂色的代价。由于等式右面也有 + 1 +1 +1 f [ i ] [
,我们移项,进行花间。最后的转移式为 j ] f[i][j] f[i][j] f [ i ] [ j ] = n 2 + i ×
j × f [ i 1 ] [ j 1 ] + i × ( n j ) × f [ i 1 ] [ j ] + ( n i ) × j × f [
i ] [ j 1 ] n 2 ( n i ) × ( n j ) f[i][j] = \frac{n^2 + i \times j \times f[i-1]
[j-1] + i \times (n-j) \times f[i-1][j] + (n-i) \times j \times f[i][j-1]}{n^2 - (n-
i) \times (n-j)} f[i][j] = n2 (n i) × (n j)n2 + i × j × f[i 1][j 1] + i × (n j) × f[i 1]
[j] + (n i) × j × f[i][j 1]
到这里,这道题也就结束了,真是一道期望的好题!
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#define re register
#define rep a b c re b a c a( , , ) for( int a( ) ; <= ; ++ )
#define drep a b c re b a c a( , , ) for( int a( ) ; >= ; -- )
stdusing namespace ;
inline int read(){
x f chint =0, =1;char =getchar();
ch ch ch f chwhile( <'0'|| >'9'){if( == '-') =-1 ; =getchar();}
ch ch x x x ch chwhile( >='0'&& <='9'){ =( <<1)+( <<3)+( ^48) ; =getchar();}
x freturn * ;
CF398B题解
第 7 页 /共
42 页
剩余43页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
kbv516
- 粉丝: 0
- 资源: 35
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- Simulink在电机控制仿真中的应用
- 电子警察:功能、结构与抓拍原理详解
- TESSY 4.1 英文用户手册:Razorcat Development GmbH
- 5V12V直流稳压电源设计及其实现
- 江西建工四建来宾市消防支队高支模施工方案
- 三维建模教程:创建足球模型
- 宏福苑南二区公寓楼施工组织设计
- 福建外运集团信息化建设技术方案:网络与业务平台设计
- 打造理想工作环境:详尽的6S推行指南
- 阿里巴巴数据中台建设与实践
- 欧姆龙CP1H PLC操作手册:SYSMACCP系列详解
- 中国移动统一DPI设备技术规范:LTE数据合成服务器关键功能详解
- 高校竞赛信息管理系统:软件设计与体系详解
- 面向对象设计:准则、启发规则与系统分解
- 程序设计基础与算法解析
- 算法与程序设计基础概览
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)