竟然上 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) 题解的更多相关文章

  1. Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest

    Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest(dp+线段树) 题目链接 题意: 给定3个人互不相同的多个数字,可以 ...

  2. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  3. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  4. 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 ...

  5. 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 ...

  6. Educational Codeforces Round 48 (Rated for Div. 2) CD题解

    Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...

  7. Educational Codeforces Round 60 (Rated for Div. 2) 题解

    Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...

  8. Educational Codeforces Round 59 (Rated for Div. 2) DE题解

    Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...

  9. Educational Codeforces Round 58 (Rated for Div. 2) 题解

    Educational Codeforces Round 58 (Rated for Div. 2)  题目总链接:https://codeforces.com/contest/1101 A. Min ...

随机推荐

  1. 代码混淆保安全「GitHub 热点速览 v.21.43」

    作者:HelloGitHub-小鱼干 虽然让代码难以阅读看似是件难以理解的事情,但是混淆后的代码起到了类似加密的作用,而且经过混淆的代码依旧能实现原代码的功能.javascript-obfuscato ...

  2. 【c++ Prime 学习笔记】第18章 用于大型程序的工具

    大规模应用程序的特殊要求包括: 在独立开发的子系统之间协同处理错误:异常处理 使用各种库(可能包含独立开发的库)进行协同开发:命名空间 对比较复杂的应用概念建模:多重继承 18.1 异常处理 异常处理 ...

  3. kivy布局(一)

    # import kivy from kivy.app import App # 导入应用 from kivy.uix.label import Label # 导入标签 from kivy.uix. ...

  4. C++的指针使用心得

    使用C++有一段时间了,C++的手动内存管理缺失很麻烦,一不小心容易产生内存泄漏.自己总结了一点使用原则(不一定对),备注一下,避免忘记. 1.类外部传来的指针不处理 2.Qt对象管理的内存不处理 3 ...

  5. Linux该如何学习新手入门遇到问题又该如何解决

    本节旨在介绍对于初学者如何学习 Linux 的建议.如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法. 如何去学习 学习大多类似庖丁解牛,对事物的认识一般都是由 ...

  6. DDD领域驱动设计-项目包结构说明-Ⅳ

     基于DDD领域驱动设计的思想,在开发具体系统时,需要先建立不同的层级包.主要是梳理不同层面(应用层,领域层,基础设施层,展示层)包括的功能目录,每一个层面应该包括哪些模块.本例所讲述的分层是DDD落 ...

  7. 算法:N-gram语法

    一.N-gram介绍 n元语法(英语:N-gram)指文本中连续出现的n个语词.n元语法模型是基于(n - 1)阶马尔可夫链的一种概率语言模型,通过n个语词出现的概率来推断语句的结构.这一模型被广泛应 ...

  8. linux 内核源代码情景分析——linux 内存管理的基本框架

    386 CPU中的页式存管的基本思路是:通过页面目录和页面表分两个层次实现从线性地址到物理地址的映射.这种映射模式在大多数情况下可以节省页面表所占用的空间.因为大多数进程不会用到整个虚存空间,在虚存空 ...

  9. 恶意代码分析实战五:OllyDebug动态结合

    目录 恶意代码分析实战五:OllyDebug动态结合 OllyDebug界面介绍 OllyDebug载入程序方法 OllyDebug地址跳转 OllyDebug下断点 OllyDebug单步执行 Ol ...

  10. pycharm软件安装和破解

    pycharm安装 1. 进入pycharm的官网 --- 下载专业版的pycharm 2. 双击下载好的软件,下一步 3. 选择需要安装软件的路径 --- 注意: 尽量不要将软件装在C盘里 4. 默 ...