
妙妙题
文章平均质量分 54
仰望星空的蚂蚁
梁东饪猛虎,汴水烹蛟龙
展开
-
【学习笔记】「JOISC 2022 Day3」洒水器
怎么发现这个不重不漏的标记方法的?原创 2023-05-03 19:54:05 · 904 阅读 · 0 评论 -
【学习笔记】「JOISC 2022 Day2」复制粘贴 3
一道很妙的字符串题目。原创 2023-05-03 19:43:20 · 816 阅读 · 0 评论 -
【学习笔记】AGC043C Giant Graph
挺神奇的一道题。原创 2023-01-05 22:45:45 · 255 阅读 · 0 评论 -
【学习笔记】AGC054C Roughly Sorted
题解是我写的,但是题目不是我搬的。原创 2023-01-05 17:44:38 · 737 阅读 · 3 评论 -
【学习笔记】AGC043D Merge Triplets
人类无法改变天意。原创 2023-01-05 16:34:11 · 247 阅读 · 0 评论 -
【题解】「SCOI2011」棘手的操作
挺妙的一道题。我们用线段树来解决这个问题。考虑集合内加 v 这个操作。如果我们把它转化为区间操作就好了。那么我们要求编号连续。怎么给每个点编号呢?首先把操作序列离线下来,然后用带权并查集维护在集合内的 相对编号 ,合并的时候把被合并的集合的 相对编号 都加上合并集合的大小即可。时间复杂度 O(nlogn)O(nlogn)O(nlogn) 。#include<bits/stdc++.h>#define lc(x) t[x].ch[0]#define rc(x) t[x].ch[1原创 2022-03-31 20:34:04 · 425 阅读 · 0 评论 -
【题解】[NOI Online 2022 提高组] 讨论
这题是贪心。我们按 k 从小到大排序,那么长度大的和长度小的如果有公共元素的话,长度小的一定是长度大的子集。这样的话,我们对每个值记录找到的最晚的那个人(贪心),然后暴力判断。那么对于和集合相关题目,我们要多关注 集合的大小 ,这样就很有可能出现 交叉 的情况,是本题解题的关键。我想这道题难倒我的原因在于 数据规模 ,但是如果我们按 关键信息 排序,就会找到解题路径。这种题目的逻辑链条往往不长,但是 要想到第一步转化 。那么我们就要积累 做杂题的经验 ,锻炼 破题 的能力。#include&l原创 2022-03-26 16:27:56 · 1741 阅读 · 0 评论 -
【题解】加权约数和
n≤106n\leq 10^6n≤106 。多组数据。∑i=1n∑j=1nmax(i,j)×σ(ij)\sum_{i=1}^n\sum_{j=1}^n\max(i,j)\times \sigma(ij) \\i=1∑nj=1∑nmax(i,j)×σ(ij)考虑这样一件事情。我们暴力枚举 i 。(233i×∑j=1iσ(ij)=i×∑j=1i∑x∣i∑y∣j[(x,y)=1]iyx=i×∑j=1i∑x∣i∑y∣j[(ix,y)=1]xy=i×∑j=1i∑x∣i∑y∣jxy∑k∣(ix,y)μ(原创 2022-02-22 15:42:39 · 511 阅读 · 0 评论 -
【题解】[HNOI2016] 序列
sol:考察函数 fn=∑i=1nminj=inajf_n=\sum_{i=1}^n\min_{j=i}^na_jfn=∑i=1nminj=inaj设 prenpre_npren 表示第一个比 ana_nan 小的位置,可以得到递推式:fn=fpren+(i−pren)∗anf_n=f_{pre_n}+(i-pre_n)*a_nfn=fpren+(i−pren)∗an直接 O(n)O(n)O(n) 预处理 qwq…可以莫队转化为 左 / 右端点固定 的情况,预处理 rmq原创 2022-02-12 17:40:54 · 472 阅读 · 0 评论 -
树上斜率优化
树上问题多半考虑回溯思想。考虑从叶子结点开始从下向上回溯。每次转移只会修改一个值。但是注意一个点会被弹出 最多 n 次 ,所以暴力的时间复杂度是 o(n^2) 。所以要二分新插入决策点的位置。时间复杂度 o(nlogn) 。...原创 2022-01-29 11:06:15 · 453 阅读 · 0 评论 -
关于消圈算法的正确姿势
众所周知当有负环时是跑不出最短路的 233扩广一下定义,考虑一个不流经 s, t 的负环也能产生贡献考虑贪心得把所有负边流满,再加反向正边用于退流首先花最小代价将流量平衡再从 s 到 t 跑一遍最大流最小费用输出两次所用费用之和简单 yy 一下正确性首先转化后全为正权这个时候跑流平衡跑出来的全都是 不得不花费 的在其残余网络上跑最大流最小费用调整到最大流状态注意 s,t 无流量限制,应加上 t 到 s 的 inf 边。...原创 2022-01-06 21:49:48 · 307 阅读 · 0 评论 -
【题解】洞穴迷宫(pokemon)
前言我以为我想到正解了,事实证明并没有想到那个 特殊性质 (即形成封闭回路)以及整个搜索策略(一些细节的实现)。sol:感觉自己搜索白学了。很显然是一道暴力 + 搜索的题。观察到从任意一个点出发最后一定会回到原地(如果我们把原地转向这个东西也算在上面的话)而任意 (i,j,dir) 在这条路径上都是出现的 (当然包括一些不合法的点)那么构成一个封闭回环那么我们做一个简单的差分 o(1) 回答询问考虑怎么搜出这个路径。比较自然的想法是 ,我们随便选位置 (i,j)以及初始朝向 dir原创 2021-10-30 16:54:54 · 264 阅读 · 0 评论 -
【题解】[AGC002F] Leftmost Ball
无论如何都想不出的 dp 转移式:设 dp[i][j] 表示当前考虑了 i 个白球和 j 种其他颜色的球的方案数。(首先要意识到白球和其他颜色球是本质不同的)每次转移时找到从左往右第一个空位(逆向思维怎么都想不到啊 qwq)所以说思维量确实还没达到 …0 _ _ _0 1 _ _...原创 2021-10-22 21:10:06 · 107 阅读 · 0 评论 -
【题解】[CSP-S2020] 函数调用
难。。。第二次做这道题,还是思考了 1.5h 才胡出思路。但是部分分很好拿。考虑一种思想:将子节点的部分信息存储到父节点上,通过对操作序列的预判,向父节点传递标记,再对 DAG 上的每一个节点统计答案。考虑对每个 复合函数 打一个标记,表示 对于当前操作涉及的所有操作 都会乘上一个 val 。现在我们站在离线的角度思考这个问题,维护 add 和 val 标记,对于第 i 个数输出 a[i]*val+add 即可。时间复杂度 O(n+∑c_i) 。总用时 2.5h 。(乐观估计)#include原创 2021-10-20 16:42:23 · 556 阅读 · 0 评论 -
【题解】I love random (计数 dp)
题意sol:考点:思维 + 计数 dp 。(考验选手的 dp 和模型转化能力)为了解决这道题,我们引入 极大作用区间 这个概念。即对于每个 P[i]P[i]P[i] 找到极大的区间 [li,ri][l_i,r_i][li,ri] ,使得 P[i]P[i]P[i] 是这个区间的最小值。这样对于 [l,r][l,r][l,r] 以内的任意子区间都可被染成 P[i]P[i]P[i],反之则不能。现在我们将原问题转化为:对每个 P[i]P[i]P[i] 控制的区间 [li,ri][l_i,r_i]原创 2021-10-20 14:06:52 · 110 阅读 · 0 评论 -
【题解】2021牛客OI赛前集训营-提高组(第三场)C. 打拳
充分体现了本蒟蒻 dp 菜的本质。考虑 k=1 的情况。这种情况等价于,从 叶子结点 1 到根节点的所有祖先都被收买,且满足祖先节点都是子树的最大值。那么我们考虑设 dp[i][j] 表示处理了前 i 个被收买的人,其中 j\in [0,2^n) 表示每个位置上的数是否被选择。转移时就找到一个不为 1 的位置,假设为 k,那么乘上一个组合数 (beat[i]−cnt[j]−22k−1)\binom{beat[i]-cnt[j]-2}{2^k-1}(2k−1beat[i]−cnt[j]−2) 以及 be原创 2021-10-16 10:33:04 · 463 阅读 · 1 评论 -
【学习笔记】[BalticOI 2007 Day 1] Ranklist Sorting
论文题(挺考验语文阅读能力的,足足花了我一晚上+一下午)论文出处首先感性地得到两个推论(这是我们后续按顺序 dp 的基础):最有决策中一定是从大往小操作对于数 x 来说,要么在原地不动,要么移动到 x+1 的前一个位置现在我们修改一下这个操作的定义:我们不改变没有操作的点的位置,而是 并列放置 。这样的放置对后面 dp 转移方程的推导很有帮助。我们可以令 f[x][p2]f[x][p2]f[x][p2] 表示把 xxx 移动到原序列的 p2p2p2 位置且 x+1x+1x+1 到 nnn原创 2021-10-05 21:16:23 · 258 阅读 · 0 评论 -
【题解】CF5E Bindian Signalizing
好巧妙的思路。先把这个环变成一条链,把最高的山作为第一个山,按照顺序复制序列,再在最后接上一个最高的山。L[i] 表示左边第一个 > a[i] 的数 , R[i] 表示右边第一个 >= a[i] 的数,C[i] 表示重复高度为 a[i] 的连续区间长度 。首先 (L[i],i) 和 (i,R[i]) 和 C[i] 都是可行区间。问题转化为求 L[i] ,R[i] 和 C[i] 。可以利用动态规划的思想来做。注意 L[i]=0 && R[i]=n 其实是同一组,特判即可。#原创 2021-09-19 19:51:19 · 183 阅读 · 0 评论 -
【题解】[NOI2006] 网络收费
考察:完全二叉树 + 状压 dp 。我们可以重新定义一下这个收费:当一个点到 LCA 颜色相同的时候不收钱,否则收一分钱。这样贡献可以分别算。(我的思维炸裂了 qwq设 f[i][j][k]f[i][j][k]f[i][j][k] 表示树上第 i 个点的子树下有 j 个 B 类点 , i 到根节点的状态为 k 的最小费用。当我们遍历到叶节点时,可以算出这个点对整个答案的贡献。根据选择 B 类点的个数,可以得出 LCA 的颜色:当 nA≥nBnA\geq nBnA≥nB 时,这个点的颜色是 A当 n原创 2021-09-16 21:03:26 · 195 阅读 · 0 评论 -
【题解】「BZOJ5079」
题目描述你在一个秘密据点门口安装了监控探头,希望监控人员出入情况。探头记录了据点某天从早到晚的人员进出情况,你不知道据点内开始的人数。同时,进出据点的人可能会进行伪装,你无法从探头记录中得知伪装的人的身份。探头的每条记录是以下两个形式之一:E id当 id>0 时,表示编号为 id 的人进入了这个据点; 当 id 为 0 时,表示一个伪装的人进入了据点。L id当 id>0 时,表示编号为 id 的人离开了这个据点; 当 id 为 0 时,表示一个伪装的人离开了据点。你想弄清楚,原创 2021-09-14 16:04:45 · 101 阅读 · 0 评论 -
【题解】CF79D Password
考场上背包骗了 45 pts (雾 。考点:状压 + 差分 + 最短路说实话第一步转移我没太看懂。(但是不影响做法可以把题目要求变换的位置看成 1 。问题转化为若干次操作使得原序列全为 0 。求出差分数组,问题转化为对于新的差分序列,每次将两个位置的状态取反。如果当前为 1 的点有奇数个的话直接输出无解。否则容易想到两两匹配。这里可以 o(20nl) 预处理最短路。最后观察到差分后为 1 的点的个数 <=20 ,直接状压即可。#include<bits/stdc++.h>原创 2021-09-13 15:48:10 · 129 阅读 · 0 评论 -
【题解】「JOISC 2017 Day 2」门票安排
solution:不看题解做不出来考虑翻转一些区间使得答案更优。(这里不讨论 [l,r] = ∅\empty∅ 的情况)设 a_i 表示翻转前的答案, b_i 表示翻转后的答案。性质一:任意两个翻转的区间一定有交集。证明:考虑反证。假设有两个翻转区间交集为空,那么翻转前肯定比翻转后更优。性质二:设所有翻转区间交集为 [l,r] ,其中 b_t=max(a_l,…,a_r) ,l<=t<=r 。则满足 b_t>=max(b_i)-1 。证明:当 l<=t’<=r 时原创 2021-08-27 15:26:33 · 488 阅读 · 0 评论 -
【题解】HDU 5970 最大公约数
solution:网上一堆错解。考虑 gcd 的性质: g(i+kj,j)=g(i,j)观察到 m<=666 ,考虑枚举 (i,j) 其中 i<=j 。记 c(i,j) 表示迭代的次数。不难发现 c(i,j) <=log(j)+1 ,这里有一个下取整很烦,记 g=gcd(i,j) ,枚举 k\in [0,c) ,观察到 ⌊(i+cj)∗j/g2c)⌋=⌊(i∗j/g2c)+(c∗j2)/(g2∗c)⌋=⌊(i∗j/g2c)⌋+(j/g)2\lfloor (i+cj)*j/g^2c)原创 2021-08-25 11:10:40 · 176 阅读 · 1 评论 -
【题解】ARC215 D - Unique Subsequence
题意:给你一个序列 aaa 找到只在 aaa 序列中出现一次的子序列数量。solution:考虑怎么去重。首先满足条件的序列一定是包含在 aaa 的子序列中的。设 dp[i] 表示必选第 i 个字符,满足条件的不同子序列数量。先说转移方程: dp[i]=∑dp[j]dp[i]=\sum dp[j]dp[i]=∑dp[j] , 其中 j 满足 : 对于任意 k∈[i+1,j−1]k\in [i+1,j-1]k∈[i+1,j−1] , a[k]≠a[i/j]a[k]\ne a[i/j]a[k]=a原创 2021-08-23 11:47:48 · 278 阅读 · 0 评论 -
【题解】CF_338D_GCD Table
solution:猜到了结论,但是没有实力证明。现在我把它证明出来了。(i,j)=a_0, (i,j+1)=a_1=>i=a_0x_0, j=a_0y_0, || i=a_1x_1, j+1=a_1y_1=>lcm(a_0,a_1,…,a_n) | i如果 i≠lcm(a0,a1,...,an)i\ne lcm(a_0,a_1,...,a_n)i=lcm(a0,a1,...,an) ,设 i′=d∗lcm(a0,a1,...,an)i'=d*lcm(a_0,a_1,...,原创 2021-08-22 12:15:43 · 108 阅读 · 0 评论 -
【题解】 [JOISC2020] 星座 3
solution:考虑怎样的一对星星会形成星座。记 l[i]l[i]l[i] 和 r[i]r[i]r[i] 分别表示从第 iii 个星星出发,能扩展到的最左和最右节点。考虑反悔贪心,尽量使得答案更大。换句话说,当前点覆盖的区间一定比之前 [l[i],r[i]][l[i],r[i]][l[i],r[i]] 内所有点管辖的区间的并集还大,所以如果 w≥cw\geq cw≥c 那么答案直接加上 ccc ;否则强行选择当前星星,自然而然地对 [l[i],r[i]][l[i],r[i]][l[i],r[i]]原创 2021-08-20 11:06:16 · 374 阅读 · 0 评论