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的更多相关文章
随机推荐
- video标签学习使用
video标签学习使用 学习前的理解 video是HTML5中的新标签,可以用来播放视频.对于不同的浏览器支持的视频格式不一样,但是具体浏览器支持的类型并不清楚. 支持的类型 视频的格式分为编码格式和 ...
- 一个命令完成[打包+同步七牛cdn+上传服务器]
webpack+gulp+qshell+npm-scripts实现一个命令完成[打包+同步cdn+上传服务器] 说明 由于我们用的七牛云存储,所以cdn也是走的七牛,所以并不适用于其他的cdn,但是思 ...
- python爬虫---爬取网易云音乐
代码: import requests from lxml import etree text = requests.get("https://music.163.com/discover/ ...
- Python Turtle库绘制表盘时钟
运行效果: 源代码: 1 # coding=utf-8 2 3 import turtle 4 from datetime import * 5 6 # 抬起画笔,向前运动一段距离放下 7 def S ...
- js 图片上传给后台的3种格式
1. file格式 (创建formData来完成file上传) 我们的接口需求: 代码: <input type="file" id="imgfile" ...
- JS判断数组中的对象的每一个值不能为空
方法一:使用every()函数,此函数不怎么常用,想要了解更多请自查 //表格 evaluateData为表格的数据 <el-table id="out-table3" :d ...
- Taro下拉刷新,上拉加载更多
1.引入插件 import Taro, { Component } from '@tarojs/taro' import { View, Text, ScrollView } from '@taroj ...
- 在create-react-app使用less与antd按需加载
使用antd按需加载 使用react-app-rewired对 create-react-app 的默认配置进行自定义 yarn add react-app-rewired --dev /* pack ...
- MySQL---增删改查数据库、表、记录
对库的操作 # 增 create database db1 charset utf8; # 删 drop database db1; # 改 alter database db1 charget gb ...
- Ubuntu 安装cmake
Ubuntu 安装 cmake 官网 https://cmake.org 下载地址 https://cmake.org/download/ 参考文档 -<ubuntu下更新cmake版本> ...