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 ...
随机推荐
- QT POST/GET HTTP操作
工程文件 Qt += network 举例 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui-> ...
- android自定义圆角实线边框,圆角虚线边框,直实线,虚实线,半圆角边框
先上图 在现实项目开发中,单纯的Button,EditText等控件远远不能满足我们项目的UI设计需求,这时候,我们就需要自己动手丰衣足食啦.接下来先给大家介绍一些属性,备注写的都非常清楚啦,我就不啰 ...
- Java进程间通信学习
转自:https://www.iteye.com/blog/polim-1278435 进程间通信的主要方法有:(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共 ...
- FPM十:FORM Repeater
1.创建feeder class:ZCL_FPM_FORM_REP_DEMO 添加接口类: 2.新建全局内表: DATA:GT_QPGT TYPE TABLE OF QPGT. 3.实列化get_da ...
- 用jTessBoxEditorFX训练字库
软件下载:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/ 官方字库下载:https://github.com/tesser ...
- Excel 使用VBA或宏----简单笔记
一.一种纯粹的录制宏.(未使用此方法,如有兴趣可自学),就是Excel提供了“所见即所得”的方式生成宏.把自己想要的操作记录,录制成宏. 自学网等各种网站有教学视频或文章 二.常用VBA语法及函数笔记 ...
- CentOS7.5下实现MySQL5.7主从同步
这里使用两台Linux主机(一台充当MySQL主服务器,另一台充当MySQL从服务器),MySQL用yum安装,版本均为5.7,下表是它们所使用的操作系统以及IP地址. 两台Linux主机所使用的操作 ...
- wordpress添加post_type自定义文章类型
wordpress很强大,能当博客也能进行二次开发出很完善的内容管理系统满足企业运营需求,比如可以添加products产品模型.汽车模型等,如何实现呢?添加post_type自定义文章类型就可以了 p ...
- DataOps Reading Notes
质量.效率.成本.安全,是运维工作核心四要素. AIOps 技术会涉及到数据收集方面的基础监控,服务监控和业务监控,甚至会涉及到与持续交付流水线的数据和状态整合(比如在软件发布的阶段会自动关闭某些监控 ...
- Docker Hello-World镜像运行测试
一.命令:docker run hello-world 命令解释:以docker客户端命令的方式运行hello-world镜像 命令运行结果: hadoop@Docker:/opt/docker$ d ...