AGC035
A
唯一会做的题/kk
题目相当于要求相邻三个的异或和为\(0\)。
当我们放入了三个数\(a,b,c\)时,接下来的放入顺序显然一定是\(a,b,c,a,b,c,...\)。所以当数可以分成三份,每份大小\(\frac{n}{3}\)且其中的数全部相等,从三份中各取一个数的异或和为\(0\)时有解,否则无解。
B
当边数为奇数的时候显然无解
否则选出一棵生成树,其他的边乱选方向,树上自底向上确定边的方向,一条树边应当使得其儿子的出度变为偶数。因为边数是偶数所以根也一定满足条件。
C
当\(n=2^k\)时显然无解
否则考虑增量构造。注意到已经给出了\(n=3\)时的答案,我们从\(4\)开始,每一次两两在树上用下图的方式将点挂在树上:

上面是一个\(n=5\)的情况,挂上的\(4,5,9,10\)点显然是满足条件的。与此同时权值为\(6,7\)、\(8,9\)、\(10,11\)...的点也可以这样做。
对于最后剩下的一个权值也不难在树上找到一条经过\(1\)和其他两个节点的路径的异或和为这个权值。
D
考虑时间倒流,也就是每一次两个位置吐出一个新的位置出来。
记录每一个位置的值自然不可取,我们可以考虑记录每一个位置对答案的贡献。最初两个位置对答案的贡献均是\(1\),接下来每一次吐出的一个位置的贡献则是其旁边两个位置的贡献之和。
接下来考虑DP:设\(f_{l,r,fl,fr}\)表示要确定区间\([l+1,r-1]\)的所有位置的贡献,\(l\)的贡献是\(fl\),\(r\)的贡献是\(fr\)时的最小贡献,转移枚举由\(l,r\)吐出来的位置的编号然后递归进入两边的DP过程。
因为每递归一层\((fl,fr)\)数量至多翻倍,所以总状态数是\(O(2^nn^2)\)的,复杂度\(O(2^nn^3)\)。
E
考虑某个集合是否合法。如果集合中同时存在\(x\)和\(x-2\)则连边\((x,x-2)\);同时存在\(x\)和\(x+K\)则连边\((x,x+K)\),那么有环显然不合法,无环时选择一个拓扑序进行删除显然合法。那么我们需要求的就是无环的集合数量。当\(2 \mid K\)时奇偶独立,对于奇数和偶数都是不能选择连续的\(\frac{K}{2}+1\)个数,这个可以简单地解决。
\(2 \not\mid K\)时则不能存在\(a>b , a \not\equiv b (\ \bmod2)\)满足\(a,a-2,...,b-K,b,b-2,...,a-K\)同时在集合内。两者都是一段连续的区间,那么可以考虑从小到大将数加入到集合中。
设\(f_{i,p,q,fp,fq}\)表示已经填入了\(1 \sim i\),当前填入的奇数段长度为\(p\)、偶数段长度为\(q\),奇数从现在开始一直填到\(fp\)就不合法,偶数从现在开始一直填到\(fq\)就不合法,满足这些条件的集合数量。
不失一般性地考虑\(2 \not\mid i+1\)的转移。首先可以选择不填\(i+1\),因为限制需要一直填到\(fp\)才不合法,此时不填则限制全部消失,即
\[f_{i,p,q,fp,fq} \rightarrow f_{i+1,0,q,N+1,fq}\]
如果填则必须要满足\(fp > i+1\)。此时如果存在一个在偶数段内的数能够通过\(K\)跳到\(i+1\),即\(i+2-2q+K \leq i+1\),则此时这个奇数段必须不能通过\(K\)跳到与当前偶数段相连的偶数位,即\(fq \leq i+1-2p+K\)。有转移:
\[f_{i,p,q,fp,fq} \rightarrow f_{i+1,p+1,q,fp,min(fq,i+1-2p+K)}\]
如果不存在这样的位置,那么就不会有限制,即
\[f_{i,p,q,fp,fq} \rightarrow f_{i+1,p+1,q,fp,fq}\]
注意到\(fp,fq\)只有\(p,q\)中较大的那一个可能不是\(N+1\),否则一定已经存在环,所以\((fp,fq)\)的数量是\(O(N)\)级别的。复杂度\(O(N^4)\),状态常数很小可以map实现。
F
当\(k_i = j-1,l_j=i\)时,可以让\(k_i\)加\(1\),\(l_j\)减\(1\),得到一个等价的状态。我们设无法进行这样操作的状态是标准状态,考虑证明标准状态与网格一一对应。一个标准状态肯定对应一个网格,只需证明一个网格对应一个标准状态。
假设有两个不同标准状态\((l,k)\)、\((l',k')\)对应相同的网格,则\(l\)与\(l'\)、\(k\)与\(k'\)必定不同。找到第一个位置\(x\)满足\(l_x \neq l'_x\),不失一般性假设\(l_x < l'_x\),则:
如果\(x=1\),则显然在两个矩阵中\(A_{l'_x,1}=1\),所以\(k_{l'_x,1}=0\),则第二个状态不是标准状态;
如果\(x \neq 1\),则两个矩阵中\(A_{l'_x , x} = 1\),必定有\(k_{l'_x} \geq x , k'_{l'_x} < x\),而因为\((k',l')\)是标准的,所以\(k'_{l'_x} \neq x-1\),所以两个矩阵中的\(A_{l'_x , x-1}\)必定不同,与假设矛盾。
所以我们只需要算标准状态的数量,考虑以下两种做法:
1、DP:设\(f_{i,j}\)表示考虑了前\(i\)列、有\(j\)行满足\(k_x \leq i\),转移枚举有多少行等于\(i-1\),则有
\[f_{i,j} = \sum\limits_{k \leq j} f_{i-1,k} \binom{j}{k} (N+1-(j-k))\]
不难发现这是一个卷积的形式,可以多项式快速幂优化,但是因为出题人没想到这种做法所以如果exp稍微慢一点就会被卡;
2、容斥:容斥有多少对\((x,y)\)满足\(k_x=y-1,l_y=x\),其余随意指定,则答案为
\[\sum\limits_{i=0}^{min(N,M)} (-1)^i \binom{N}{i} \binom{M}{i} i! (N+1)^{M-i} (M+1)^{N-i}\]
AGC035的更多相关文章
- AGC035 B - Even Degrees【思维·树形结构的妙用】
题目传送门 一句话题意: 首先,每一条边会产生1个入度,1个出度,因此,如果边的数量是奇数的话,图的所有节点的总出度就是奇数,不可能每个节点的出度都是偶数,因此无解. 有解时,我们先找出原图中的一棵生 ...
- AGC035 A - XOR Circle【分析】
题目传送门 题意简述: (就是连环的意思) 唔,这道题考场上写了个什么神仙做法,数据太水了居然过了: // #include<cstdio> #include<algorithm&g ...
随机推荐
- 【案例】电子生产中的排程问题如何解决?APS助力智能化排产
共进电子是典型的消费类电子制造企业,以ODM业务为主,立足双O(OEM/ODM),发展自主品牌.其中,生产模式特点包括: 批量制造.多品种小批量.面向订单生产: 产品结构复杂,设计变更频繁:生产计划复 ...
- Centos系统 tomcat 中的应用与北京时间相差8小时
解决方法: 在 catalina.sh中的 JAVA_OPTS 加上 -Duser.timezone=GMT+08 启动时 startup.sh 会调用 catalina.sh.
- 海思3519 qt ffmpeg 软解码播放avi
在海思3519上基于qt采用ffmpeg对avi进行解码显示,其中ffmpeg的配置,qt的配置在前文中已经说明,在此不再赘述. 解码 解码在单独的线程中进行,具体的代码如下: void VideoP ...
- rhel7学习第五天
管道命令符的功能的确强大!
- 半小时上手laya
laya的性能挺高,跟顶级的pixi.js差一些.比egret的性能强一些 laya的代码是偏功能性的, 观赏性,可读性比很差. 第一步,github上看了下,layaair二百星不到? 想不到堂堂的 ...
- 三块sm865组建RAID0
介绍 使用三块sm865组件raid0,cpu为6700k,主板为华硕的z170-A 这里使用的是主板自带的raid0,不是win10自带的带区卷 CrystalDiskMark AS SSD Ben ...
- c# 关于反射
反射的用途大体总结:1.使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从程序集中查找类型并创建该类型的实例.CreateInstance2.使用Module了解包含模块的程序集 ...
- Pandas | 21 日期功能
日期功能扩展了时间序列,在财务数据分析中起主要作用.在处理日期数据的同时,我们经常会遇到以下情况 - 生成日期序列 将日期序列转换为不同的频率 创建一个日期范围 通过指定周期和频率,使用date.ra ...
- contest14 CF160div2 oooxx oooxx ooooo
DE E : 排序条件不能加等于号, 不然会T
- adb--环境安装
前戏 我们在做Android自动化的时候,adb命令是必不可少的,比如我们要获取一个包名,使用adb往手机上安装软件,获取activity等等,都要用到adb命令.而模拟器在我们没有手机测试的时候,可 ...