来补题了昂。

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})\)。

NOI 2021 补全记录的更多相关文章

  1. CozyRSS开发记录6-继续补全订阅内容栏

    CozyRSS开发记录6-继续补全订阅内容栏 1.订阅内容栏布局 按照之前的原型图,把订阅内容栏分成三块.Xaml如下: 2.照葫芦画瓢,完成头部和列表 头部依然使用ColorZone,右侧再放两个按 ...

  2. Ubuntu16.04VIM无法补全错误记录

    先记录一下YouCompleteMe的安装过程. 按照教程进行安装 1. 安装 vundle # vundle是vim的包管理器,十分好用 cv@cv: ~$ git clone https://gi ...

  3. 记录一次bug解决过程:else未补全导致数据泄露和代码优化

    一.总结 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕 未补全else逻辑,倒置查询数据泄露 空指针是最容易犯的错误,数据的空指针,可以普遍采用三目运算符来解决 SVN冲突解决关 ...

  4. 删除Chrome地址栏记录中自动补全的网址

    为了删除某个自动补全的网站,多年的历史纪录没了,还浪费我十多分钟,蠢哭_(:з」∠)_ 不是历史记录.不是清除浏览器数据.不是myactivity(谷歌账号)中的历史纪录,直接在书签中搜索,删除,OK ...

  5. centos7安装docker记录+命令补全

    原本用centos6.6部署项目环境,突然想装docker ,使用uname -r 发现内核版本太低,更新内核完后重启起不来了~~~~~,还是用回7吧 21 yum -y install gcc 22 ...

  6. LeetCode随缘刷题之最短补全词

    package leetcode.day_12_10; import org.junit.Test; /** * 给你一个字符串 licensePlate 和一个字符串数组 words ,请你找出并返 ...

  7. Oracle补全日志(Supplemental logging)

    Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...

  8. Mac下git命令自动补全

    当我第一次在mac上安装git,[tab]补全装成功了,但是我没有记录,当我过一段时间在重装的时候,我已经忘记了,又是各种查资料,再次做一下简单的记录. 首先,我因为还是mac小白,所以使用Homeb ...

  9. 记一个同时支持模糊匹配和静态推导的Atom语法补全插件的开发过程: 序

    简介 过去的一周,都睡的很晚,终于做出了Atom上的APICloud语法提示与补全插件:apicloud_autocomplete.个中滋味,感觉还是有必要记录下来的.代码基于 GPL-3.0 开源, ...

  10. gocode+auto-complete搭建emacs的go语言自动补全功能

    上篇随笔记录了在emacs中使用go-mode和goflymake搭建了go语言的简单编程环境(推送门),今天来记录一下使用gocode+auto-complete配置emacs中go语言的自动补全功 ...

随机推荐

  1. @Import 源码解析

    转发请注明出处: @Import通过快速导入的方式实现把实例加入spring的IOC容器中:一般@EnableXXX注解是通过@Import实现具体的功能(@EnableXXX注解上加个@Import ...

  2. docker 安装 nacos

    转载请注明出处: https://www.jianshu.com/p/54f6da71ac48

  3. ClickHouse中“大列”造成的JOIN的内存超限问题

    ClickHouse中"大列"造成的JOIN的内存超限问题 "大列"是指单行数据量非常大的列,通常是100KiB以上.这样的列会导致JOIN(通常LEFT JO ...

  4. 为R Markdown配置TinyTex编译环境

    技术背景 在前面一篇博客中,我们介绍了一些关于在Windows系统上安装R Studio来编写R Markdown,最后编译成Beamer的演示文档的过程.而在Windows系统的使用过程中发现,编译 ...

  5. TCP连接状态的多种判断方法

    ​ 前言 在TCP网络编程模型中,无论是客户端还是服务端,在网络编程的过程中都需要判断连接的对方网络状态是否正常.在linux系统中,有很多种方式可以判断连接的对方网络是否已经断开. 通过错误码和信号 ...

  6. springboot入参下划线转驼峰出参驼峰转下划线

    springboot入参出参下划线转驼峰 前言 因为历史原因前端入参和出参都为下划线,下划线对有亿点强迫症的我来说是不可接受的.因此就有了下面这篇. 本篇基于之前的一篇springboot封装统一返回 ...

  7. [转帖]CIDR

    什么是 CIDR? 无类别域间路由 (CIDR) 是一种 IP 地址分配方法,可提高互联网上的数据路由效率.每台连接到互联网的计算机.服务器和最终用户设备都有一个与之关联的唯一编号,称为 IP 地址. ...

  8. Linux下面sysstat的安装与简介

    https://blog.51cto.com/smoke520/2160073   在Linux系统下获取sysstat-10.0.5.tar.gz的两种方式: 方式一: 下载sysstat-10.0 ...

  9. SUBMIT指定用户名错误

    1.SUBMIT说明 在ABAP中,SUBMIT关键字用于运行另一个ABAP程序.通过SUBMIT关键字,可以在当前程序内部调用其他程序,而无需关闭当前程序. SUBMIT语句的一般语法如下: &qu ...

  10. 【JS 逆向百例】有道翻译接口参数逆向

    逆向目标 目标:有道翻译接口参数 主页:https://fanyi.youdao.com/ 接口:https://fanyi.youdao.com/translate_o?smartresult=di ...