自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(184)
  • 收藏
  • 关注

原创 航电春季赛(七)1010 网格计数

考虑每个格子的选择,观察其所处在的L字形,也就是这个格子和其上面的格子和右边的格子所组成的集合,这些格子的数都不相同,并且该格子大于其上面的,小于其右边的,有明确的排名。我们先找到满足每个L形里面所有数都不同的方法,然后再排除掉大小关系不正确的情况。的情况是合法的,即刚好满足当前格子的数大于上面,小于右边,因此总共需要乘上。,因为其所在的L形仍然保持无序,也就是每个数字本质上都是相同的,有。的格子,第一行填行号,第二行填列号。删除掉不合法的情况,对于当前格子。进行填数,产生的方案数为。

2025-04-19 16:46:20 683

原创 [gym105755] Bay Area Programming Contest 2025 K. Killer Cows

的暴力需要每次枚举子集,但实际上运输过来的时候那些奶牛怎么选都是可以的,因此我们实际上是能够一头一头的选。合法的情况下去到另外一边,另外一种就是再从对岸选一头奶牛过来(num<k)。,但是我确实没有想到。我以为是要用什么性质,但是实际上就是一个技巧。边(0表示左边,1表示右边),对岸奶牛为。头奶牛运送到另外一边,问最少要送几次。组奶牛不能在同一边,每一次最多只能将。因为实现是10s,所以我第一次用。有两种转移,第一种就是在。头奶牛运送过河,其中有。表示我已经从对岸带了。

2025-03-06 09:02:16 879

原创 ARC193总结

第四题的突破口是最左边的1和最右边的1,每次操作二者都会相互靠近,直到这两个的距离和需要达到的串的二者距离一样才停止,然后再平移到对的位置,因此只需要判断能不能匹配到,并不用考虑最小贡献,因为左边的1和右边的1都有可能进行依次操作,因此我们对四种情况都判断一次即可(准确是两个,因为可以用奇偶性排除掉不符合要求的另外两个),判断的时候考虑响铃两个1之间0的个数,因为奇偶性的影响是相同的,因此只要能匹配(即当前的0个数>=标准差相应位置的0的个数)就匹配,奇偶性不同让后面的来凑。这次ARC一共四题,做了两题。

2025-02-28 15:17:51 172

原创 CF794E Choosing Carrot

有一个序列,两人轮流取走第一个或者最后一个数,剩下一个数游戏结束。先手想最大化,后手想最小化。对于k=0,1,2,…,n-1,假设先手在游戏开始前操作k次,那么游戏结果是什么。手玩可以发现,如果是奇数,因为两人都有能力强行让最后一个数在中间三个,因此只和中间三个有关,如果中间是最大的,那么答案就是两边的最大值,否则就是中间。如果是偶数,那么就是中间两个取最大的。

2025-02-20 13:16:14 162

原创 nim游戏及其进阶 [SDOI2011] 黑白棋 [SDOI2019] 移动金币

把n拓展到更大,就会发现偶数级阶梯(现在假设地面为第0级阶梯)的石子时没有意义的,因为如果把偶数的石子移到奇数的石子能形成更好的局面,那么后手就能把这些石子再往移动一级,可以依次从第二级,第四级往下递推思考。然后想到一个比较奇怪的事情,以前学nim的时候我就一直十分不解为什么结论会和xor有关系(因为异或是一个二进制的操作),因为异或实际上是把每位相加再模二,然后就感觉可能会是模数变化(变成d+1)这样操作了肯定就不为全为0了,或者是进制变化(比如变成d+1进制之类的)。

2025-02-19 22:09:14 239

原创 [NOI2006] 最大获利

思考了很久以后发现可以假设先把所有边权选上,然后思考最多保留多少,也就是要么变成某个最小割,如果这条边想要保留就要花费选择点的费用,不然就要花费删掉这条边的费用。又思考了很久,想到了“要么就要删掉一条边,要么就要选择两个点”这个性质,然后意识到可以以点代边,也就是二分图,左边是边,从源点连。给你一个有点权和边权的图,让你找出一个子图,使得其边权和-点权和最大。第一眼感觉要用网络流来做,因为这个问题有非常复杂的性质。的边,右边是点,往汇点连。的边,然后对于每条边往。感觉是一道很难的题。

2025-02-19 13:36:07 309

原创 CF388C Fox and Card Game

桌子上有n堆牌。每张牌上都有一个正整数。Ciel可以从任何非空牌堆的顶部取出一张牌,Jiro可以从任何非空牌堆的底部取出一张牌。Ciel先取,当所有的牌堆都变空时游戏结束。他们都想最大化他所拿牌的分数(即每张牌上正整数的和)。问他们所拿牌的分数分别是多少?

2025-02-10 20:13:49 819

原创 ARC191C. A^n-1

值得一题的是,我pollard_rho最开始只检验10次,但是过不了,改成20次就可以通过。,需要用pollard_rho把素因子分解出来再检验是否正确,然后判断。这道题帮我完善了判断素数和原根的板子。应该是一个素数,因为素数的数量大概为。,让你求出一个整数对。从原根的角度想,显然。然后找这个素数的原根。是不是都不为1即可。

2025-02-06 12:03:19 825

原创 Gym - 101775L SOS

后手同理,但是先手会阻挠,把O放在中间,如果7*2=14的话有一边会因为O的阻碍形成不了,16的话就没问题。先手想赢肯定是要构造出S_ _S,而且要尽早,所以应该S放中间,然后肯定有一边能够形成,所以是7。两个人在一个1*N的网格上填字母S或者O,谁先形成SOS就算赢,让你判断谁会赢或者平局。根据奇偶性,如果形成这样的情况,那么先手在奇数可能赢,后手在偶数可能赢。手玩一下感觉很奇怪,因为不知道该怎么赢,所以去最后为什么会有人输。后面发现是形成S_ _S这样的情况走一步一定会输。

2025-02-04 17:46:16 213

原创 2023CCPC-Final A. Add One 2

然后求贡献,我们先假设从x开始只能增加,不能减少,那么最好的方法肯定就是从左往右遇到比自己更高的就增加到这个高度(初始高度为。想了一个上午,主要是突破口不好找,找到突破口以后很快就能出来。这些可以减少的位置都是固定的,因此可以先处理出来然后再枚举。要考虑若干个前缀和若干个后缀能够形成的序列形态。个位置减少,使得减少的总量最多,很明显对于不同的。然后发现只要减少1是需要固定的(也就是固定。个后缀,那么这个序列从左往右就是从。),增加1完全可以看情况来决定。,现在让你用最小的代价使得。

2025-02-04 13:04:00 857

原创 CF1098F Ж-function

可以把贡献拆成两部分,第一部分是求原串中的LCP之和,显然这样有一些超过。第二部分就在前一题的基础上多进行一些对长度的分类讨论就行。第一部分先用SA,然后正着扫反着扫用分块维护。,而这些都是border,然后就用。的方法来修正这一部分的贡献即可。和前一道题一样,用了根号做法。

2025-01-29 23:12:59 844

原创 [BJWC2018] Border 的四种求法

循环节能够延申到的长度, 然后找到当前与之对应的位置判断是否合法(这里比较抽象,稍微思考即可理解),然后把这些位置全部跳过即可。整整想了三天,一开始想用数据结构但是想了很久也不知道怎么维护,然后从border的性质入手想出了一个。,这样就不能暴力求解了。出现的每个位置,然后判断每个位置能不能成为 border。的循环节能够延申到的最长长度。类似的字符串,那么出现的位置就会是。下一个出现的位置然后暴力求解即可。,那么其每次出现的间隔至少为。,那么其出现的次数不会很多。,那么循环节的长度为。

2025-01-25 21:13:58 787

原创 P5161 WD与数列

如果认为两个数列是匹配的,当且仅当它们长度相等并且给其中一个数列的每一个数加上一个整数能使得二者相等。先做差分,就变成了判断是否相等了。不过要先把长度为1的情况统计,也就是让。的贡献,然后枚举少的一边求,发现可以用线段树合并求解,时间复杂度。现在给你一个数列,让你求有多少对不相交的子串是匹配的。数组建笛卡尔树,然后进行分治。

2025-01-22 15:46:02 457

原创 [八省联考 2018] 制胡窜

值得一题的是,我的代码在洛谷一遍就过了,但是在loj拿了0分,测试一下发现本地是对的,但是loj评测机的环境就是错的,我尝试交打印调试信息的代码,结果发现加了几个cout输出就正确了,非常奇怪。相等的子串,并且两两相交部分不超过1,那么一定是任意整数对都满足条件,我们把这种情况特判一下,剩下的情况就有。对应的点为 p,考虑 p 的 endpos 集合,假设其大小为 m。,只要保证选择的空隙都在最左边的出现位置和最右边的出现位置之间即可。为不与最左边出现位置相交的出现位置的 endpos 集合,然后枚举。

2025-01-20 22:31:59 394

原创 CF700E Cool Slogans

因此我们只需实现两个功能:(1)查找某一段下一个出现的位置,可以用sam和线段树合并处理;(2)求等差数列的长度,也就是新加的那一段重复出现了多少次,可以用哈希+二分来求。就是kmp一连串的border,而kmp的border有一个常用的性质:会形成log段等差数列。我看题解里没有人用kmp里border的性质来做,就来写一发。的子串,使得后一个在前一个中至少出现两次(可以有重叠部分)。以此类推,直到找不到位置。然后统计出现次数,对每个。手玩一下,发现只需要先固定一个起点。求完以后取最大值即可。

2025-01-20 11:54:42 556

原创 CF1063F String Journey

这道题给我了一个重要的启发:就是一下子理不清楚思路的时候可以打一个暴力,然后再思考怎么优化这个暴力。给你一个字符串,让你从中提取处最多的连续子串,使得这些连续子串在顺序保持不变的情况下满足后一个是前一个的真子串(必须非空)。也有单调性,所以可以用倍增来找到点,点内开个vector存段,在点内寻找的时候用二分,就能做到时间空间都是。1.后一个的长度是前一个的长度+1,即在后一个串的前面或者后面多加上一个字母,接下来我们强制这个条件满足。先把字符串反转,那么条件就变成了前一个是后一个的子串了。

2025-01-19 12:56:14 500

原创 2024CCPC济南 E. The Chariot

这种情况肯定是有一辆车一直开,其它的车都只开A的段。米的最小花费是多少。(给的数字都是高精度),如果你可以乘搭无限多辆出租车,那么前进。那么每辆出租车应该要优先把B的路程走完。然后考虑怎么处理着一些情况。一道很恶心的分类讨论题。然后假设剩下的情况都是。

2025-01-13 15:42:58 741

原创 P5576 [CmdOI2019] 口头禅

如果这个节点的儿子已经贡献了这一条线段,那么这个节点就不需要再贡献这条线段了。也就是说只要在这个树上启发式合并,合并后新产生的线段数量。然后就把询问离线一下,拿一个树状数组扫描就可以了。先建出广义SAM,然后考虑每个节点贡献的线段。个01串的最长公共子串长度。

2025-01-11 09:41:45 247

原创 P5435 基于值域预处理的快速 GCD

假设值域为n让你实现一种可以On预处理,O1查询的gcd。

2024-12-26 16:05:08 729

原创 [十二省联考 2019] 字符串问题

给你一个字符串s,然后有na​个A型串和nb​个B型串,这些串都是s的一个子串,以区间的形式给出。有些A支配了B,给出支配关系。现在要你以某种顺序选出A型串(可以重复),假设选择了k个,使得对于每一个i∈1k−1,满足有一个被其支配的B串为下一个A串的子串,让你求最大长度和。

2024-12-25 11:16:57 894

原创 P1368 【模板】最小表示法

后面想着ans和i应该也有相同的性质,如果比不过就应该直接跳,这样就想到了双指针的做法,基本和书上一样了。假设当前最优的是1开头,然后我们用从2到n枚举以i开头的表示和当前最优的哪个更优。后面仔细分析了一下发现复杂度不对,主要是更新那个地方.可以构造数据。特别地,如果n个字符相等,那么就出现了循环节,直接退出即可。最近想起来了这个问题,记得当时做《算法竞速进阶指南》见过。不过现在忘记的差不多了,打算重新推一次。

2024-12-23 11:07:49 292

原创 洛谷P6292 区间本质不同子串个数

对于每个i,都要把子串[1,i]所处的点到根节点全部节点的最大endpos都赋值为i,这就相当于lct的access操作,当然access中每次splay以后都要把原来的贡献剪掉。从1到n考虑所有R=i的询问,显然parent-tree上每个节点应该要考虑最大的endpos,然后要给。给你一个字符串,每次询问输出区间[L,R]生成的子串的本质不同的子串。,如果强制在线只需把修改放到可持久化线段树上就行了。,全部加上1,查询就是。

2024-12-16 14:41:14 784

原创 SP687 Repeats

题意给定字符串,求重复次数最多的连续重复子串思路有两个方法。

2024-12-14 23:30:01 991

原创 线段树合并的复杂度证明

有时候线段树合并的时候要新建节点,因此我就很好奇这样的空间复杂度到底是多少(显然时间复杂度和空间复杂度是一样的)。因为parent-tree上线段树合并是为了维护endpos集合,因此最终会合并成一棵满二叉树。最近在做sam,经常遇到要在parent-tree上面线段树合并的题目。考虑每一个节点需要合并的最多次数,也就是叶子节点的个数。常数为2,一部分是建的链,一部分是合并产生的新的点。我们知道,每一层总叶子都是n,有log层。,n是字符串长度而不是sam的点数。我就试着自己证明一下。

2024-12-13 10:00:04 259

原创 [HEOI2016/TJOI2016] 字符串

第二段没有超过a的限制,那么很明显答案就是区间的长度,因为区间长度递减,因此我们只需要统计第一个没有超过a的限制点。第一段超过a的限制,仔细观察发现ed会随着你往上跳单调递增,因此我们只需要用倍增直接跳到最上面的一个超过a的限制的点,然后求答案即可。不用考虑子树里面的点,因为子树里面的长度肯定都超过要求。然后就需要考虑一下a的边界条件,然后就会发现如果从d所对应的点一直往上跳,那么点就会分成两段。我们肯定要找到当前的点的endpos集合中<=b并且最大的一个,记为ed,这样才能求出贡献。

2024-12-12 18:48:08 716

原创 2024CCPC哈尔滨:B题Concave Hull

值得注意的是,我一开始用double,但因为答案是10^18级别的,double的尾数位只有52位,因此会掉精度,所以我们要用long long来做,处理的时候把面积都乘上2就行。平面上有n个整数点(无三点共线),然你找到最大的简单非凸多边形(输出面积的两倍),如果不存在面积严格大于0的简单非凸多边形,就输出-1。后面发觉只需要把里面的点再建一个凸壳,这个最小三角形肯定要选择内部凸壳上面的点。一开始想着怎么样求凸壳内部某个点与凸壳形成的最小三角形(底边为凸壳的边)。因此只需要用两个指针扫一下就行。

2024-12-12 08:39:31 214

原创 CF2046D For the Emperor!

个信使,信使可以复制无限数量的宣传单给其他同一个点的信使,也可以沿着边走,你开始可以选择给其中的几个信使发宣传单,让每个点都被拿着宣传单的信使经过,要你输出开始给最少的宣传单能让信使完成任务,或者判断任务无法完成。首先肯定是Tarjan缩点,把一个环缩成一个点,点的信使数量为全部点数量之和,记为sum。因为B足够大,因此费用流肯定会在满足到达尽量多的点的情况下使得经过。后面第一个参数表示流量,第二个参数表示价格。这个和有约束的网络流是同样的道理。B是一个足够大的常数。然后利用费用流完成。

2024-12-10 09:57:37 500

原创 洛谷 P5212 SubString

给你一个字符串,每次操作可以在这个字符串后面多插入一个字符串,或者查询某个字符串的出现次数,并且强制要求在线。很明显需要先建一个SAM,然后在parent-tree上面求解,要维护某个点的子树和。但是现在问题来了,parent-tree是会不断变化的,所以我们要用lct维护。每次插入一个点,就往这个点到1的路径上把每个点的权值加上1。

2024-12-06 14:09:39 176

原创 [CCPC 2023 秦皇岛] K. Make SYSU Great Again II

给你一个n*n的方格,你要给每个格子填上04n2−1中的数,要求每个数不超过5次并且相邻两个数取AND为0。

2024-12-03 19:20:11 280

原创 【NOI2014】购票

因为线段没有区间限制,所以李超线段树只有一个log,但是树剖有两个log,一共三个log,不过考虑到其中两个log(重链和李超树)的log常数比较小,所以可以跑过去。我们只需要维护前面的一部分,这就是相当于插入了一条。一个根向的树,边有边权,每个点可以往上跳不超过。上方最小的一个线段上的点,插入比删除好维护。,让你求出每个点到达根节点的最小花费。的距离,并且到达一个祖先,花费为。所以我就在树剖上面套李超线段树。考虑了很多种思路,发现如果维护。

2024-11-28 22:51:09 746

原创 洛谷P3975 [TJOI2015] 弦论

最近开始做command_block的题单https://www.luogu.com.cn/training/5322#problems。现在得到了parent-tree,容易知道,儿子所代表的字符串一定比父亲的大(因为父亲是其前缀)。因为比较字典序需要从头开始比,但是SAM只能处理endpos,所以我们把字符串反着来建。我们肯定要先预处理出每个点endpos中的任意一个元素,然后假设父亲所代表的长度区间为。求一个字符串中第k小的子串是什么,要求能够相同统计多次或者统计一次。,那么只需要比较儿子之间的。

2024-11-16 09:10:45 270

原创 洛谷P4126 [AHOI2009] 最小割(最小割的可行边和必须边)

网上有很多比我更加简洁优美的做法,这里只介绍一种比较好想到的思路。

2024-10-31 09:33:54 575

原创 thucam day1: H. Ancestral Problem

不过仔细观察发现,复杂度的瓶颈在于第一部分,比如菊花图,会导致每条边都要把全部的点建一次图。然后看右边剩下的点中,有哪些能够沿着残量图从汇点出发,经过这个点,再到达原来没有匹配的点。值得注意的是,第一棵树的根节点不一定会和第二棵树上面的点对应,因此我们还需要再特别判断一次点。,但是空间限制为256MB,因此我们把边的流量数组设置为bool,这样只用开。的子树,是否能与第二棵树中(当u为v的父亲时)v的子树匹配。的儿子为右部分建立二分图,判断右边是否每个点都能匹配上。3.匹配数

2024-10-10 09:01:34 573

原创 [NOI2022] 二次整数规划问题

稍微思考你会发现无论矩形怎么平移,最优值一定在凸包上,直接无脑的把凸包整个找出来即可,只需要找到x最小和x最大,然后分治找即可。然后我们发现,除非必须要填1或者5的位置,都必须填2,3,4。因此我们可以预先求出来这些数,然后剩下的只用考虑填2的数和填4的数,就足以计算出式子。如果全部在第三象限,那么只用考虑上凸壳(当然你没有必要判断,你只需要把凸壳上的点求出来,然后全部求一次即可)。为了方便用切糕模型求解,我们把三个统统取反,然后求最小值,如果有负数,那么就把全部加上一个值使三个数都是正数。

2024-10-09 20:33:14 1039

原创 P3227 [HNOI2013] 切糕

的得分,但是相邻两点之间的差值有限制,让你求最大得分。连一无穷大的边,因为如果相邻的链选择的点。那么就会有流量剩余,因此就能进行限制了。的矩阵,每个点可以选择一个值。考虑限制,只需要从这条链的。

2024-10-01 18:22:19 748

原创 2024北京市赛 A.不要玩弄字符串

两个人轮流填0或者1,如果某人填完后某个字符串第一次出现,那么这个字符串的分值加到这个人的总分里面,每个人都要最大化自己的分减去另外一个人的分。如果不存在前面的点,那么我们就考虑当前能在已经确定一部分的情况下能到达最大的点,再把这个点变成确定的。如果走到了某个节点以后,状态会发生改变,那么我们就把这个点设置成确定的。如果某一个点能走到的点都是确定的,那么显然它也是确定的。很明显,首先建立AC自动机,然后用状态压缩。现在难点在于,如果出现了环应该怎么办。,接下来先手能得到的最大差。,已经填完的字符串状态是。

2024-10-01 15:50:32 796

原创 P5540 [BalkanOI2011] timeismoney | 最小乘积生成树

很显然这个东西又可以用最小生成树求解,因此这就变成了一个递归求解的过程。最小的点一定在凸壳上面,这两个都可以用最小生成树来求,分别设为。最远的点,这个点肯定也在凸壳上面。我们用差乘来求距离。,很容易发现这一定是在所有点的下凸壳上。根据定理,下凸壳上的点数量很少,大概是。条边的无向图,每个边有两个权值。首先,对于一棵生成树T,我们令。现在考虑怎么找出这个凸壳。就可以对应平面上面一个点。这网上有很多种说法。

2024-10-01 09:15:41 559

原创 [NOI2022]移除石子

但是这很明显是不正确的,因为你只要手玩一下,观察怎么样才可能把石子删除,你就会发现这里面涉及到非常复杂的东西,基本上不可能用结论来概括,所以要考虑用dp。重要的性质我基本都观察到了,不过我考虑状态的时候出现了一些问题,主要就是基本功不够,无法再推下去了。,但是不同形态之间可以用极少石子使其转换成另一种形态,我们爆搜一下,发现状态很少,直接dp就可以了。因为k的恰好很麻烦,但是我们很容易发现能将其变成至少,只要特判k=1,全0,或者3个1的情况即可。中的一个,问有多少种可能性,使得添加恰好。

2024-09-25 23:09:41 974

原创 2024ICPC网络赛2记录:CK

不过看到异或就知道这个异或肯定不是白给你的,大概就是用字典树,一开始我以为是把两个数组分开建字典树,后面发现要一起建,然后就想到用dp来维护。这一把我们三个人手感都很好,前六题都是一遍过,然后我又切掉了非签到的E和C,最后时间不是很多,K只想到大概字典树的思路,细节不是很懂就直接开冲,当然是没有冲出来。我们想了很多错误的思路以后才开始思考kmp,然后就想到了可以一直跳kmp,只需要把相同的合并起来,如果能匹配的就全部一起跳过,不匹配的就直接删掉,时间复杂度O(n)。看上去要求某种匹配数的个数,有点吓人。

2024-09-25 19:16:28 483

原创 几有趣的位运算技巧

我们都知道最小可以用x&-x来实现,但是最大要怎么实现呢,感觉应该没有能够左右翻转的位运算。今天ICS课上讲了两个很有趣的位运算技巧。然后老师给出了一种常数非常小的做法。所以基本可以用类似二分的做法来做。实现一个函数,判断x位的奇偶性。题目1,你要实现一个函数。返回x的最大一位1。

2024-09-23 14:34:52 287 1

空空如也

空空如也

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

TA关注的人

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