PKUSC2019题解
$D1T1$:$n$个村庄,第$i$个村庄的人要去第$p_i$个村庄(保证$p_i$为排列),每次可以将相邻两个村庄的人位置交换直到所有人都到达目的地。再给定一个长为$n-1$的排列$a$,表示第$i$次在第$i$个和第$i+1$个村庄中间增设一个关卡,当一次交换发生时,若交换中间存在一个卡,或交换双方中至少有一方经过过一个卡,则需要支付$1$的路费。对每个$i$输出只考虑$a_{1}\sim a_i$的卡时需要支付的最少路费。$n\leqslant 3\times 10^5$。
结论:总代价=跨过某个卡的逆序对数。
证明:任意一对跨过某个卡的逆序对想要发生位置调换,必定会支付至少$1$的代价,故总代价<=跨过某个卡的逆序对数。将每两个卡之间的部分从小到大排序,那么可以构造出方案使得两个在不同块的逆序对才会发生交换且交换代价不会超过$1$,故总代价>=跨过某个卡的逆序对数。
于是问题变为每次增加一个卡并计算这个卡左右两边形成的逆序对数(即这个卡的贡献),可以倒着做然后线段树合并,也可以直接建主席树然后正着启发式合并。$O(n\log n)$或$O(n\log^2 n)$。
$D1T2$:$2n$个人在$n$张桌上打乒乓球,下一轮中,第$i(1<i<n)$张桌上的双方将分别为这一轮的第$i-1$张桌的胜者和第$i+1$张桌的负者。第$1$张桌上分别是第$1,2$张桌的负者,第$n$张桌上分别是第$n-1,n$张桌的胜者。当两人较量时,编号大的一方有$2/3$概率赢,$1/3$概率输,问第$m+1$轮$i$在第$j$张桌上打球的概率。$n\leqslant 9,m\leqslant 20$。
一个自然的想法是,$f_{i,j}$表示$i$在$j$打球的概率,但最主要的问题是概率不独立。于是需要将状态拆得相互独立,设$f_{i,j,S}$表示$i$在$j$打球,其余位置的人状态为$S$的方案数。$S$是个$n$位三进制数,$0/1/2$分别代表某张桌上两个人都比$i$弱/都比$i$强/一强一弱,转移显然,$O(3^n2^nn^2m)$。
注意到其实只需要关心当一张桌上两个人一强一弱时的结果,所以可以优化到$O(4^nnm)$。标算使用轮廓线做到了$O(3^nn^2m)$。
$D1T3$:给定数组$\{a_n\}$以及$m$个询问$(x_i,y_i)$,每次询问是否存在一个$k$使得$a_{x_i}$异或$k$在所有数异或$k$中排第$y_i$。$n\leqslant 5\times 10^4,m\leqslant 10^6,a_i\leqslant 2^{60}$。
将所有数二进制拆分后建出$Trie$,发现$k$的某一位为$1$就相当于将这一层的左右子树交换,于是这整体上就相当于一个背包,用$bitset$优化即可做到$O(\frac{n^2}{\omega})$。
$D2T1$:$n$个点的树染$m$种颜色,相邻点不能同色。$K$个限制形如第$x_i$个点不能染$y_i$色,求合法方案数。
$f_{i,j}$表示点$i$染$j$色时子树方案数,观察转移方程可以发现合并子树就相当于两个数组作点积,安个父亲就相当于整体*-1后加上某个值。这都可以用双标记(乘法和加法)线段树合并或$Splay$启发式合并来完成。没有被询问涉及到的颜色贡献必然相等于是只要开一个点就可以了。$O(n\log n)$或$O(n\log^2 n)$。
$D2T2$:给定一棵$n$个点的无边权树,在$m$为空间中找一棵同样的树,满足任意两点的曼哈顿距离等于它们在原树上的距离,最小化$m$并输出方案。$n\leqslant 100$。
将根设为$(0,...,0)$,$A_i$表示$i$与父亲的差向量,显然$|\Sigma A_{i,j}|=1$。
结论:$A_i$一定是形如$(0,...,1,...,0)$或$(0,...,-1,...,0)$的形式。若两个点是祖孙关系那么若存在$i$使得$A_{u,i}$和$A_{v,i}$均非$0$,则它们必定同号。若两点不是祖孙关系,则它们必定不同号。
问题变为用$m$条链覆盖这棵树,链的$LCA$一侧都是$1$另一侧都是$-1$,当一个点被多条链覆盖时任选一个,做一个带线头的$DP$即可。$O(n^2)$。
$D2T3$:一棵$n$个点的树任意加新边(不能有重边和自环),使这张图的线图是弦图,求合法方案数。$n\leqslant 2\times 10^5$。
线图:为每条边建一个点,若两条边有公共点则两个点之间连一条边。
弦图:不存在一个$4$元或以上的简单环使得环中任意两个点不再有边。
观察发现一个图的线图是弦图,当且仅当它不存在一个$4$元或以上的简单环。问题变为将树上的点分集合,要么一条边独立成集合,要么两条相邻的边成一个集合,求方案数。$f_{i,0/1}$表示$i$的子树分配集合,且$i$到父亲的边是否已经被分进集合的方案数。转移时要考虑有多少个点第二维取$0$。
考虑加速,先预处理出$g_{i,0/1}$表示$i$个点自由分集合,父亲边是否被分入集合的方案数。然后考虑统计出有$i$个点$f$第二维取$0$的方案数,发现就是$\prod (f_{son,0}\ x+f_{son,1})$,分治$FFT$即可。$O(n\log^2 n)$。
PKUSC2019题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- Python 企业面试题集锦之Python基础
△字符串.列表.元组.字典每个常用的5个方法? 字符串: 字符串用单引号(')或双引号(")括起来,不可变. s.strip(c):去除空格或指定的字符c:lstrip/rstrip: s. ...
- Handsontable vue如何实现在线编辑excal
官网地址:https://handsontable.com/ 1.实现效果 2.安装 import { HotTable } from '@handsontable/vue' import Hands ...
- kubernetes监控终极方案-kube-promethues
kube-promethues简介 前面我们学习了Heapster+cAdvisor方式监控,这是Prometheus Operator出现之前的k8s监控方案.后来出现了Prometheus Ope ...
- /usr/bin/xauth: file /home/user/.Xauthority does not exist
错误信息如下: /usr/bin/xauth: file /home/user/.Xauthority does not exist 错误原因:是因为添加用户时没有授权对应的目录,仅仅执行了usera ...
- vue+elementui搭建后台管理界面(7 vuex和mockjs的使用)
将权限管理应用到系统,首先做好登录, 点击登录按钮后,触发以下动作 vuex 中的 login 动作,设置 cookie vuex 中的 getuserinfo , 获取权限.用户名.头像等 由于目前 ...
- Calcite分析 - Rule
Calcite源码分析,参考: http://matt33.com/2019/03/07/apache-calcite-process-flow/ https://matt33.com/2019/03 ...
- nodejs 开发时,学用的热更新工具 nodemon
开发用最多的是重启再刷新页面,那热更新少不了, 工具有很多常用唯 nodemon 了, 安装: npm install -g nodemon // 建议全局安装,开发时用的工具 使用: nodemon ...
- k8s记录-ubuntu安装docker
sudo apt-get purge docker-ce sudo rm -rf /var/lib/dockerdocker-ce:https://download.docker.com/linux/ ...
- codeMirror配置
介绍 CodeMirror是一款在线的支持语法高亮的代码编辑器.官网:http://codemirror.net/ 下载后,解压开到的文件夹中,lib下是放的是核心库和核心css,模式下放的是各种支持 ...
- 通过Onvif设备探索获取EasyNVR网页无插件播放所需要的摄像机硬盘录像机NVR的RTSP地址
想实现网络监控摄像头进行视频直播的朋友门应该知道,方法其实非常简单,你不需要使用支持直播的网络摄像机,只需要经过一套流媒体服务器将监控摄像头的RTSP视频流转为RTMP\HLS\HTTP-FLV视频流 ...