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 & ...
随机推荐
- BZOJ4241 历史研究 【回滚莫队】
题目描述:给出一个长度为\(n\)的数组,每次询问区间 \([l,r]\),求 \(\max\limits_{x}x*cnt_x\),其中 \(cnt_x\) 表示 \(x\) 在区间 \([l,r] ...
- Hdu 5093 Battle Ship
每个海面要么放要么不放,因此可以用二分图匹配, 考虑把同一行内的能互相看到的点放到一个行块里,同一列内能看到的点放到一个列块里,然后每一个行块都可以和该行块里所有海面的列块连边,选了这个行块,就必须选 ...
- mysql in和not in
mysql> select * from table1; +----------+------------+-----+---------------------+-------+ | name ...
- 【解决方案】Chrome崩溃问题解决
问题描述 出现异常之前做的操作就是,因为换工位的需要,所以关闭电脑,修改网络配置. 问题分析 Firefox和其他应用网络正常 Chrome设置.帮助等选项均打不开 分析,很可能是电脑重启后,Wind ...
- 多线程 fork/join 并行计算
1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过 ...
- 第05组Alpha冲刺(1/4)
队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪些任务:SVN管理工具搭建 展示G ...
- 针对nginx,来具体聊聊正向代理与反向代理 (转载)
https://www.sohu.com/a/235704408_468627 先来说说什么是代理服务器? 所谓代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客 ...
- PG11开启WAL归档
-创建归档目录 mkdir -p $PGDATA/archive_wals chown -R postgres.postgres $PGDATA/archive_wals -修改参数(在配置文件中配置 ...
- Mysql中的Date转换
一.背景 Mysql中有张表,表的一列为Date类型. 1. 插入日期xxx.setCreateTime(new Date())mybatis.insert(xxx) 2. 读取日期用Mybaitis ...
- BackgroundWorkerHelper
public static class BackgroundWorkerHelper { public static void Run(DoWorkEventHandler doWork, RunWo ...