自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QuantAsk

但行好事,莫问前程

  • 博客(1794)
  • 收藏
  • 关注

原创 另一个博客

链接:https://www.cnblogs.com/QuantAsk/

2021-01-07 13:16:18 466 3

原创 hdu7462-字符串【SAM,二分】

的边,那么说明往下走了之后出现次数肯定会比当前串少,所以就没有往下走的必要了。我们可以先处理出每个节点在原串的出现次数,然后把所有这样的链拉出来,询问时直接二分我们能够往后走到哪个位置,顺便使用前缀和记录一下。,我们先在SAM上找到对应节点(经典方法建立SAM时记录每个后缀所在节点,然后从这个节点在parent树往上倍增跳到。多了,就没有继续的必要了,所以我们二分时还需要维护一下中间是否需要往上跳。的情况,也就是对应节点需要往上跳,但是我们考虑如果记。的方向走一步,暴力跳肯定是不对的,我们分析一下性质。

2024-08-13 10:26:25 920 1

原创 CF1819D-Misha and Apples【dp】

往后都是可以的,当然往前数第一个可以设置的集合也是可以的。这样我们就可以维护出一个可以转移的区间,然后用前缀和即可。考虑最后一次清空,那么在这次之后肯定没有重复元素且如果有可以设置的集合那么答案就直接为。我们可以通过从后往前做求出最后在某个位置清空时的答案。的位置以及再往前都是肯定不行的,而对于往前数第一个。你可以随机设置里面的元素,要求最后使得。可以随机设置那么此时肯定可以清空,如果。然后考虑能否在某些位置清空,设。能够从哪里转移过来,首先如果。我们就看前面能否恰好含有一个。,还有一个空的可重集。

2024-08-13 09:59:35 707

原创 CF1615H-Reindeer Games【保序回归,整体二分,网络流】

可以将题目变为一个最大权闭合图问题,使用网络流解决即可。对于这类的保序回归问题,我们可以考虑整体二分,当前枚举到。然后我们考虑用网络流解决设置点权的问题,如果要求。时的最优情况,如果在这种情况下某个点被设置为。个限制要求某个点最终权值小于等于另一个点。求最少的操作次数使得满足所有限制。个点,每个点有个初始权值。,你每次可以让一个点权值。时我们考虑将点权设为。

2024-08-13 09:49:55 883

原创 CF1969F-Card Pairing【dp】

当我们走到一个位置我们手上只有两个牌的出现次数是偶数次,那么如果我们之前丢掉这两张牌就会进入到一个新的手上所有牌类型都不同的状态,此时就可以进行一次转移。考虑到手牌数量和类型数量是一样的,所以我们如果类型没有一样花色的牌那么手上肯定是所有类型的牌都一样,所以此时我们可以确定手牌情况。暴力往后枚举转移,此时我们需要先丢掉两张牌,我们可以先不确定这两张牌,到后面再丢。张牌,然后你每次可以选择两张牌打出然后再抽两张牌,如果类型一样就加一分。张牌后我们如果手上没有类型相同的牌,我们前面最多能拿多少分。

2024-08-10 17:54:18 769

原创 CF319E-Ping-Pong【线段树】

那么现在问题就变为了动态维护这些区间的边双了,因为保证了加入的区间长度单调递增,所以我们不需要考虑新加入的区间被包含的可能,所以如果新加入的区间与某个边双的范围区间。位置为左端点的边双,右端点的最大值,这样就可以暴力每次从线段树中取出一个边双看与新区间是否连通,使用并查集合并即可。是双向的,这个区间又不会被这个边双包含,所以这个区间肯定能并入这个边双里。也就是对于单向边我们只会走一次,分析一下性质,如果我们知道区间。我们考虑假设我们从一个区间。我们用线段树维护对于每个以。所在的边双连通分量范围。

2024-08-01 20:02:15 296

原创 ICPC2023深圳部分题解(A,D,E,F,G,K,L)

好像还没上gym所以放不了题目链接,深圳这场的题目我觉得都很好所以写个题解。会做的都写上来了,场上很多题是队友写的,只是有参与讨论所以知道做法的题。

2023-11-19 13:25:47 879

原创 2022-2023 ICPC Brazil Subregional Programming Contest(B,D,F,I,L,N)

暴力枚举那个不确定的字母,然后压缩成long long用map存一下,遍历一遍就可以得到答案了。个点的一棵树,每个点有个颜色,求经过每一条边的,且首尾是相同颜色的路径数量。直接暴力枚举头选多少张尾选多少张,然后用线段树维护一下反面的数字,每次取前。,然后每次除以2再给最高位配一个数,所以求每个。张牌排成一排,有正面反面的数值,选择首尾加起来。一下更新答案,否则就暴力给每个点对的链加值。的小写字母字符串,其中都有一个字母不确定。张取反面的数值,求最大数值和。三个堆的取石子游戏,第。,求先手必胜的概率。

2023-07-04 02:04:10 784 1

原创 SEERC2022(E,F,H,K)

考虑一种类似插入排序的方法,我们每次把塔顶前面按顺序的全丢到第三个塔,然后把第一个塔剩下的第一个丢到第二个塔,然后再把第三个塔的一个一个丢回第一个塔,第二个塔上的在合适的顺序插入这个过程。因为这样原本的配对是不合法的,所以新的配对肯定是合法的,然后这种隔空配对是可以几个连一起互换的,贡献相同。排序然后相邻的配对,如果有的配对不符合限制我们就需要置换一下,找到相邻的一个进行如下配对。然后给出初始时第一个塔上盘的顺序,要求构造一种在最终第三个塔排好序的方案,次数不超过。,是否有往后拉的线。

2023-06-25 20:32:50 896

原创 CF1773J-King‘s Puzzle【构造】

我们尝试手玩一下,因为要联通我们直接先拉一条链,此时的度数是。的点,然后让第二个点对其他所有点连边,那么此时链上的度数就为。的情况,理论上如果这种情况可行,且存在度数为。个点,把剩下的点连在度数最大的点上。的点,那么我们可以考虑先构造。的子问题,重复上述过程就好了。的点,也就是变成了一个。非常好构造,爱来自复建人。然后我们保留一个度数为。

2023-06-23 21:09:03 463

原创 P8554-心跳【dp】

虽然退役了还是能写题解,因为是退役前验的题。题解也是退役前写的,现在也忘了怎么做了。

2022-09-25 16:29:51 507 1

原创 NOI2022退役记

摘要(必填)

2022-08-20 22:14:54 2291 4

原创 P2508-[HAOI2008]圆上的整点【数学】

求圆有多少个整点。

2022-08-20 10:31:22 339 1

原创 杭电多校杂题收录

和学长学弟一起打的hdu多校,打的很菜没啥难题收录,因为难的我都不会做。

2022-08-14 11:47:40 433

原创 hdu7207-Find different【burnside引理】

引理,我们要找所有置换的不动点数量和。个环,对于每个环来说总共加了。,求有多少个不同的序列。种,假设一种为循环位移了。来说合法的条件当且仅当。步,且所有数字加上了。,从一个数开始一直加。,最终又走回了起点。...

2022-08-14 10:41:09 263

原创 uoj#751-[UNR #6]神隐【交互】

个点的树,你每次可以选择一个边集,交互库会返回你所有联通块,要求这棵树。次询问中是一个单独的连通块,然后我们每次暴力找出叶子删掉即可。至于一个叶子的父节点是谁,我们在一个连通块删除的只剩下一个点。的子树中,此时取出还没有父节点的点,它们的父节点设为。的儿子,那么在过这个连通块的节点肯定都在。,我们可以给所有边一个独特的编号。这样对于一个叶子来说它就恰好在。一个神奇的做法,设操作次数为。位二进制数且其中恰好有。...

2022-08-12 13:36:53 352

原创 CF1710B-Rain【堆】

所以我们可以把这些函数分开来,然后按照截距从大到小用堆维护,每次取出最上面会不合法的就行了。我们把分段点提出来离散,这样每一段之间都是一个一次函数了,最值肯定在分段点上。一个操作可以相当于一个分成五段的分段函数,每一段是一个一次函数。然后我们记录一下目前正在产生贡献的一次函数,斜率只有。对于每个操作,求删除这个操作后能否使得最终所有的。一个数轴,每个位置上开始时都有一个。...

2022-08-12 13:24:50 261

原创 CF1710C-XOR Triangle【dp】

所以我们考虑减去不合法的状态,也就是。作为边长时能构成一个非退化三角形。,我们对于每一位来说,每次暴力枚举。,那么一个合法的状态有。也就是对于每一位来说。

2022-08-12 12:47:55 217

原创 Loj#3320-「CCO 2020」旅行商问题

说是找一条路径,实际上我们是能够找到一个颜色交替只有一次的环的,然后交替位置就在。求从这个点出发的一条尽量短的经过所有点的路径。,并且两条路径上颜色都相同,一条红色一条蓝色。,每一条边是红色或者蓝色,对于每个点。我们构造一下,此时有两条不相交的路径。的路径是红色,此时对于一个未加入的点。之间的路径颜色,假设是红色,那么如图。显然地猜测一下最短的长度肯定是。是蓝色那么直接加长路径即可。如果是蓝色同理弹另一边。......

2022-08-11 18:52:21 310

原创 loj#2788-「CEOI2015 Day1」管道【树上差分】

但是我们不能离线建生成树,因为我们存不下所有的边,考虑一下别的方向的优化。我们会发现对于非树边来说,如果这一条非树边能被其他非树边完全覆盖,那么说明这条边就没有用,所以我们对于非树边来说也只需要保留一棵最小生成树即可。一个朴素的想法是我们搞出一棵生成树来,然后对于非树边。路径上的边都标记成非割边,然后剩下的就是割边了。然后至于标记方面用树上差分来处理就好了。条边的一张图,求它的所有割边。我们存不下所有的边,但是。...

2022-08-11 18:38:53 257

原创 CF1427F-Boring Card Game【贪心】

我们考虑一下能不能求出哪些牌是在一次中取走的,这个取法很像一个括号匹配,也就是一次取走的东西中不会产生交叉,而如果不会产生交叉,那么我们按照括号匹配的找法去找也是对的。所以我们可以用一个栈存按顺序存牌,当栈顶三个颜色相同时就弹出这三个,表示这三个是在同一次中取走的。的根并且存在一个当前要取的颜色的叶子。我们找一下这个森林的性质,会发现每个节点的颜色都和父节点的不同,还有。的序列,两个人轮流操作,每次取走连续的三个数字。,那么此时取走随便一个不是最后一个根的。多,所以显然不合法,假设不成立。...

2022-08-10 21:04:08 266

原创 CF1286E-Fedya the Potter Strikes Back【KMP,RMQ】

我们在每次加入字符后考虑所有后缀的贡献,然后考虑加入一个字符后后缀产生贡献的变化。也就是一次操作最多增加一个会产生后缀的贡献,我们取考虑怎么维护其他以前的后缀。现在第二个问题是我们怎么知道每次要删除的后缀是哪些。除了这些以外还有如果。的都修改掉即可,这样势能分析一下就知道是对的。,然后我们就可以一直往上走找到要删除的后缀了。序列加入一个数字,然后求这个串的贡献。的后缀有多少个,然后每次暴力把大于。树,那么原本产生贡献的后缀肯定都在。点到根节点的路径上,我们维护一个。维护一下后缀的贡献即可。...

2022-08-10 20:37:34 301

原创 CF1534F2-Falling Sand (Hard Version)

手动刷新的肯定都是每一列位置最高的沙子,然后刷新关系可以表示成一张有向图,而且是平面图,那么就说明一个沙子被刷新的条件是手动刷新了某个区间中位置最高的沙子。条边,然后对于每个沙子要求区间的左端点我们从左往右从最高的沙子开始跑,然后每次走到的点标记删除,右区间就变成从右往左跑。个网格,有的网格上有沙子,一个沙子被刷新后会下落到底并且刷新沿途中四周四连通的沙子,你可以选择一些沙子手动刷新。个沙子下落,求至少手动刷新多少个沙子。我们考虑求出这些区间,先建边,这样最多。得到这些区间后我们转换成若干个形如区间。...

2022-08-10 20:01:42 287

原创 uoj#750-[UNR #6]小火车【二分,折半,鸽笼原理】

但是我们知道一定有解,这个条件肯定是有用的,我们考虑二分一下这个和。每次分割成左右两个区间。如果左边或者右边有重复的就直接结束先,这样我们就能保证左右没有重复了,此时我们需要找到。然后考虑怎么求这个解,看到这个范围我们考虑一下折半,我们搜出左右两边数字和的集合。有不超过这么多个数,所以肯定有重复的一个位置,所以肯定有解。即可,如果有一边是空的也行,这样另一边直接合法。,因为两个集合的都很大,这个看起来很不可做。那么答案肯定在左区间,否则在右区间。的和也相等,此时我们一边选。中找两个数字和相同的集合。...

2022-08-10 19:50:24 235

原创 UOJ#749-[UNR #6]稳健型选手【贪心,分治,主席树】

题目链接:https://uoj.ac/problem/749如果有序列aaa,你每次取走一个数字后然后这个序列最前面的数字会被别人取走,直到序列为空。此时f(a)f(a)f(a)表示你最大能取走的权值和。给出一个长度为nnn的序列aaa,qqq次询问区间[l,r][l,r][l,r],求f(al∼r)f(a_{l\sim r})f(al∼r​)。1≤n,q≤2×105,1≤ai≤1091\leq n,q\leq 2\times 10^5,1\leq a_i\leq 10^91≤n,q≤2×105,1≤ai

2022-08-08 21:56:28 220

原创 UOJ#748-[UNR #6]机器人表演【dp】

串是否合法,而且我们最好能搞出一种记录信息最少且唯一的方法。这种匹配方法一定是最优的,因为往前跳一到的位置一定是一个。时,如果恰好能和下一个匹配,我们就匹配。前面,求最终能得到多少种本质不同的串。表示当前匹配到的位置,当我们加入一个。如果没有我们就一直让匹配位置。往前走,直到出现一个未匹配的。时前面填的方案数转移即可。表示目前有多少个未匹配的。,我们可以先预处理出一个。往前跳到出现第一个未匹配。,而之后我们拿未匹配的。,如果前面有未匹配的。...

2022-08-08 11:07:35 261

原创 AT2382-[AGC015D]A or...or B Problem

中选取一个或多个数,将它们按位或后能得到多少种不同的结果。都删除,因为它们之间的数都有这些。中,而且它们怎么或都不能超过。的最高位就不同了,我们找到。,所以这部分的答案就是。,此时我们就有两个部分。然后让这部分的数或上。...

2022-08-06 15:32:04 279

原创 P8352-[SDOI/SXOI2022]小N的独立集【dp套dp】

也没有用,因为我们可以显然父节点不选择更优。这个范围,这样我们的状态数就只剩下。种状态,不能拿来dp套dp维护。求令这棵树的最大独立集权值为。选/不选时的子树最大权值和。给出一棵树,每个点的权值是。考虑我们求最大独立集时的。继续挖掘一下性质,若。...

2022-08-06 15:08:47 199

原创 AT2366-[AGC012F]Prefix Median【dp】

不过这第二个条件依旧不好处理,我们考虑倒着做,那当我们确定一个。此时还没有加入,我们只需要限制往内跨的情况出现就好了。中的前驱,如果都大于则取后继,如果一大一小则不动。加入数字之后的排名只能变动一位,这是充要的。,那么我们将其视为同一个,右边同理。中所有数字都不同,我们去考虑一下。基于这个限制我们得到的条件是每次。,你可以将其重新排列,定义。之间的数字就都不能选择了。询问有多少种不同的可能的。考虑去形式化这个条件,将。这样我们其实并不需要考虑。一次向外跨过了很多个。,那么我们可以视这些。...

2022-08-04 19:50:53 148

原创 pjudge#21651-[PR #4]猜猜看【交互】

首先我们发现在询问中位数的情况下我们是完全不能够区分。我们能得到两次,如果有一个只得到了一次,那么说明。那么我们假设我们现在已经得到了两个数字。此时如果我们在询问中得到了两个。次,每次会重新处理一个数字,也就是。肯定是用于区分这两个东西上的。,也就是在边界附近的两格。被得到了两次),那么我们令。,此时我们通过询问中位数。再进一步,如果我们不知道。而如果我们已经确定了一个。的排列,每次你可以询问。操作内得到这个排列。,此时肯定也有前一个。,然后再重新处理一次。不难发现这样最多扩展。...

2022-08-03 11:35:50 162

原创 AT2377-[AGC014E]Blue and Red Tree【启发式合并】

所以这个时候我们直接选择这条路径补上这条边一定是对的,因为如果被其他的补上了就不合法,而它也只会补上这条边。合并,我们用set来记录每个点连出去的边,合并的时候就启发式合并就好了。此时我们的方案就唯一了,实现的时候我们可以每次找到一条两棵树上都有的边。树上的边开始时都是蓝色的,我们每次选择一条蓝色边路径。要求最后所有都是红色边的情况下能不能变成。,然后删掉路径上一条边,连接一条。的路径上只剩下一条边没有补上。考虑反过来,所以开始时视。开始考虑,对于每一条。它合法的时机当且仅当。...

2022-08-03 11:10:40 146

原创 pjudge#21652-[PR #4]到底有没有九【数位dp】

首先是从高位到低位逐步确定答案,但是直接暴力算乘法肯定很麻烦,我们考虑反过来做。那么现在问题就是给定一些确定的位,求剩下的位有多少种不含。段数不会太多,我们可以暴力枚举。位分割一次提出来求和,如果是。的倍数,然后数位dp求解。的倍数的条件就是将它每。...

2022-07-15 19:16:06 258

原创 AT5147-[AGC036D]Negative Cycle【dp,模型转换】

这个容易负环让人一头雾水不知道怎么维护,我们知道差分约束有解的条件就是没有负环,所以我们可以考虑转成差分约束模型。,要求代价最小的情况下使得图中不存在负环。的限制,我们考虑维护差分数组(反过来的)然后仔细观察这个限制会发现其实只有相邻的。,那么条件就是区间和不能大于/小于。,也就是整个序列单调不升。那么对于不能删除的边。...

2022-07-15 19:04:03 206

原创 Loj#2324-「清华集训 2017」小 Y 和二叉树

的右子树,所以我们优先比对两个连接的部分作为子树时字典序最小的第一个数是啥。个(每条边的两个方向),我们可以先预处理出每个子树字典序最小时第一个是啥。你要求它的一个二叉树结构(根任意选择)使得其中序遍历的字典序最小。的左子树肯定没有节点,然后考虑它连接的点安排到右子树或者父节点。至于被丢到子树里面的,我们上面的预处理可以确定子树里面的顺序。直接找根感觉比较麻烦,我们考虑先确定中序遍历中的第一个点。,整张图可能出现的子树(不同的根)数量为。个点的一棵树,每个点的度数不超过。的时候,记它连接的节点是。...

2022-07-15 18:48:45 249

原创 Loj#510-「LibreOJ NOI Round #1」北校门外的回忆【线段树】

题目链接:https://loj.ac/p/510给出一个代码其中lowbit(x)\text{lowbit(x)}lowbit(x)表示xxx在KKK进制下最低非零位的值。现在给出n,q,Kn,q,Kn,q,K,qqq次调用add(x,v)add(x,v)add(x,v)或者query(x)query(x)query(x)。要求输出每次query(x)query(x)query(x)调用的值。1≤n≤109,2≤q,K≤2×1051\leq n\leq 10^9,2\leq q,K\leq 2\time

2022-07-14 11:50:47 220

原创 Loj#576-「LibreOJ NOI Round #2」签到游戏【线段树】

题目链接:https://loj.ac/p/576给出一个长度为nnn的序列aaa,还有一个未知序列bbb,你每次可以花费gcd⁡i=lrai\gcd_{i=l}^r a_igcdi=lr​ai​的代价得到∑i=lrbi\sum_{i=l}^rb_i∑i=lr​bi​的值。每次修改aaa中的一个数,求得到bbb中所有数字需要花费的最小权值。1≤n,q≤105,1≤ai≤1091\leq n,q\leq 10^5,1\leq a_i\leq 10^91≤n,q≤105,1≤ai​≤109因为有一个信息上的问题

2022-07-14 11:23:39 677

原创 CF516D-Drazil and Morning Exercise【树上差分,倍增】

题目链接:https://www.luogu.com.cn/problem/CF516D给出一棵nnn个点的树,定义f(x)f(x)f(x)表示距离点xxx最远的点的距离,qqq次询问给出一个kkk,要求一个最大的连通块满足连通块中所有点的f(x)f(x)f(x)最大最小差值不能超过kkk。1≤n≤105,1≤q≤501\leq n\leq 10^5,1\leq q\leq 501≤n≤105,1≤q≤50我们找到f(x)f(x)f(x)最小的点作为根,那么肯定有每一个点的f(x)f(x)f(x)都不小于其

2022-07-12 12:15:56 160

原创 CF1140G-Double Tree【最短路,矩阵乘法,树上倍增】

题目链接:https://www.luogu.com.cn/problem/CF1140G给出一个nnn个点的树TTT,然后复制一份T′T'T′,每个TTT中的点iii向T′T'T′中的点iii都有连边构成一张图。图上所有权值各不相同,现在qqq次询问图上两点的最短路。1≤n≤3×105,1≤q≤6×1051\leq n\leq 3\times 10^5,1\leq q\leq 6\times 10^51≤n≤3×105,1≤q≤6×105因为树上两点简单路径唯一,所以xxx到yyy之间的最短路肯定是包括两

2022-07-12 11:56:27 178

原创 P5208-[WC2019] I 君的商店【交互,二分】

题目链接:https://www.luogu.com.cn/problem/P5208有一个长度为nnn的010101序列aaa,你知道里面有奇数个111还是偶数个111。你每次可以选择两个下标集合S/TS/TS/T询问集合SSS和集合TTT位置的数字和哪个更大。交互库只会告诉你S≤TS\leq TS≤T或者S≥TS\geq TS≥T。要求在所有询问集合大小之和不超过 500100500100500100 的情况下得到整个aaa序列。1≤n≤1051\leq n\leq 10^51≤n≤105注意到数据中有

2022-07-11 20:13:33 164

原创 P7740-[NOI2021]机器人游戏【dp,bitset】

题目链接:https://www.luogu.com.cn/problem/P7740题目大意摸了小 R 有 mmm(1≤m≤10001 \le m \le 10001≤m≤1000)个机器人和 mmm 张纸带,第 iii(1≤i≤m1 \le i \le m1≤i≤m)个机器人负责对第 iii 张纸带进行操作。对于每张纸带,它们都被从左到右分成了 nnn(1≤n≤321 \le n \le 321≤n≤32)个格子,依次编号为 0,1,…,n−10, 1, \ldots , n - 10,1,…,n−1。

2022-07-11 18:39:44 353

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除