$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题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. BZOJ4241 历史研究 【回滚莫队】

    题目描述:给出一个长度为\(n\)的数组,每次询问区间 \([l,r]\),求 \(\max\limits_{x}x*cnt_x\),其中 \(cnt_x\) 表示 \(x\) 在区间 \([l,r] ...

  2. P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)

    P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ...

  3. java 优秀开源项目

    一.https://github.com/zhangdaiscott/jeecg-boot 简介:一款基于代码生成器的JAVA快速开发平台!全新架构前后端分离:SpringBoot 2.x,Ant D ...

  4. 【大数据作业九】安装关系型数据库MySQL 安装大数据处理框架Hadoop

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 4.简述Hadoop平台的起源.发展历史与应用现状. 列举发展过程中 ...

  5. Mac php 装imagick扩展 菜鸟教程

    1.2.直接brew install imagemagick@6完成安装 2.去http://pecl.php.net/package/imagick下载安装包 2.1.下载完后解压tar -xzvf ...

  6. 2019_软工实践_Beta(1/5)

    队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述  检测网站不合理的地方,给组员定下相应时间进度的安排 展示GitHub当 ...

  7. Git初始配置【一】

    Git客户端的工作 安装完成后,还需要最后一步设置,在命令行输入 $ git config --global user.name "Your Name" $ git config ...

  8. 爬虫urllib2中Handler处理器和自定义Opener

    Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,urlopen是一个特殊的opener(也就是模块已经构建好的). 但是基本的url ...

  9. Python3基础 函数 函数名作为参数传给函数

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  10. 不使用BASE64Encoder、BASE64Decoder

    BASE64Encoder/BASE64Decoder类在sun.misc包下,是sun公司的内部方法,后期有删除的潜在可能,建议使用apache commons.codec下的Base64替代. m ...