思维/结论
文章平均质量分 78
思维题、结论题
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【XSY4371】star(构造)
题意:给定值域在 [0,n−1][0,n-1][0,n−1] 的序列 a1,⋯ ,ama_1,\cdots,a_{m}a1,⋯,am,要求构造值域在 [0,n−1][0,n-1][0,n−1] 的序列 b1,⋯ ,bmb_1,\cdots,b_{m}b1,⋯,bm 和 c1,⋯ ,cmc_1,\cdots,c_{m}c1,⋯,cm,使得 bib_ibi 两两不同、cic_ici 两两不同、且 ∀i,bi+ci≡ai(modn)\forall i,b_i+c_i\equiv a_i\pmod原创 2022-04-03 14:39:16 · 356 阅读 · 0 评论 -
【NOI Online 2021 提高组】愤怒的小 N(生成函数,结论)
令 n=logmn=\log mn=logm,记 mmm 在二进制表示下为 sn−1⋯s1s0‾\overline{s_{n-1}\cdots s_1s_0}sn−1⋯s1s0。首先可以归纳得到一个位置 xxx 为 b\texttt{b}b 当且仅当 popc(x)≡1(mod2)\operatorname{popc}(x)\equiv 1\pmod 2popc(x)≡1(mod2),那么我们要统计的即为 ∑x=0m−1[popc(x)&1]f(x)\sum_{x=0}^{m-1}[原创 2022-03-29 16:10:27 · 216 阅读 · 0 评论 -
【XSY3588】B(图论,欧拉回路)
题意:给一张 nnn 个点 mmm 条边的简单连通无向图,保证 mmm 为偶数。可知度数为奇数的点共有偶数个,你需要将它们两两分组,对于每一组点 u,vu,vu,v,你要找到一条包含偶数条边的 uuu 和 vvv 之间的不重边路径,同时你要保证一条边至多在一条路径中出现。请求出任意一组构造方案。n,m≤106n,m\leq 10^6n,m≤106。题解:为了保证路径长度是偶数,我们考虑这么一种做法:将原图 GGG 中的边两两匹配,满足匹配的两条边恰有一个公共端点,且一条边恰在一个匹配中。匹配的原创 2022-02-14 16:13:45 · 214 阅读 · 0 评论 -
【CQOI2017】小Q的表格(数论,分块)
题意:有一个无限大的整数表格 fff 满足以下两条法则:f(a,b)=f(b,a)f(a,b)=f(b,a)f(a,b)=f(b,a)。b×f(a,a+b)=(a+b)×f(a,b)b\times f(a,a+b)=(a+b)\times f(a,b)b×f(a,a+b)=(a+b)×f(a,b)。初始时 f(a,b)=a×bf(a,b)=a\times bf(a,b)=a×b。有 mmm 次修改,每次修改会改变某个位置,并将所有此次修改会影响到的所有位置按照法则重置一遍。每次修改完还会询问你前原创 2022-01-18 11:59:50 · 418 阅读 · 0 评论 -
【XSY3527】饮料/【NOI2020】制作菜品
XSY 押题!/se对于一类问题:有 nnn 种不同的饮料,第 iii 种有 aia_iai 升。你需要把它们分到 mmm 个瓶子里面,每个瓶子容量为 kkk,你的分配方案需要满足:每个瓶子都被装满,题目保证满足 mk=∑aimk=\sum a_imk=∑ai。每个瓶子内至多有两种饮料。求出任意一组合法的方案或判定无解。为了方便,我们将当前情况下的所有饮料按 aaa 从小到大排序。引理1:当 m=n−1m=n-1m=n−1 时一定有解。首先由于 m<nm<nm<n,原创 2022-01-08 17:01:44 · 217 阅读 · 0 评论 -
【XSY3535】购物(决策单调性优化DP,分治,结论,背包)
题面购物题解决策单调性全忘了……先考虑暴力怎么做,我们可以设 fi,jf_{i,j}fi,j 表示前 iii 个商店买了 jjj 件物品的最小代价,然后有转移:fi,j=mink=0j(fi−1,k+sai,j−k)f_{i,j}=\min_{k=0}^j(f_{i-1,k}+sa_{i,j-k})fi,j=k=0minj(fi−1,k+sai,j−k)其中 sai,jsa_{i,j}sai,j 表示 ai,∗a_{i,*}ai,∗ 的前缀和。我们先来看一个决策单调性优化原创 2022-01-02 22:18:03 · 293 阅读 · 0 评论 -
【XSY3478】取石子(经典问题)
题面取石子题解只考虑一方,每一个操作都可以写成 x←max(0,min(S,x+Bi))x\gets \max(0,\min(S,x+B_i))x←max(0,min(S,x+Bi)) 的形式。法一:定义 “碰壁” 表示当前 x←max(0,min(S,x+Bi))x\gets \max(0,\min(S,x+B_i))x←max(0,min(S,x+Bi)) 操作中对 000 取 max\maxmax 和对 SSS 取 min\minmin 之一起了作用(即 x+Bix+B_ix原创 2021-12-12 12:32:20 · 2092 阅读 · 0 评论 -
【XSY3409】树(概率与期望,思维)
考虑累加种下第 iii 棵不同的树树到种下第 i+1i+1i+1 棵不同的树之间的时间间隔,设 f(i)f(i)f(i) 表示种了 iii 棵不同的树游戏仍未结束的概率,那么有:ans=∑i=0n−1f(i)(∑t=0∞(in)t(1−in)(t+1))=∑i=0n−1nn−if(i)\begin{aligned}ans&=\sum_{i=0}^{n-1}f(i)\left(\sum_{t=0}^{\infty}\left(\frac{i}{n}\right)^t\left(1-\frac{i原创 2021-12-09 15:44:09 · 3141 阅读 · 0 评论 -
【XSY3313】异或和(xorsum)(结论)
先上一个结论。一个长度为 nnn 的 010101 序列,其每个子序列的异或和的和为 [序列中包含1]2n−1[序列中包含 1]2^{n-1}[序列中包含1]2n−1。证明:考虑若不存在 111,则显然。否则若存在 111,随便选一个 111 出来,不失一般性地设为第 111 位,然后考虑第 2∼n2\sim n2∼n 位的某个子序列的异或和 sss,第 111 位的 111 有且仅有一种选取方式使得 sss 变为 111。故整个序列每个子序列的异或和的和就是第 2∼n2\sim n2∼n 位的子序原创 2021-12-09 15:02:39 · 624 阅读 · 0 评论 -
【XSY3312】路径(path)(trick)
原题就不说了,记录一下其中要用的一个 trick。定理:对于一个 1∼n1\sim n1∼n 的随机排列,它的前缀最大值的期望个数为 O(logn)O(\log n)O(logn)。证明:考虑元素 xxx 作为前缀最大值的概率,这要求 x+1,⋯ ,nx+1,\cdots,nx+1,⋯,n 都在 xxx 后面出现,即在排列中抽出 x,x+1,⋯ ,nx,x+1,\cdots,nx,x+1,⋯,n 这几个数,其中 xxx 排在第一个的概率,为 1n−x+1\frac{1}{n-x+1}n−x+11。那原创 2021-12-09 14:33:28 · 466 阅读 · 0 评论 -
【XSY4206】QWQ(trick)
两个问题的解决方法感觉很妙:一、给你若干棵树 T1,T2,⋯ ,TkT_1,T_2,\cdots,T_kT1,T2,⋯,Tk,设 f(Ti,u,v)f(T_i,u,v)f(Ti,u,v) 为树 TTT 中 lca(u,v)lca(u,v)lca(u,v) 的深度,问如何优美地表示 g(u,v)=mini=1kf(Ti,u,v)g(u,v)=\min_{i=1}^k f(T_i,u,v)g(u,v)=mini=1kf(Ti,u,v)。其实很简单,设 PuP_uPu 为一个 kkk 元组序原创 2021-11-15 07:18:42 · 64 阅读 · 0 评论 -
【XXSY】棋盘(矩阵乘法,trick)
题面棋盘题解直接的想法是矩阵加速 DP,记录两行的 DP 状态,用一个大小为 2n×2n2n\times 2n2n×2n 的矩阵记录,每次相当于询问一段区间的矩阵乘积,如果使用线段树维护的话是 O(n3qlogq)O(n^3q\log q)O(n3qlogq) 的。使用优化可以做到 O(n3q+n2qlogq)O(n^3q+n^2q\log q)O(n3q+n2qlogq),下文算法中的优化方法与此优化方法类似,先略去。注意到询问的 l,rl,rl,r 是单调的,有一个 trick:对于原创 2021-11-11 22:17:23 · 444 阅读 · 0 评论 -
【XSY4247】交换(结论)
题意:给你一个长度为 nnn 的序列,你要把它变成一个先单调不降再单调不升的序列,每次操作可以交换相邻两个数,求最小操作次数。n≤106n\leq 10^6n≤106。考虑把一次交换产生的贡献记录在交换的两个数字中较小的那个数字上。构造一个好的序列的过程可以看成是:按照从小到大的顺序枚举每个数,每次选择将这个数交换到序列的左边或右边。如果交换到左边,考虑比它大的数与它交换所产生的贡献,发现所有在原序列中在它左边且比它大的数都要与它交换一次(不管这个比它大的数要放在左边还是放在右边)。如果交换到右边同理。原创 2021-11-11 16:53:27 · 67 阅读 · 0 评论 -
【CF1601C】Optimal Insertion(结论)
首先容易知道 bbb 序列在 aaa 中的顺序肯定是从小到大排序的,否则交换 bbb 中逆序的肯定会更优。接下来是一个很鬼的结论。设 pip_ipi 表示考虑仅将 bib_ibi 插入 aaa 序列中,最优位置是插在 api−1a_{p_i-1}api−1 与 apia_{p_i}api 之间,注意对于同一个 iii,pip_ipi 可能有多个。结论:若 bj<bib_j<b_ibj<bi,对于多个 pjp_jpj 中的任意一个,均存在 pip_ipi 使得 p原创 2021-11-03 18:15:26 · 289 阅读 · 0 评论 -
【XSY2416】带权图(图论,高斯消元)
感觉非常高妙。考虑暴力做法。首先对于题目中的第三种限制:若两个环满足,那么这两个环拼起来得到的环肯定也满足。那么我们可以只考虑那些互相独立的简单环。随便找到原图的一棵生成树,那么一条非树边可以对应一个简单环,共 m−(n−1)m-(n-1)m−(n−1) 个,看成 m−(n−1)m-(n-1)m−(n−1) 条方程。再配上第二条限制,总共就得到了 n+m−(n−1)=m+1n+m-(n-1)=m+1n+m−(n−1)=m+1 条方程,共有 mmm 个未知数。O(m3)O(m^3)O(m3) 高斯原创 2021-10-31 22:19:26 · 158 阅读 · 0 评论 -
【CFgym102870J】Junction of Orz Pandas(思维,容斥)
暴力做法就不会做……考虑容斥,用所有数 ≤ai\leq a_i≤ai 的方案减去所有数 <ai<a_i<ai 的方案得到最大值为 aia_iai 的方案,bib_ibi 同理容斥,时间复杂度 O(2n+mnm)O(2^{n+m}nm)O(2n+mnm)。直接在容斥上优化是没有前途的,考虑换一种思路。发现我们交换两行或交换两列并不影响答案,那我们不妨将 aia_iai 和 bib_ibi 从小到大排序。我们先取出 vvv 为所有 aia_iai 和 bib_ibi 的原创 2021-10-27 07:42:21 · 129 阅读 · 0 评论 -
【XSY2912】reo(构造)
考虑先找到一个原树的根。对于第一种限制,bbb 不能作为根。对于第二种限制,aaa 不能作为根。找到可以作为根的一个点 rtrtrt,显然由于限制互不矛盾肯定能找到。对于第一种限制先直接连边。考虑在满足第一种限制的前提下尽量满足第二种限制:让连通的点作为 rtrtrt 的一棵子树,不连通的点在 rtrtrt 的不同子树内。然后让那些连通的点往下递归去做即可。#include<bits/stdc++.h>#define N 1010using namespace std;原创 2021-10-26 14:50:25 · 91 阅读 · 0 评论 -
【CF1537F】Figure Fixing(思维)
题意:给一张图,每个点有一个可以为负的权值 aia_iai,一次操作可以选择一条边 (i,j)(i,j)(i,j) 并让 ai,aja_i,a_jai,aj 同时增加任意一个可以为负的整数值,问是否存在操作方式使得所有点点权变为 000。首先判掉 ∑ai\sum a_i∑ai 为奇数的情况。由于逆操作的存在,那么我们可以对于原来的条件任意操作,而不影响答案。那么我们可以先通过一些操作把题目转化为更加简单的等价题目。考虑现在图中随便找一棵生成树出来,那么我们可以自底向上地将所有点的权值都变为原创 2021-10-22 11:52:28 · 99 阅读 · 0 评论 -
【NOI2020】制作菜品(结论)
首先 m≥n−1m\geq n-1m≥n−1 一定有解:若 m≥nm\geq nm≥n,那么 maxdi≥k\max d_i\geq kmaxdi≥k,直接用 maxdi\max d_imaxdi 一直做即可,接下来肯定是继续进入两种情况中的一种。若 m=n−1m=n-1m=n−1,那么 mindi+maxdi≥k\min d_i+\max d_i\geq kmindi+maxdi≥k 且 mindi<k\min d_i<kmindi<k,直接用完 mindi\原创 2021-10-20 17:17:55 · 98 阅读 · 0 评论 -
【CF1515F】 Phoenix and Earthquake(结论)
首先 Yes 的必要条件是图连通且 ∑ai≥(n−1)x\sum a_i\geq (n-1)x∑ai≥(n−1)x。发现这竟然就是充要条件。首先一个很重要的结论:假如一开始 ∑ai≥(n−1)x\sum a_i\geq (n-1)x∑ai≥(n−1)x,那么对于之后的任意时刻肯定都满足 ∑ai≥(n−1)x\sum a_i\geq (n-1)x∑ai≥(n−1)x(连通块缩完点后)。证明最大值+最小值一定大于等于 xxx:若最大值大于等于 xxx,则证毕。若最大值小于 xxx,则所有原创 2021-10-19 20:40:18 · 105 阅读 · 0 评论 -
【NOI2016】优秀的拆分(哈希,循环节,分段)
首先可以考虑求出 fif_ifi 表示结尾在第 iii 位的 AAAAAA 串的个数,gig_igi 表示开头在第 iii 位的 AAAAAA 串的个数。枚举 AAA 的长度 LLL,每 LLL 位放置一个关键点,那么 AAAAAA 必定经过恰好两个相邻的关键点。枚举两个相邻关键点 iii 和 i+Li+Li+L 并钦定 AAAAAA 经过这两个关键点,求出 prei,prei+Lpre_{i},pre_{i+L}prei,prei+L 的最长公共后缀 l1l_1l1 和 sufi+1,suf原创 2021-10-15 22:37:40 · 179 阅读 · 0 评论 -
【XSY3405】零糖麦片(二分图,复杂度均衡)
一个听说很套路但我不会的套路:对于一个非 111 数 wiw_iwi,把它看成是 (wi−1)+1(w_i-1)+1(wi−1)+1,于是原式变为:ans=∑e1,⋯ ,et(n−t)!∏i=1t(wei−1)ans=\sum_{e_1,\cdots,e_t}(n-t)!\prod_{i=1}^{t}(w_{e_i}-1)ans=e1,⋯,et∑(n−t)!i=1∏t(wei−1)其中 {e1,⋯ ,et}\{e_1,\cdots,e_t\}{e1,⋯,et} 是 {1,⋯ ,k原创 2021-10-12 21:16:44 · 67 阅读 · 0 评论 -
【XSY3396】地铁(平面图与对偶图,最小割)
题意:给一张平面图,满足这张平面图的对偶图是一棵树,有若干限制,形如 “若经过点 xxx 则必须要经过点 yyy”,求 1∼n1\sim n1∼n 的最短路。由于平面图与其对偶图互为对偶,所以平面图最短路等于其对偶图上的最小割。注意这里的最小割和普通的最小割有点不一样,这里要求任意一条 S→TS\to TS→T 的路径上都只有一条割边(不然就不能对应平面图上的一条最短路),于是我们在求最小割时要给每条边加上容量为 INF 的反边。例:假设对偶图左图长这样(尽管这不是一棵树),那么我们的最小割算原创 2021-10-08 18:37:21 · 226 阅读 · 0 评论 -
【XSY4186】Binomial(结论,数位DP)
题面Binomial题解设 ord(n)\operatorname{ord}(n)ord(n) 表示 nnn 分解质因数后 ppp 的幂次,那么我们就是对于每一个 kkk 要求有多少 0≤m≤n0\leq m\leq n0≤m≤n 使得 ord(Cnm)=k\operatorname{ord}\left(C_n^m\right)= kord(Cnm)=k。首先有一个很显然的式子:ord(n!)=∑k=1∞⌊npk⌋\operatorname{ord}(n!)=\sum\limits_{k=1原创 2021-09-16 12:53:49 · 98 阅读 · 0 评论 -
【XSY4184】谁(who)(01Trie,结论)
考虑哪些点对无论颜色怎么变都是没有用的(不可能成为答案)。先把 01Trie 建出来,对于每一个点 lcalcalca,找到异或值最小的两个点 u,vu,vu,v,使得 uuu 在 lcalcalca 左子树内,vvv 在 lcalcalca 右子树内,然后标记点对 (u,v)(u,v)(u,v)。(注意这里不考虑颜色)找到所有标记的点对可以 O(nlog2ai)O(n\log^2 a_i)O(nlog2ai) 实现,显然标记的点对只有 O(nlogai)O(n\log a_i)O(nlogai原创 2021-09-14 16:13:12 · 61 阅读 · 0 评论 -
【XSY4182】下一个(next)(欧拉回路,构造)
题面下一个(next)题解我们可以这么转化问题:给每一条边定向,使得每一个点的出度至少为 222。证明新问题是原问题的充分条件:定好向后,我们先给每个点随便选一条出边,显然这些边形成若干连通块,且每个连通块点数不大于边数(都是基环树),且每个点都被恰好覆盖一次。然后我们把这些边删去,让剩下的边形成若干连通块,由新问题构造条件可知现在每个点肯定至少有一条出边被选上,于是能保证这些连通块中每个连通块点数不大于边数(都是基环树),且每个点都恰好又被恰好覆盖一次。如何找呢,每个点度数至少为 444 是一个原创 2021-09-14 14:30:14 · 89 阅读 · 0 评论 -
【XSY3331】东非大裂谷(结论,DP)
一般这种 “分段,求每段极值和的最大值” 的题都有两个结论:一段的最大值和最小值一定是该段的两个端点。证明:如果不是的话:那么我们显然可以把最小值和最大值所在位置之间的部分提取出来作为一段,而其他的部分分离出去,这样得到的答案肯定不劣。一段肯定是单调不增或单调不降的。证明:如果不是的话:假设该段为 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an。由结论1,我们可以假设 a1a_1a1 该段的最小值、ana_nan 为该段的最大值(a1a_1a1 为原创 2021-09-10 19:57:07 · 100 阅读 · 0 评论 -
【XSY3330】地中海气候(思维)
题目让我们动态维护一个堆,有两种操作:加入一个数、询问并取出最大值。比较巧妙的地方是这两种操作是轮流进行的。我们可以用桶来维护这个堆,顺便记录一下当前桶内的最大值。然后加入一个数时,若它比桶内最大值大,那么它在下一次询问的答案必然是它,那么我们就无需加入桶内,直接记录一下即可。否则它比桶内最大值小,那么就把它加入桶内。于是你发现桶的最大值是不会增大的,于是总时间复杂度为 O(nk)O(nk)O(nk)。#include<bits/stdc++.h>#define N 100010#原创 2021-09-10 19:35:20 · 83 阅读 · 0 评论 -
【XSY3325】社保(拓扑序)
显然我们先缩点,之后转化为一个 DAG,设为 GGG,设由其反边构成的图为 G′G'G′。题意就是求所有 “好的” 点,其中一个 “好的” 点需要满足这个点在 GGG 上能走到的点和在 G′G'G′ 上能走到的点的并集为所有点。思路 1:显然一个点不可能同时在 GGG 和 G′G'G′ 上都能被同一个点 uuu 走到(除了这个点就是 uuu),于是我们可以在 GGG 和 G′G'G′ 上分别求出 uuu 能走到的点的个数,再加起来判断是否等于 n+1n+1n+1。但你发现这个能走到的点的个数并不好快速求。原创 2021-09-09 13:35:05 · 150 阅读 · 0 评论 -
【ARC083F】Collecting Balls(图论模型,二分图,基环树,拓扑序)
首先用 2n2n2n 个点表示每个机器人,原图中的一个球转化为图上的一条边,于是转化为一个二分图模型。我们对这个二分图的每个连通块分开考虑(假设有 cntcntcnt 个连通块),显然一个大小为 sss 的连通块应该有 sss 条边,于是这既是一个二分图也是一个基环树。二分图+基环树唯一的性质应该就是基环树中间的那个环是偶环,但这个性质在这题没什么用。考虑先选出每个球是被哪个机器人消灭的,这就相当于一个边定向问题。我们为这个图上面的每一条边定向,边指向的点表示这条边所代表的球是被那个指向的机器人消灭的原创 2021-09-09 12:59:35 · 139 阅读 · 0 评论 -
【AGC001E】BBQ Hard(图论,dp)
题意:求 ∑i=1n∑j=1i−1(Ai+Aj+Bi+BjAi+Aj)\sum\limits_{i=1}^n\sum\limits_{j=1}^{i-1}\dbinom{A_i+A_j+B_i+B_j}{A_i+A_j}i=1∑nj=1∑i−1(Ai+AjAi+Aj+Bi+Bj),n≤2×105n\leq 2\times 10^5n≤2×105,Ai,Bi≤2000A_i,B_i\leq 2000Ai,Bi≤2000。显然是从 Ai,Bi≤2000A_i,B_i\leq 2000Ai原创 2021-09-01 20:02:56 · 129 阅读 · 0 评论 -
【洛谷P7816 】【Stoi2032】以父之名
在洛谷题解中看到了两种做法。法一:与zjr巨佬说的类似,我们先能观察出这个图的几个性质:若只保留边权为 111 的边,那么所有点的度数都是奇数。那么也可以得到 nnn 为偶数。若只保留边权为 222 的边,这个图没有规律,即每个点的度数可以是奇数也可以是偶数。原图中度数为奇数的点有偶数个。(你可以考虑一条边会贡献两个度数,所以总度数应该是偶数)考虑构造欧拉回路来解决问题:我们建立一个虚点与所有度数为奇数的点连一条边权为 111 的边,这样保证了原图中的所有点和虚点的度数都是偶数,然后跑欧拉回原创 2021-08-22 22:25:04 · 86 阅读 · 0 评论 -
【BZOJ2813】奇妙的Fibonacci(结论,线性筛)
结论:fj∣fif_j|f_ifj∣fi 等价于 j∣ij|ij∣i。证明:(来自DTZ巨佬)于是询问就变成了求一个数的因数个数和因数的平方和。设 x=p1k1p2k2⋯pmkmx=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}x=p1k1p2k2⋯pmkm。那么 xxx 的因数个数为 ∏i=1m(ki+1)\prod\limits_{i=1}^m(k_i+1)i=1∏m(ki+1),因数平方和为 ∏i=1m∑j=0kipi2j\prod\limits_{原创 2021-07-18 16:00:57 · 116 阅读 · 0 评论 -
【XSY3908】迷宫(置换,图论,计数dp)
题面迷宫题解不妨把只由左向边形成的图称为 “左图”,那么 “右图” 的定义同理。如果只从图论的角度推,还是能推出来很多东西的。比如:当 X=Y=Z=0X=Y=Z=0X=Y=Z=0 时,右图能任意连,而左图只能是一些环。否则,左图和右图都只能是环。但你发现接下来很难dp。所以考虑用数学表示图论,这样就有很多性质了。具体来说,我们把右图看成一个映射 fff,左图看成一个映射 ggg,那么题目就是要求 fXgfYgfZ=idf^Xgf^Ygf^Z=idfXgfYgfZ=id。当 X=Y原创 2021-05-05 11:16:07 · 130 阅读 · 0 评论 -
【XSY3913】XOR(递归,分治,剪枝)
题面XOR题解以下对于一个数 xxx,用 xix_ixi 表示 xxx 在二进制下的第 iii 位。如果这个数本身就带下标,如 aka_kak,那么用 ak,ia_{k,i}ak,i 表示 aka_kak 在二进制下的第 iii 位。发现带上绝对值很难搞,考虑如何确定绝对值的符号:对于 ∣a−b∣|a-b|∣a−b∣ 来说,我们找到 aaa 和 bbb 在二进制下最高的不同位 yyy,那么如果 ay=1a_y=1ay=1(那么 by=0b_y=0by=0),有 ∣a−b∣=a−b|a-原创 2021-03-29 21:35:54 · 100 阅读 · 0 评论 -
【XSY3979】数据结构(分治,剪枝)
题面数据结构题解挺神奇的一道题。正解是对 yyy 坐标分治。每次考虑 yyy 坐标在 [l,mid][l,mid][l,mid] 范围内的红点和 yyy 坐标在 [mid+1,r][mid+1,r][mid+1,r] 范围内的蓝点匹配成点对的贡献。考场上尝试过这种做法,但发现时间复杂度不对劲就弃掉了。但有一种极妙的剪枝方法,它结合了题目特殊的询问条件,得出并依靠了下面的这条结论:只有选择的红点为 yyy 坐标在 [l,mid][l,mid][l,mid] 范围内权值最大的那个红点、或者选择的原创 2021-03-26 16:15:12 · 132 阅读 · 0 评论 -
【XSY3899】切割(思维,模拟二分图匹配)
考虑这么一个边都和坐标轴平行的不规则图形,经过水平或竖直切割后,如何判断切割后的图形是个矩形。容易发现,如果切出来后的图形没有凹进去的点,它就是一个矩形。那么假设一开始有 aoaoao 个凹点,那么你的目标就是让凹点的个数变为 000。然后对于一种切法,如果它不经过凹点,我们肯定可以调整这种切法使得它经过凹点,可以证明这样不会更劣。那么你只需要最多切 aoaoao 次就可以把这个不规则图形切成一些矩形了。现在你的目标是每一次切尽量减少多一点凹点,也就是说尽量让每一切都能切到两个凹点。我们考虑在原原创 2021-03-23 19:36:46 · 126 阅读 · 0 评论 -
【XSY3947】完美串(思维/结论)
题面完美串题解考虑一个完美串 sss 应该满足什么性质。若 sss 中 000 和 111 数量相同,那么显然是 010101 交错的。否则不妨设 111 比 000 多,那么循环意义下一定有连续的 111111,不然 111 不可能比 000 多。又由于有连续的 111111,那么就不能有连续的 000000,不然这个串就不是完美串。考虑一个 111 比 000 多的完美串 sss,那么在循环意义下,sss 可以被分割成若干段 111,而且每段 111 之间恰好隔着一个 000。从 sss原创 2021-03-07 14:29:57 · 142 阅读 · 0 评论 -
【XSY3917】分数(思维,构造)
题面分数题解手推一下发现最优策略是:(不会证)若 x<0x<0x<0,则不断 x←x+1x\gets x+1x←x+1 直到 x≥0x\geq 0x≥0 为止。若 x>0x>0x>0,则 x←−1xx\gets -\dfrac{1}{x}x←−x1。若 x=0x=0x=0,终止。也就是说,设开始时 x=ab<0x=\dfrac{a}{b}<0x=ba<0(若 x>0x>0x>0 则执行 222 操作),原创 2021-03-01 16:54:53 · 134 阅读 · 0 评论 -
【XSY3905】字符串题(lyndon串,构造)
题面字符串题题解设所有长度不超过 nnn 的串的集合为 SSS。考虑找到一种方法,能够对一个 lyndon 串 AAA ,直接求出 AAA 的下一个 lyndon 串。方法如下:先将 AAA 不断复制, 取出前 nnn 位作为新的 AAA ,即 A←AAA⋯A\leftarrow AAA⋯A←AAA⋯ 的前 nnn 位。如果 AAA 的最后一位是 ′a′+m−1'a'+m-1′a′+m−1,即字符集中最大的字符,则将其删去,一直删除直到最后一位不为 ′a′+m−1'a'+m-1′a′+m−1。原创 2021-02-25 21:39:18 · 164 阅读 · 0 评论