ARC126F
[ARC126F] Affine Sort
给定一个长为 \(N\) 的序列 \(x\) ,定义 \(f(K)\) 表示满足下述条件的 \((a,b,c)\) 个数:
- \(1\le c\le K,0\le a,b<c\) ;
- \((ax_i+b)\bmod c\) 递增
可以证明 \(\lim \limits_{k\to \infty} \frac{f(K)}{k^3}\) 趋向一个定值,对 998244353 取模。
\(2\le N\le 10^3,\sum\limits_{i=1}^{N}X_i\le 5\cdot 10^5\) , \(X_i\) 两两不同。
Solution
我们记 \(g(k)\) 表示 \(c=k\) 的满足条件的 \((a,b)\) 对数,则:
引理1: \(\lim\limits_{k\to \infty} \frac{g(k)}{k^2}\) 趋向一个定值 \(C\) 。
因此 \(\lim\limits_{k\to \infty}\frac{f(K)}{K^3}=\lim\limits_{K\to \infty} \sum\limits_{k=1}^{K} \frac{g(k)}{K^3}=\lim\limits_{k\to \infty}\sum\limits_{k=1}^{K}\frac{Ck^2}{K^3}=\frac{C}{3}\) 。
约定 \(\{x\}\) 表示 \(x\) 的小数部分,例如 \(\{-5.2\}=0.8\) 。于是我们将原条件转换为:\(\{\frac{ax_i+b}{c}\}\) 单调递增。
因为 \(k\to \infty\) ,不难联想到定义点集 \(D\subset \mathcal R^2\) :\(D=\{(a,b)\in [0,1]^2 | \{ax_i+b\} 单调递增 \}\) 。那么,\(g(k)\) 可以看做是满足 \(0\le a,b<k,(\frac{a}{k},\frac{b}{k}) \in D\) 的点的面积,即 \(g(k)=\text{area}(D)\)。
将这些 \(\{ax_i\}\) 都画在一个单位圆上,它们需要逆时针排布。不难发现,这个 \(\{ax_i+b\}\) 单调递增的充要条件是:\(\sum\limits_{i=1}^{n}\{a(x_{i+1}-x_i)\}=1\) 。同时若 \(a\) 合法,满足条件的 \(b\) 个数为 \(\{a(x_1-x_n)\}\) 。
而对于每个 \(i\) ,\(a\) 只有在 \(\frac{*}{|x_{i+1}-x_i|}\) 的时刻会出现断点(即小数部分 \(±1\) )。总共有 \(\sum\limits_{i=1}^{n} |x_{i+1}-x_i|\le \sum\limits_{i=1}^{n}(x_i+x_{i+1})=\mathcal O(\sum\limits_{i=1}^{n}x_i)\) 个断点。
因此将断点排序,相邻两断点间的 \(\sum\limits_{i=1}^{n}\{a(x_{i+1}-x_i)\}\) 是相同的,而区间内对 \(\text{area}(D)\) 的贡献即为 \(\int_{l}^{r} \{a(x_1-x_n)\}\) ,这是好求的(注意,是趋近于 \(l,r\) ,断点处的取值是忽略的,所以实现上有一些细节)。
时间复杂度 \(\mathcal O(\sum x_i)\) 。
[M-SOLUTIONS F] Random Tournament
有 \(n\) 个人参加比赛,给定两两之间比赛的输赢关系。
比赛规则是,将 \(n\) 个人按照 \(1\) 到 \(n\) 的顺序排列,每次可以挑相邻两人比赛,输的人离场。最后剩下的人是冠军。
求有多少个人可能成为冠军。
\(1\le n\le 2000\) 。
Solution
考虑朴素的区间 DP ,定义 \(f_{l,r,x}\) 表示只考虑区间 \([l,r]\) 的人,\(x\) 能否成为冠军。转移直接是 \(f_{l,r,x}=f_{l,x,x}\&f_{x,r,x}\) 。
注意转移下标的形式,因此定义 \(L_{l,r}\) 表示区间 \([l,r]\) 里 \(l\) 能否成为冠军,\(R_{l,r}\) 同理。
考虑转移,结论是 \(L_{l,r}=\max\limits_{l<k\le r} \{a_{l,k}\&R_{l+1,k}\&L_{k,r}\}\) ,可以这样考虑:
假设 \(l\) 和一些位置比赛,不妨 \(pos_1,\cdots,pos_k\) ,我们随便拎个 \(pos_t,pos_{t+1}\) ,如果 \(pos_{t}\) 打败 \(pos_{t+1}\) ,则可以剔除 \(pos_{t+1}\) ;如果 \(pos_{t+1}\) 打败 \(pos_{t}\) ,则可以剔除 \(pos_t\) 。
也就是说如果 \(l\) 能成为冠军,一定存在一个策略,\(l\) 只和一个位置比赛。因此 DP 式子成立。用 bitset 优化 DP 即可。
时间复杂度 \(\mathcal O(\frac{n^3}{\omega})\) 。
ARC126F的更多相关文章
随机推荐
- java中异常(Exception)的定义,意义和用法。举例
1.异常(Exception)的定义,意义和用法 我们先给出一个例子,看看异常有什么用? 例:1.1- public class Test { public static void main(S ...
- 三种div点击事件
<div id="div" onclick="alert('成功')">点击</div> var oDiv = document.get ...
- 多态,动态方法调度(dynamic method dispatch)?
8.多态Polymorphism,向上转型Upcasting,动态方法调度(dynamic method dispatch) 什么叫多态?简言之,马 克 - t o - w i n:就是父类引用指向子 ...
- 移动端input输入框把页面顶起, 收起键盘页面复原不了问题
我相信大家平时也会遇到这种问题, 移动端 input 或者 textarea获取光标, 整个页面被顶起来, 键盘收起, 页面不复原的问题 ====>>>> 我这边提供两种解决 ...
- iOS全埋点解决方案-控件点击事件
前言 我们主要介绍如何实现控件点击事件($AppClick)的全埋点.在介绍如何实现之前,我们需要先了解一下,在 UIKit 框架下,处理点击或拖动事件的 Target-Action 设计模式. ...
- Elasticsearch 使用-安装
Elasticsearch 使用-安装 官方网站 https://www.elastic.co/cn/elasticsearch/ 什么是 Elasticsearch? Elasticsearch 是 ...
- Django中间件、csrf跨站请求、csrf装饰器、基于django中间件学习编程思想
django中间件 中间件介绍 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出. ...
- js中的undefined
undefined,一个特殊值,通常用于指示变量尚未赋值,是一个JavaScript的 原始数据类型 . 如果后台返回前台数据为空(无数据),那么用该对象获取其中的属性会显示undefined. 如果 ...
- MySQL启动过程详解二:核心模块启动 init_server_components()
mysqld_main() 函数中,init_server_components() 函数负责MySQL核心模块的启动,包括mdl系统,Innodb存储引擎的启动等等: 1. mdl子系统初始化. 2 ...
- 前端性能优化之js,css调用优化
规则1:减少HTTP请求 把多个JS请求合并为一个JS请求,把多个CSS请求合并为一个CSS请求.从而减少从客户端向服务器端的请求数. 规则3:添加Expires头 用http ...