Contest 2050 and Codeforces Round #718 (Div. 1 + Div. 2) 题解
竟然上 GM 了,incredible(
A
首先如果 \(2050\nmid n\) 那显然就 \(-1\) 了,否则答案显然为 \(\dfrac{n}{2050}\) 的各位数字和。
B
显然这个最小值就是全部 \(nm\) 个数中最小的 \(m\) 个数之和,用个优先队列什么的维护一下即可,时间复杂度 \(nm\log m\)
C
zszz 凭我们的猜结论大法可知答案唯一存在并且每次往左往下走即可构造出答案。
D
首先们知道对于一个点而言,最优走法肯定是先走 \(\dfrac{k}{2}\) 步使得花费最小,然后原路返回。
因此考虑设 \(dp_{i,j,t}\) 为从 \((i,j)\) 出发走 \(t\) 步的最小花费,转移就枚举下一步到达的点随便更新一下即可,最后的 \(ans_{i,j}=dp_{i,j,k/2}\times 2\)
E
这个题还稍微有点意思,而且我上 GM 还要多亏了这道题拉开手速的差距啊(
首先特判掉全是 P 的情况,这个贡献显然为 \(1\)。
一个 observation 是如果 P 的连续段个数 \(\ge 2\),那么第一个 C 的位置显然只可能是第 \(1\) 个或者第 \(2\) 个,否则前两个都是 P,而 P 的连续段个数 \(\ge 2\),因此这两个连续段之间的间隔 \(\ge 2\),大于前两个 P 之间的距离 \(1\),不符合条件。
这样就可以分情况讨论了,如果第一个 C 的位置 \(\ge 3\),那 P 只可能形成一个连续段,不难发现合法的排列方式只可能形如 PPP...PPCCC...CC,也就是说 P 是一段前缀,C 是一段后缀,枚举前缀长度随便算算即可。
如果第一个 C 的位置 \(\le 2\),那么手玩一下也可以发现合法的排列方式只可能形如 (P)CCC...CCPCPCPCPP...P(C) 枚举前面一段 C 的长度然后二分一下 CPCPCPCPC...PC 的长度即可。
所以说这个 \(\bmod 998244353\) 是假的(
F
这个题现场就差一点点没想出来啊啊啊!要是现场切掉了说不定涨的就不是 \(147\) 分而是 \(247\) 分甚至更多了(白 日 做 梦
首先看到这种最大值的期望时通常考虑容斥,这题也不例外,考虑设 \(f_i\) 表示团的大小 \(\le i\) 的概率,那么这个概率等价于将全部 \(n\) 个点染成黑白两种颜色,使得以每个点为中心,半径为 \(i\) 的区域中都至少包含一个白点。
这又可以进一步转化:对于所有白点,到其距离 \(\le i\) 的区域的并集刚好包含了整棵树。
这个概率可以通过树形 \(dp\) 求出,我们记 \(dp_{i,j}\) 表示对于 \(i\) 子树中的点,若 \(j\ge 0\) 则 \(i\) 上方深度最浅的被覆盖的点离 \(i\) 的距离为 \(j\) 的概率,否则表示 \(i\) 子树中深度最深的未被覆盖的点离 \(i\) 的距离为 \(-j-1\) 的概率,考虑转移,假设我们合并 \(dp_u\) 和 \(dp_v\),其中 \(u\) 为 \(v\) 的父亲,那么考虑两个值 \(dp_{u,i}\) 和 \(dp_{v,j}\),如果 \(i+j\ge 0\) 那么显然它可以覆盖全部 \(u\) 的子树,并且还能再向上覆盖 \(\max(i,j-1)\) 层,否则 \(i\) 子树中深度最深的未被覆盖的点离 \(i\) 的距离为 \(\min(i,j-1)\)。按照树形背包的套路转移即可,初始值 \(dp_{u,-1}=dp_{u,i}=\dfrac{1}{2}\)
时间复杂度 \(\mathcal O(n^3)\)。
G
看数据范围有点像网络流,事实上此题的的确确是网络流,考虑什么样的四个点能够组成题目中所说的平行四边形,我们将坐标系划分成一个个 \(2\times 2\) 的网格,下记:
- 横纵坐标都是偶数的点为 \(0\) 类点
- 横坐标为奇数,纵坐标为偶数的点为 \(1\) 类点
- 横坐标为偶数,纵坐标为奇数的点为 \(2\) 类点
- 横纵坐标都是奇数的点为 \(3\) 类点
那么将网格图做这样的划分后,可能的平行四边形有以下情况(这里蒯了 George1123 的图):

不难发现这样的平行四边形一定存在一条路径包含四类点的边,并且起点一定是 \(1\) 号点,终点一定是 \(3\) 号点,即 \(1\to 0\to 2\to 3\),并且这显然是组成题目所说的平行四边形的充要条件。
故考虑在相邻的 \((1,0),(0,2),(2,3)\) 点之间连边,然后拆点跑最小割即最大流即可。
Contest 2050 and Codeforces Round #718 (Div. 1 + Div. 2) 题解的更多相关文章
- Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest
Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest(dp+线段树) 题目链接 题意: 给定3个人互不相同的多个数字,可以 ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...
- Educational Codeforces Round 48 (Rated for Div. 2) CD题解
Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...
- Educational Codeforces Round 60 (Rated for Div. 2) 题解
Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...
- Educational Codeforces Round 59 (Rated for Div. 2) DE题解
Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...
- Educational Codeforces Round 58 (Rated for Div. 2) 题解
Educational Codeforces Round 58 (Rated for Div. 2) 题目总链接:https://codeforces.com/contest/1101 A. Min ...
随机推荐
- 这样学BAT必面之软件设计原则,还不会就是我的问题
学习设计原则是学习设计模式的基础.在实际开发过程中,并不要求所有代码都遵循设计原则,我们要考虑人力.时间.成本.质量,不能刻意追求完美,但要在适当的场景遵循设计原则,这体现的是一种平衡取舍,可以帮助我 ...
- SpringCloud-初见
目录 前言 微服务概述 微服务与微服务架构 微服务优缺点 微服务技术栈 为什么选择SpringCloud作为微服务架构 SpringCloud入门 SpringCloud和SpringBoot的关系 ...
- numpy中的nan和常用方法
1.数组的拼接 import numpy as np t1 = np.array([[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]]) t2 = np.array([ ...
- 深度解析HashMap集合底层原理
目录 前置知识 ==和equals的区别 为什么要重写equals和HashCode 时间复杂度 (不带符号右移) >>> ^异或运算 &(与运算) 位移操作:1<&l ...
- Go并发编程--Mutex/RWMutex
目录 一.前言 二. Mutex 2.1 案例 三. 实现原理 3.1 锁的实现模式 3.2 Go Mutex 实现原理 3.2.1 加锁 3.2.2 解锁 四. 源码分析 4.1 Mutex基本结构 ...
- Linux修改bashrc
.bashrc是一个隐藏的文件,要打开并修改该文件需要: (1) 查看:ll -a 找到文件 .bashrc: (2) 打开:vi .bashrc (或者 vim .bashrc) 打开文件: (3) ...
- 数组中的逆序对 牛客网 剑指Offer
数组中的逆序对 牛客网 剑指Offer 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对10000000 ...
- 0x03
指数级枚举:1到n任意选取的所有方案数: #include<bits/stdc++.h> using namespace std; int n,a[1100],vis[1100],cnt, ...
- hdu 5056 Boring count (类似单调队列的做法。。)
给一个由小写字母构成的字符串S,问有多少个子串满足:在这个子串中每个字母的个数都不超过K. 数据范围: 1<=T<= 1001 <= the length of S <= 10 ...
- 使用NLog把日志写入数据库并按天自动分表
前言 最近用Asp.net Core开发程序的时候 因为时间的关系,就没有过多的去关注日志方面的功能 都是直接用系统的ILogger先记录着,然后看日志的时候就先在命令行看日志 在开发阶段没有什么问题 ...