首页 > 其他分享 >NOI 2021 补全记录

NOI 2021 补全记录

时间:2023-09-24 10:11:54浏览次数:31  
标签:le 补全 dfrac 即可 2021 bmatrix 操作 重边 NOI

来补题了昂。

D1T1 轻重边

对于原树进行重链剖分,使用一颗线段树维护每一条重边是否时“重边”,然后对于轻边,在父亲出维护最后一次通过 \(1\) 操作清空“重边”的时刻,在查询时只会遇到 \(O(\log n)\) 条轻边,直接查询这个轻边时“重边”的时刻是否晚于父亲清空的时刻即可。

D1T2 路径交点

LGV 引理板子题,记 \(e_{u,v}\) 表示从 \(u\) 走到 \(v\) 的方案数,则最终答案就是:

\[\begin{vmatrix} e_{u_1,v_1}&e_{u_1,v_2}&\dots &e_{u_1,v_n}\\ e_{u_2,v_1}&e_{u_2,v_2}&\dots &e_{u_1,v_n}\\ \vdots&\vdots&\ddots &\vdots\\ e_{u_n,v_1}&e_{u_n,v_2}&\dots &e_{u_1,v_n}\\ \end{vmatrix}\]

的值,直接求解即可。

D1T3 庆典

首先对图进行缩点,得到一张 DAG,我们原题需要维护的东西与连通性有关,所以考虑在不影响连通性的情况下改变这个图的结构。
考虑题设给出的性质:如果 \(x\to z\) 且 \(y\to z\),则有 \(x\to y\) 或 \(y\to x\)。
不妨设为 \(x\to y\),则删去边 \(x\to z\) 不影响图的连通性,由此,我们可以不断调整结构将原图变成一棵外向树。

现在考虑加入 \(k\) 条边后的问题,实际上被影响到的点只有那 \(2k+2\) 的点,对于这些点建立虚树,对正反边各跑一次管搜即可。

D2T1 量子通信

由于数据随机生成,所以可以认为单词是均匀分布的,由于被影响的位数 \(\le 15\),所以将所有的单词 \(16\) 位一段,则至少有一段适合某个单词完全相同的。所以只需要查这些单词即可,考虑单次需要查询的个数:\(\dfrac{n}{2^{16}}\times 16=\dfrac{n}{4096}\) 个,使用 bitset 优化查询,时间复杂度为 \(\dfrac{nm}{16w}\),可以通过。

D2T2 密码箱

通过推式子,发现 E 操作完全等价于维护后者,即

先给数列的最后一项减 \(1\),接着在数列尾再加两项,两项的值都是 \(1\)。

则目前所有的操作均为对最后一项进行修改,发现可以实时维护后缀操作得到的分数 \(\dfrac{A}{B}\) 的 \(A\) 和 \(B\) 分别是多少。
具体的,这两个矩阵为 \(\begin{bmatrix}1&1\\0&1\end{bmatrix}\) 和 \(\begin{bmatrix}2&-1\\1&0\end{bmatrix}\)。

使用支持区间翻转的平衡树维护即可,时间复杂度 \(O(n\log n)\)。

D2T3 机器人游戏

考虑容斥,记 \(cnt(S)\) 为选择 \(S\) 这些位置为起点合法的纸条方案数,则最终答案为 \(\sum\limits_{S}(-1)^{|S|+1}cnt(S)\)。

对于一个机器人的操作,均可以被描述成四种:\(0\),\(1\),\(x\) 和 \(1-x\),分别表示修改成 \(0\),修改成 \(1\),不改变和反转。

我们钦定 \(S\) 中最大的位置为 \(p\),我们对于这个 \(p\) 的位置进行 DP,则 所有机器人的操作长度应 \(\le n-p+1\),同时最多只有前 \(p\) 位可能被操作,所以实际上会影响到当前位的只有 \(\min(n-p+1,p)\le \dfrac{n}{2}\) 位,考虑设计状态 \(f_{i,S}\) 表示处理到了第 \(i\) 位,前若干位选择状态为 \(S\) 的带符号和。

发现如果同时出现 \(0\) 和 \(1\),或者同时出现 \(x\) 和 \(1-x\) 这两对相互矛盾的,则只能选择空到空,有 \(1\) 种方案。
如果 \(0\),\(1\) 与 \(x\),\(1-x\) 各出现一个,如果不为空,则可能的状态就确定了,有 \(2\) 种方案。
其他情况下,每一个输入会对应唯一的输出,有 \(3\) 种方案。

只需要对所有满足操作长度 \(\le n-p+1\) 的统计出分别有多少个满足上述条件的方案即可,使用 bitset 优化,时间复杂度为 \(O(\dfrac{nm2^{\frac{n}{2}}}{w})\)。

标签:le,补全,dfrac,即可,2021,bmatrix,操作,重边,NOI
From: https://www.cnblogs.com/Xun-Xiaoyao/p/17725649.html

相关文章

  • noip Template (to be continued)
    \(noip\Templates\)\(Part1\Graph\)ToposortDijkstraSPFAFloydKruskalPrimTarjanLCA\(Graph\)0.链式前向星存图inth[N],e[N],ne[N],idx;//对于每个点k开一个单链表,存储所有可以走到的点。h[k]存储单链表头结点//添加一条边a->bvoidadd(inta,intb)......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第三周学习笔记
     202113252023-2024-1《信息安全系统设计与实现(上)》第三周学习笔记一、任务要求自学教材第10章,提交学习笔记(10分)大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?,评分标准如下1.知识点......
  • CentOS7 关于Linux Polkit本地权限提升漏洞(CVE-2021-4034)的在线和离线的两种修复方式
    CentOS7关于LinuxPolkit本地权限提升漏洞(CVE-2021-4034)的在线和离线的两种修复方式https://blog.csdn.net/liangtongning/article/details/122805070在线修复yumcleanall&&yummakecacheyumupdatepolkit-y[root@Fort~]#yumcleanall已加载插件:fastestmirror......
  • P7916 [CSP-S 2021] 交通规划 sol-最短路+环形dp
    P7916[CSP-S2021]交通规划solStatement传送门Solution好题。发现\(k\le2\)的分值非常多,于是我们考虑从\(k=2\)入手。颜色相同就不用说了,直接染成同一种颜色就行了。我们考虑其他情况,就是颜色不相同的情况,我们一定是找了一条路径把这个图给切开了就像这个样子。......
  • NOIP 训练赛#13
    时间安排题解T1考虑\(a\)在为奇数的时候一定有一组解满足\(a^2+b^2+(b+1)^2\)移项,得到\(b=\frac{a^2-1}2\),对于偶数的话考虑不断除以\(2\),得到解后再乘回去即可注意特判\(a<3\)和\((\log_2a)^2\inZ\)T2考虑反向加边,并且用并查集维护每个联通块先\(dfs\)一......
  • P8867 [NOIP2022] 建造军营
    这道题想了很久,终于想出来了,非常抽象。经过一番无脑推导,我们发现u里面有没有军营,是否与根连通,u的子树有没有军营,……都对方案数有影响,然后我就一直修修改改,事实证明,当发现越来越多题目条件中被忽略的细节时,一定不要嫌麻烦,要从头开始设置状态。首先我们发现,子树中有没有军营对于......
  • 「解题报告」NOIP 2020
    总分:90+32+5+35=162。[NOIP2020]排水系统题目描述对于一个城市来说,排水系统是极其重要的一个部分。有一天,小C拿到了某座城市排水系统的设计图。排水系统由\(n\)个排水结点(它们从\(1\simn\)编号)和若干个单向排水管道构成。每一个排水结点有若干个管道用于汇集......
  • P7907 [Ynoi2005] rmscne
    题意给定长为\(n\)的序列,\(q\)次询问区间\([l,r]\)的最短区间\([l',r']\),满足所有在\([l,r]\)中出现的数也在\([l',r']\)中出现,你只需要输出\([l',r']\)的长度即可。Sol离线,然后枚举\(r\)。考虑维护一个前缀的弱化版询问。设\([l,p_i]\)为满足当前区......
  • 2021-2022 ICPC Northwestern European Regional Programming Contest (NWERC 2021)
    A.AccessDenied先问若干次,问出长度,然后再一位一位的问即可。#include<bits/stdc++.h>usingnamespacestd;intinput(){strings;getline(cin,s);if(s=="ACCESSGRANTED")exit(0);intt=0;for(autoi:s){if(i&g......
  • [CSP-J 2021] 插入排序
    题目描述插入排序是一种非常常见且简单的排序算法。小Z是一名大一的新生,今天H老师刚刚在上课的时候讲了插入排序算法。假设比较两个元素的时间为\(\mathcalO(1)\),则插入排序可以以\(\mathcalO(n^2)\)的时间复杂度完成长度为\(n\)的数组的排序。不妨假设这\(n\)个数......