Involuting Bunny! (2021.9)
文化课就很掉头发,文科都能学好我还怕竞赛?(
大概从“刷的题的题解”推广为“所有做的题的题解”吧,兔子比较懒,这样写题解轻松一些。
Tags:「A.扫描线」「B.离线」
发现网格图本身很小,扫描线求出每个点最先被谁覆盖,最后被谁覆盖,然后离线算答案即可。我写的这个屑非常卡常。
Tag:「B.贪心」
水题,随便贪心即可。注意用 std::nth_element 将复杂度实现为 \(\mathcal O(n)\)。(其实我 std::sort 就过了。
Tag「A.数学-组合计数」
显然 \(k\) 次冒泡能使序列升序的充要条件是每个位置初始向前的逆序对数不超过 \(k\),方案数即 \(k!(k+1)^{n-k}\);而 LIS 为 \(n-1\) 的序列等价于在忽略一个数之后有序,那么忽略的数 \(x\) 可以分为两种情况:
\(x\) 向前的逆序对数大于 \(k+1\);
有若干个小于 \(x\) 的数在 \(x\) 后,且它们向前的逆序对数恰为 \(k+1\)。
分别统计贡献,可得 \(\mathcal O(Tn)\) 的算法;可以分块进一步优化复杂度。
Tags:「A.DP-状压/插头 DP」「B.差分」「B.模型转化」
差分,那么一次以 \(x\) 为左端点,长度为 \(l\) 的修改相当于翻转 \(x\) 和 \(x+l\),建图,BFS 求出同时翻转一对最终为 \(1\) 的状态的最少操作数,状压 DP 求答案。
Tags:「A.分治-二分答案」「B.贪心」
二分在操作序列开头添加多少个 E 0,判断合法时,我们仅需讨论 E 0 和 L 0 的实际含义,对于 E 0:
若存在不在基地且下一个操作为离开的人,令满足要求且离开操作编号最小的人进入;
否则,令一个新人进入。
对于 L 0:
若存在在基地且下一个操作为进入的人,令满足要求且进入操作编号最小的人离开;
否则若存在在基地中且没有后续操作的人,令他离开;
否则若存在在基地中且下一个操作为离开的人,令满足要求且离开操作编号最大的人离开;
否则,忽略操作(假定基地初始有个人,让他离开)。
【A - 茅山道术】
同色段忽略为单个颜色,那么仅用考虑 \(i\) 位置的颜色是否和前一个同色位置进行操作,得到转移。
【B - 泰拳警告】
枚举打平的场数,组合数、二项式定理算贡献。
【C - 万猪拱塔】
Tags:「A.数据结构-线段树」「B.Tricks」
不要沉迷于喵树分治,会变得喵喵喵。(
第一步转化,维护值域,求 \([l,r]\) 内的数是否恰为一个矩形。令值在该区间内的格子为黑色,其余为白色,接下来是一个结论,或说神奇的 trick:
黑色格子构成矩形,等价于恰有 \(4\) 个 \(2\times2\) 的方格包含了奇数个黑格子。
那么,扫描 \(r\),维护 \(v_l\) 表示 \([l,r]\) 为黑色时包含奇数个黑格子的方格数量,由于这一数量的下界是 \(4\),所以仅需维护最小值,顺带维护最小值个数、取最小值的下标和来计算答案。每加入一个点,重新计算这个点周围四个方格即可。极度卡常,建议使用 ZKW 线段树(可惜我不会。
顺带一提,这题放序列上可以直接单调栈 + 线段树;而序列上亦能用这种维护“两个格子不同色”的数量来算答案,且这种算法貌似能扩展到更高维空间?
【D - 抑郁刀法】
Tags:「A.搜索-穷举搜索」「B.优化建图」「C."NPC"」
按度数缩图——度数为 \(1\) 的点,方案贡献恒为 \(k-1\);度数为 \(2\) 的点,例如 \(u\),它有邻接边 \((u,v)\) 和 \((u,w)\),那么 \((v,w)\) 边在 \(v,w\) 颜色相同和不同时有两种贡献,不过这也能够通过 \((u,v)\) 和 \((u,w)\) 的贡献数算出来。最后得到任意点的度数 \(\ge 3\) 的图,最多剩下 \(10\) 个点 \(15\) 条边,暴搜这些点的最小表示法,算上邻接边的贡献即可。
【Summary】
C 的喵树分治明明伪得不行却浪费大量时间写;
留给 D 的时间非常不充裕。
虽然没挂,但为了 rush 暴力几乎没有检查。
算法,特别是自认为是正解但是很难写的算法,必须想清楚,像这次堆出 8K 的屎山真的极度浪费时间。
后两题不要先入为主断定难易度,起码的思考以及完赛检查时间预留充分。
Tag:「C.构造」
题意相当于构造 \(\{1,2,\dots,2n\}\) 的完美匹配,使得每对数的差恰构成集合 \(\{1,2,\dots,n\}\)。利用一段区间左右不停向内连进行大多数操作,剩下的细节手玩叭√
Tags:「A.Kruskal 重构树」「A.数据结构-可持久化线段树」「B.DFN」
Tags 已经说明了一切.jpg。
Tags:「A.数据结构-可持久化线段树」「B.差分」
把修改和查询都差分为四个顶点的二维前缀修改,考虑修改点对询问点的贡献,主席树维护 \(x\) 轴前缀上,\(y\) 轴区间的四种贡献信息即可。我的代码貌似讨论得有些复杂,可以看看 mmm 的。(
Tag:「A.数据结构-可持久化线段树」
前 \(k\) 大老套 trick,主席树维护每个左端点的方案集合即可,不赘述。
Tag:「A.数据结构-可持久化线段树」
有点把前一道搬到树上的感觉 awa。用主席树维护关于深度的答案;std::map 启发式合并维护子树内最浅颜色保证不重复贡献。
UOJ77 & Submission.
Tags:「A.数据结构-可持久化线段树」「A.网络流-最大流/最小割」「B.优化建图」
长得一副最小割的样子那就直接来嘛——连 \(\lang S,i,b_i\rang\) 以及 \(\lang i,T,w_i\rang\) 表示颜色选择,对于 \(i\),连向一个用于支付“奇怪”代价的点 \(p\),容量 \(p_i\),主席树优化 \(p\) 连向其他点的过程,最后跑一个最小割就好。
Tag:「A.数据结构-可持久化 Trie」
次大值的性质并不优美——直接枚举它,通过单调栈二分求出使得它成为次大值的两个区间,再用可持久化 Trie 维护区间异或 \(x\) 的最大值计算答案。
Tag:「A.数据结构-可持久化 Trie」
直接上可持久化 Trie 就行,由于 01-Trie 可以视为值域线段树,所以它也能处理第 \(k\) 大等操作。
CF916D & Submission.
Tags:「A.数据结构-可持久化 Trie」「A.数据结构-可持久化线段树」
难点大概是题意理解叭。它其实是会 undo 掉 undo 操作的,如果直接从可持久化版本的角度理解反而清晰一些。
我们需要支持持久化维护字符串与权值的对应,以及权值自身的信息。同步处理一棵可持久化 Trie 和可持久化权值线段树即可。
Tags:「A.分块」「A.数据结构-可持久化 Trie」
分块还是得练呐。第一步显然求前缀异或和将问题转化为区间两数异或最大值。预处理一棵可持久化 Trie 维护区间异或 \(x\) 的最大值,然后分块。对于第 \(i\) 块,设其为 \(l_i\),预处理出 \(f(i,r)~(r\in[l_i,n])\) 表示区间 \([l_i,r]\) 的答案。单次询问时,暴力处理左端点 \(l\) 所在块的贡献,查 \(f\) 的表知后半段的贡献。设块长为 \(b\),复杂度为 \(\mathcal O(\frac{n^2}{b}\log A+mb\log A)\),显然 \(b=\sqrt{\frac{n^2}{m}}\) 时取下界 \(\mathcal O(n\sqrt{m}\log A)\)。
注意 \(\textit{lastans}+x\) 可能爆 int 哟
(其实这中途咕咕咕了很多题 qwq。)
Tag:「A.DP-状压/插头 DP」
令 \(f(S)\) 表示 \(\forall x,y\in S,x\not=y,~x\rightarrow y\) 的概率,\(g(S,T)=\prod_{x\in S}\prod_{y\in T}\frac{a_x}{a_x+a_y}\)。那么答案即为
\]
先 \(\mathcal O(3^n)\) 求出 \(g\),再同样 \(\mathcal O(3^n)\) 求出 \(f\) 即可。
Tag:「C.性质/结论」
经典结论:合法涂色方案中,必然所有行或者所有列都是黑白交替。
分别维护行能否黑白交替,列能否黑白交替,行列能否同时黑白交替,以及有多少不被限制的行和列,就能计算答案。
Tag:「C.性质/结论」
结论什么的很好推嘛,比较琐碎就不提了。注意实现的时候可以从每个字符的角度进行检查,记录字符前驱后继来遍历,写着会舒服亿点。(不是你这题解越来越抽象了啊。
Tag:「C.性质/结论」
令 \(f(i)\) 表示以 \(i\) 结尾的最大得分。\(|c_i-c_j|\) 有严格顺序关系,按此顺序枚举 \((i,j)\) 进行转移。
Involuting Bunny! (2021.9)的更多相关文章
- Involuting Bunny! (2021.8)
CF1555F & Submission. Tags:「A.生成树」「B.Tricks」 分类处理询问的 trick:连接两个连通块的边显然合法,先用这些边构建生成森林.发现每条边 ...
- codevs 2021 中庸之道
2021 中庸之道 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 给定一个长度为N的序列,有Q次询问,每次 ...
- Python 小游戏 Bunny
最近在学习Python,所以上网找了一个小程序练练手. 关于这款名为[Bunny]的小游戏,详细请看下面的链接: http://www.oschina.net/translate/beginning- ...
- Bzoj 1982: [Spoj 2021]Moving Pebbles 博弈论
1982: [Spoj 2021]Moving Pebbles Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 130 Solved: 88[Submi ...
- poj 2021 Relative Relatives(暴力)
题目链接:http://poj.org/problem?id=2021 思路分析:由于数据较小,采用O(N^2)的暴力算法,算出所有后代的年龄,再排序输出. 代码分析: #include <io ...
- 使用Bash Bunny从被锁定的系统抓取登陆凭据
在今年早些时候,FB就对Bash Bunny做了相关的报导.这款号称“世界上最先进的USB攻击工具”的Bash Bunny,是否真的像其所说的一样是款渗透神器呢?下面,我将通过实例演示如何利用Bash ...
- iPhone屏蔽IOS更新、iPhone系统更新的提示(免越狱,有效期更新至2021年)
iPhone屏蔽IOS更新.iPhone系统更新的提示(免越狱,有效期更新至2021年) 1.在Safari浏览器中粘贴如下链接,按提示打开链接. 输入http://apt.dataage.pub 2 ...
- HDU 2021 发工资咯:)
http://acm.hdu.edu.cn/showproblem.php?pid=2021 Problem Description 作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的 ...
- Math.abs(~2020) 按位取反后的绝对值是多少 2021, 按位取反后,比正数多1
Math.abs(~2020) 按位取反后的绝对值是多少 2021, 按位取反后,比正数多1 int 值的取值 范围: -128 --- 127 之间, 0000 0000 按位取 ...
随机推荐
- Echart可视化学习(五)
文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 常见的数据可视化库: D3.js ...
- 利用Javaweb应用中六种属性范围,来理解Servlet的并发问题
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513748225550189060/ Web应用中有六种属性范围: (1) 局部变量 (2) 实例变量 (3) 类 ...
- iview获取全选和半选数据(方法一:基于树型数据)
在用iview的时候发现iview的树中获取半选和全选的函数getCheckedAndIndeterminateNodes在我使用的iview版本里面是没有提供的, 于是自己写了一下获取全选和半选节点 ...
- 多线程的libcurl的使用
摘要:libcurl在多线程中,采用https访问,经常运行一段时间,会出现crash. libcurl的在多线程中的使用特别注意的有两点: 1. curl的句柄不能多线程共享. 2. ssl访问时, ...
- actf2020 exec
actf2020 exec 1.根据提示,ping一个127.0.0.1,有回显,ls一下发现index.php 3.方向找错了,绕了一大圈,还cat了index.php也没发现什么 最后没招了,回原 ...
- ArrayList实现类
特点 数组结构实现,查询快,增删慢 运行效率高,线程不安全 可重复 常用方法 Modifier and Type Method and Description boolean add(E e) 将指定 ...
- golang中的反射解析结构体标签tag
package main import ( "fmt" "reflect" ) type resume struct { // 反射解析结构体标签tag Nam ...
- linux虚拟机xshell安装
目录 一:虚拟机安装 二:配置windows网络 三:linux操作系统安装 四:xshell安装使用 一:虚拟机安装 1.双击虚拟机软件 ---> 下一步 直至安装完毕 2.安装Linux操作 ...
- 优化.NET 应用程序 CPU 和内存的11 个实践
https://michaelscodingspot.com/cpu-bound-memory-bound/ 优化.NET 应用程序 CPU 和内存的11 个实践 凡事都有其限度,对吧?汽车只能开这么 ...
- Javascript之递归求裴波那契数
一.遍历的方式性能更加,递归的方式代码利于阅读.简短,性能略差 二.裴波那契数定义: · 位置0的裴波那契数为0 · 1和2的裴波那契数为1 · n(n > 2)裴波那契数为 (n-1)的裴波那 ...