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 按位取 ...
随机推荐
- 在CentOS7上安装 jq
安装EPEL源: yum install epel-release 安装完EPEL源后,可以查看下jq包是否存在: yum list jq 安装jq: yum -y install jq 命令参考资料 ...
- map类型转string必须用.toString
- NIO【同步非阻塞io模型】关于 NIO socket 的详细总结【Java客户端+Java服务端 + 业务层】【可以客户端间发消息】
1.前言 以前使用 websocket来实现双向通信,如今深入了解了 NIO 同步非阻塞io模型 , 优势是 处理效率很高,吞吐量巨大,能很快处理大文件,不仅可以 做 文件io操作, 还可以做sock ...
- 使用 try-catch
ECMA-262 第 3 版引入了 try-catch 语旬,当 try-catch 语句中发生错误时, 浏览器会认为错误已经被处理了 ,因而不会报告错误.对于那些不要求用户懂技术,也不需要用户理解错 ...
- sqoop的使用之import导入到HDFS
原文链接: https://www.toutiao.com/i6772128429614563843/ 首先我们已经安装好sqoop了,如果没有安装好参考文档<快速搭建CDH-Hadoop-Hi ...
- [转]Vue之引用第三方JS插件
1.绝对路径引入,全局使用. 在index.html文件中使用script标签引入插件. 该种方式就是上面演示ckplayer插件使用的方式. 备注: 这种方式的引用,会在开启ESLint时,报错,可 ...
- SYCOJ570传纸条
题目-传纸条 (shiyancang.cn) 算法(线性DP) O(n3)O(n3)首先考虑路径有交集该如何处理.可以发现交集中的格子一定在每条路径的相同步数处.因此可以让两个人同时从起点出发,每次同 ...
- 记一次 WinDbg 分析 .NET 某工厂MES系统 内存泄漏分析
一:背景 1. 讲故事 上个月有位朋友加微信求助,说他的程序跑着跑着就内存爆掉了,寻求如何解决,截图如下: 从聊天内容看,这位朋友压力还是蛮大的,话说这貌似是我分析的第三个 MES 系统了,看样子 . ...
- Sharding Sphere的分库分表
什么是 ShardingSphere? 1.一套开源的分布式数据库中间件解决方案 2.有三个产品:Sharding-JDBC 和 Sharding-Proxy 3.定位为关系型数据库中间件,合理在分布 ...
- 拉普拉斯平滑(Laplacian smoothing)
概念 零概率问题:在计算事件的概率时,如果某个事件在观察样本库(训练集)中没有出现过,会导致该事件的概率结果是 $0$ .这是不合理的,不能因为一个事件没有观察到,就被认为该事件一定不可能发生(即该 ...