自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P3214 [HNOI2011] 卡农 题解

其中第一项为S的取值情况,第二种为出现位置的种数。在之前出现过,也不合法。设它的上次出现位置为。无序的不太好考虑,我们直接算有序的然后除以。确定(不一定合法),那我们就可以填第。个集合,合法的方案数。个集合是互不相同的且不能为空。个集合,每个集合里可以选。个集合里总共需要出现偶数次。个一定不合法,所以减去。确定且合法,则加上第。

2025-11-26 19:54:11 739

原创 P10668 BZOJ2720 [Violet 5] 列队春游(自己加强版) 题解

考虑拆开算还是一起算,拆开算的话有点困难,因为要和排列之后所处的位置有关。整体来说,我们按照值域做,对于每个取值求一个这个柿子,再求和。,任意一个小于它的数的概率出现在每个空的概率同样为这个(我们令小于。一旦出现在同一个空里,就把小于它的数放在。和dp无关,只是期望。前面,因为这样才有贡献)。呢,因为前面讲的转化柿子会多一个。也就是说,对于每一个紧贴着。的期望值,保留两位小数输出。,在一个格子里的,概率为。个小于它的,所以再乘。个空,所以最终柿子为。(如果不存在,规定为。,因为对于其他相同的。

2025-11-13 19:06:08 1011

原创 P10997 【MX-J3-T4】 Partition 题解

发现红黄绿橙的分界线呈两条对角线的样子。其中黄绿最高点不增,橙绿最高点不降。红:1,橙:1+1=2,黄:1+2=3,绿:1+1+2=4.,然后橙绿加一,黄绿加二。发现这样相应的分数是正确的!好像是一个trick?又因为黄绿线和橙绿线是互相独立的,分开DP即可。从上一列分界,或是更低的格子分界得到的最优值。再看这个分数怎么统计,先都认为为。代表这个格子左上角的分界点。

2025-11-13 18:44:25 277

原创 P3045 [USACO12FEB] Cow Coupons G 题解

原价,优惠,差价(本来选优惠,更改为选原价的差价)。假设优惠券都用完了:如果此时选原价比优惠+差价便宜,就选原价。如果选优惠+差价优,就选优惠+差价,并且把这个的优惠的差价加入差价堆,代表也是可以反悔的。贪心不一定是最优解,通过撤销(反悔)操作来获得最优解。刚开始选最小的,但有时候不给最小的用优惠券,而是给后面用,可能更优。,每头奶牛只能用一次。张优惠券,用优惠券购买第。选的时候注意标注哪些选过了。,代表不用补差价,也就是。的钱最多可以买多少?

2025-11-10 19:37:22 367 1

原创 P4198 楼房重建 题解

对于答案长度的合并,当我们合并左右区间时,左区间长度必不变,我们肯定会选择完整的左区间。(高度可以比原来大—修建,也可以比原来小—拆除,甚至可以保持不变—建筑队这天什么事也没做)。2.若该节点的左半部分最大值大于lst,则右半部分肯定都能选,答案是。的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的。初始时,所有楼房都还没有开始建造,它们的高度均为。,问每次完工后,能看到多少栋楼房。答案是:大于前一个的必选,小于等于前一选择的必不选。不是右半部分的sum哦。天过后小 A 能看到的楼房有多少栋。

2025-11-10 19:31:33 975

原创 P6879 [JOI 2020 Final] 集邮比赛 3 / Collecting Stamps 3 题解

个(虽然经过了那些,但是时间不合适可能取不到,所以要单独列出来),现在在左/右端点。很大,放不到状态里,于是我们就把状态答案互换!(忘了这个方法叫什么了),设取到。看到圆我们想到断环为链,但是对于跨断点的转移有点麻烦,所以我们直接换一种做法!秒内收集到这个雕像,那么雕像就会发出“唔噗噗噗”的声音然后爆炸。现在你在这个点,每一秒可以移动一米,并且他可以顺时针或逆时针移动。这个就比较好实现啦,具体见代码。来方便跨边界的转移,因为它的。的圆,从一个点出发,有。转移来说,可以采用刷表法。不为初始值的,最大的。

2025-11-10 19:27:00 931

原创 CF1997F Chips on a Line 题解

如果两个放置方案在某点的芯片数不同,则认为它们是不同的放置方案。如果两个方案在某点的芯片数不同,则认为它们是不同的方案。定义芯片放置的成本为:经过以上操作后剩余的最少芯片数。操作各自互为撤销操作,而且可以把芯片都移动到。定义芯片放置的成本为:经过以上操作后剩余的。,因为可以通过以下步骤将芯片数减少到。注意,放置操作中芯片的位置不能小于。注意,放置操作中芯片的位置不能小于。个芯片,并且要将它们放置在。每个点可以放置多个芯片。的放置方案数,并输出其模。个芯片,要将它们放置在。时线上的最小芯片数为。

2025-11-10 16:13:30 650

原创 P7406 [JOI 2021 Final] 集体照 / Group Photo 题解

对于第一部分,将要转移的等差数列看作0,其他看作1,求逆序对。也可以看作求这一部分之外的逆序对。发现如果计算每个数是很苦难的,因为会影响其他数的位置。所以我们分成两个部分。对于第二部分,直接计算顺序对即可,用值域做下标写二维数点。的等差数列,并且前一个严格小于后一个。每个台阶上只能站一个人,第。第一个部分先把这一段等差数列的数移过去。已经满足要求,不需要进行任何操作。一行一个整数代表最少的操作次数。第二部分再把等差数列内部排序。每次操作可以交换相邻两个数。个台阶上站的人的高度为。个台阶从低到高编号为。

2025-11-10 16:08:33 1023

原创 P4766 [CERC2014] Outer space invaders 题解

n个外星人要杀你,第i个在ai​出现,距离你di​,必须在bi​及以前被消灭,炮可以每次花费w的代价销毁距离在w及以内的所有外星人,问消灭所有外星人的最低成本。n≤300ai​bi​di​≤10000每次发射肯定是瞄准最远的那个,那么所有出现时间跨过此时的外星人都被消灭。外星人出现区间便分成了完全不交的两部分。如图:我们设flr​表示消灭出现时间区间都在lr之间的机器人最小花费。又因为每次肯定瞄准能瞄准的中最远的那个,所有设p。

2025-10-23 23:55:24 313

原创 P11013 「ALFR Round 4」C 粉碎 题解

起初有n张牌,第i张牌的点数为Ai​。重复执行n轮以下操作:先选择将第i张牌置于牌堆的最左边或者最右边;接着立即删除牌堆内相同点数的两个牌及之间的牌。问最多能粉碎多少张牌。DP+贪心(?模拟发现,每个牌有三种状态:一定被删,一定留下,留下或删除都可以。设fi0/1​表示第i张牌删去/保留后,剩下的最小牌数。那我们可以推出fi0​0fi1​minfi−10​f。

2025-09-29 22:55:23 698

原创 P4555 [国家集训队] 最长双回文串 题解

找最长的字符串满足AB,其中A和B均为回文串,且均不为空串。2≤n≤105。

2025-09-29 22:14:42 717

原创 P1989 三元环计数

先给每个点记录自己的度数,接着按照度数小向度数大连边,度数相同则按照编号从小往大连边的规则连边,最后我们要求的三元环。的度数大于等于根号,又因为我们把度数小的边向度数大的边连边,所以从。的度数小于根号,我们知道新图的度数一定不大于原图度数,所以。出发相连的点度数都大于根号,而这些点最多不会超过根号。时对与其相连的所有点都打上标记的方式来方便。条边无向图,求其三元环个数。这里我们可以通过在枚举。这样就非常巧妙地做完了,时间复杂度。的出边的个数最多也小于根号。

2025-09-28 23:57:10 962

原创 Manacher马拉车----字符串算法

可以O(n)复杂度计算字符串回文串的奇妙算法!

2025-09-25 23:22:10 190

原创 P5967 [POI 2016] Korale 题解

每次线段树上二分确定位置(每次找字典序最小且符合条件的点)。给出所有可能的项链排序,先按权值从小到大排序,对于权值相同的,根据所用珠子集合的标号的字典序从小到大排序。现在你可以选择若干个珠子组成项链(也可以一个都不选),项链的价值为所有珠子的价值和。个,队列中按价值排序。每次我们取出一个最小价值,出队同时判断答案,然后再加入。第二行按标号从小到大依次输出该项链里每个珠子的标号。小的项链的价值,以及所用的珠子集合。个正整数,依次表示每个珠子的价值。,表示反悔这一步的操作。类似P2048超级钢琴~

2025-08-15 00:00:00 1019

原创 AT F-Intervals 题解

个区间,保证所有区间同时覆盖一个点,每次将区间平移一个单位,问使得区间两两不交的最小操作数(端点处可重叠)。答案区间一定是连续的一段。而且最优的情况一定是中间的区间不动,一半移向左,一半移向右。,但向左的最多只会有一半,所以第二维开到一般即可,要不然容易MLE。对于转移,我们分别转移到向左,向右和中间三个状态。为偶数的情况,选任意一个均可或新增一个。个向左移动,没选/选了中间的区间。不用枚举这个中间的区间,我们设。先将区间按照长度从大到小排序。使整个区间与左侧区间不交。

2025-08-12 19:46:00 439

原创 CF1801D The way home 题解

(其实和P13534是一个题)

2025-08-12 11:58:00 667

原创 P13534 [OOI 2023] The way home / 回家的路 题解

如果可以,求出他至少需要举办多少场表演。现在,布迪尼需要踏上回家的旅程,目标是回到编号为。输出一个整数,表示布迪尼至少需要举办的表演场数。,也就是用将工作次数差值用于赚更靠后的钱,赚的一定比在之前赚更多。),分别表示城市数量、航班数量、初始卢布数和测试组编号。块钱,在一条边上移动需花费边权,在一个点工作一次赚。在第一个样例中,布迪尼最优策略是在第一个城市举办。在第二个样例中,布迪尼最优策略是在第一个城市举办。),表示在每个城市举办一场表演能获得的收入。,他都可以随时举办魔术表演,每场表演能赚。

2025-08-12 11:54:50 1687

原创 P9906 [COCI 2023/2024 #1] Kocke 题解

发现我们最终的积木墙可以在底座上平移而形成一些答案。在 Donald 的十三岁生日上,他的父亲给了他一套乐高积木。Donald 将在排成一排的乐高积木的底座上建造他的墙,底座上有。(最短区间长度,在两个直接来回放,答案只有。个可以放积木的地方。看到覆盖,正着不好做, 我们就考虑时光倒流。注意到,积木存在的区域一定是一段区间。,否则是这个位置最顶端积木的颜色。位,如果个位置没有积木,则是。他想要用这些积木搭一面墙。问一共有多少种不同的序列,对。个大小相同的积木,且第。表示积木数量和位置数量。

2025-08-09 01:11:00 712

原创 P10543 [THUPC 2024 决赛] 黑白 题解

除了一开始就走不到的情况,最后一定会剩一条路。我们问谁赢其实只和可操作数的奇偶性有关。而这条路无论如何走,奇偶性都是可以确定的(和n、m有关,自己画画图可以发现~),那可操作数就是原棋盘上所有白色棋子减去这条路。我们判断这个的奇偶性即可。的矩阵,有黑白两种颜色,小I和小J轮流选择白色点染成黑色,谁操作之后使得(1,1)到(n,m)无法通过走白点到达,则输。注意:最开始要判断起点是否可用。刚开始判连通性,可以用BFS。而统计可操作数,可以用。

2025-08-06 18:08:18 410

原创 CF37E Trial for Chief 题解

我们想到可以固定一个点一直点,这样一定是最小的(手动模拟一下即可)。发现数据范围很小,所以固定的这个点可以枚举,那如何求最小值呢,向不相同的颜色连边权为。的网格,初始全为白色,每次可以把一个相同颜色的四连通区域染成白色或黑色,求最少的染色次数得到给定的图案。跑最短路,走到每个点的最短路的最大值就是这个点所需的费用。找到最小费用便是答案了。的边,相同颜色连边权为。

2025-07-15 20:24:29 504

原创 CF1733E Conveyor 题解

产生一个史莱姆,所有史莱姆随格子方向移动。接着所有格子改变方向,向右变为向下,向下变成向右。若两个史莱姆相遇则合并为一个。每个格子经过的史莱姆一定是一半向下,一半向右的,这样就好转移了。很大,直接求不现实。我们把求是否有转化为求差分是否为正。每个格子初始方向向右。列通过的史莱姆数量。直接求不好算是考虑转化成差分。时的答案,时间复杂度。

2025-07-15 19:57:43 489

原创 CF1916D Mathematical Problem 题解

的时候我们可以把以上每个数后面加两个0,或者相邻数字之间加0。个数的数字相同如(169,961)。个正整数满足都是长度为。的完全平方数,且组成这。注意奇数这个重要性质。

2025-07-15 19:44:25 422

原创 [P9197 [JOI Open 2016] 摩天大楼 / Skyscraper] 题解

的贡献,而这四段都和连续段有关。同时要注意是否在边界上,若在边界则不用加贡献。把数列放到图上,我们要求的其实是图中的线的总长度。我们便利用这个差分的性质列出方程,设。求满足题意的排列的方案数对。不难发现,这里产生了四段。

2025-07-10 15:33:00 1019

原创 P4643 [国家集训队] 阿狸和桃子的游戏 题解

刚开始会想到DP,但是边+点实在不会做。那怎么转化呢,把边转化到点或者把点转化到边,这里我们把边转化到点。每个边均分权值到两个点上,此时两个点若归一个人选,则这条边会加上,否则一加一减,正好将均分的权值减去。两人都想要使自己的分数比对方多,且多得越多越好。如果两人都是采用最优策略的,求最终A分数减去B分数。这样我们就可以只对点权做了,直接排序,按照奇偶分配即可。轮游戏之后,两人都得到了一个顶点集合。条边,A和B轮流染色,每个点只能被染一次,A先手,=阿狸和桃子正在玩一个游戏,游戏是在一个带权图。

2025-07-10 08:00:00 672

原创 P10976 统计重复个数

想想动态规划,这里我们使用倍增优化DP(因为每个字符串是独立的,可以把。可以类比倍增求LCA,转移方程就是。直接暴力肯定不行,复杂度是。为字符串),求最大的。可能比较大,所以要膜。预处理直接暴力就好了。

2025-07-08 22:04:40 603

原创 CF1442D Sum

我们发现,最多只有一个没有选满的数组。如果不选满:由题可知:x1>x2x_1>x_2x1​>x2​ 且 y1>y2y_1>y_2y1​>y2​若不选满,则:x1>y2x_1>y_2x1​>y2​ 且 y1>x2y_1>x_2y1​>x2​然后发现:所以不会有大于一个没选满的数组。那么我们可以把每个数组看成物品,枚举没选满的数组,做背包问题。每个物品的价值就是数组中数的和,重量就是数组长度。直接这样做复杂度太高,我们可以把枚举不选的数改成分治插入其他选的数。递归区间 [l,r][l,r][l

2025-06-11 22:02:06 781

原创 P1220 关路灯 题解

通过题目发现,每次关灯可以选择继续沿着之前的方向关,也可以转方向关。每次关灯,相当于都是关一个区间(毕竟只要经过,就会把灯关了),所以可以设状态。计算消耗时,我们可以算点之间的距离×没有关的灯的消耗,其中没有关的灯消耗可以通过前缀和来提高效率。

2025-06-11 07:30:00 590

原创 G.Rikka with Intersections of Paths 题解

但是这样显然会在两个点公共部分不为单点的时候算重,那如何去重呢?我们发现公共部分一定是一条链,那我们就在这个链的深度最浅的地方对这个链进行统计,深度最浅的点也就是该点被路径覆盖且该点的父亲没有被点覆盖的点。也就是这个点被覆盖的部分减去这个点被覆盖同时父亲被覆盖的部分。这个点被覆盖且父亲被覆盖的统计数组我们称为。条路径,要求至少有一个公共点,问 Rikka 一共有几种选择方案?,那是因为不是选了一条覆盖父亲节点的就不算,只有当这。条都同时覆盖该点和该点的父亲才不算。两个点,把这两个点加。

2025-06-10 23:07:55 563

原创 P8774 [蓝桥杯 2022 省 A] 爬树的甲壳虫 题解

概率为pi​,那么到达i1的概率为1−pi1​,掉到0的概率是pi1​。设fi​为i到n的期望,那么fn​0。fi​fi​11−pi1​fi1​pi1​f0​表示fi​到n期望为:时间到i1的期望掉到0后f0​的期望。难道代码就是这样吗?并不是。我们观察式子发现求fi​时,未知数有fi1​和f0​,其中可以通过倒着求得出fi1​,但无法得出f0​。

2025-06-03 20:55:19 978

原创 P3806 点分治1 题解+淀粉质学习笔记

了,所以我们要让递归的层数尽量小,也就是每次找子树的重心作为子树的树根进行查找。为根的某个子树内, 那我们可以找到那个子树,进行第一类操作。然后把询问离线下来,淀粉质的时候统一处理。很大,所以需要针对修改过的值进行复原,否则会RE。但是如果树为一条链,那时间复杂度就变成了。对于 P3806,在遍历树时,我们可以用。的路径,可以由两个子节点。的路径,那它一定存在于以。记录有哪些长度的路径,

2025-06-02 10:21:15 774

原创 CF348D Turtles 题解

我们可以先看有哪些是一定相交的。首先,两只乌龟一定分别经过。,可以向下或向右,求两只乌龟不交路径对数,答案对。网格图,图中有些格子上有障碍物,两只乌龟从。一只乌龟的很简单,设。

2025-06-02 10:16:04 860

原创 P5680 [GZOI2017] 共享单车 题解

首先跑最短路同时存下每个点由哪个点跑到,以及跑向它的那条边边权。注意这里如果遇到跑向它的两个点路径长度相同的情况,要取最小的节点编号。的过程类似消耗战这道题。因为题目说的是阻断标记点。),如果是标记点,则必须断掉这条边,也就是。操作是把部分点的颜色取反,$ 1$ 操作是根据给定点和根节点(也就是前面的源点),建虚树,问在虚树上使得颜色为。如果不是标记点,那可以选择断掉其与父亲节点的连边也可以把子树内的关键点都和它断掉,即。,画出它的最短路径树。注意这里虚点不仅有输入的点还有根节点。不连通的所需的最小代价。

2025-06-02 07:40:17 1774

原创 P2391 白雪皑皑 题解

或许会想到线段树修改?这样会有很多重复的计算,考虑到倒着染色的话,每个点只会被染一次。那我们倒着用并查集维护连通性就好了!可以用fa数组改成下一个需要修改颜色的位置,染色的时候改成这个点的后一个位置,查询的时候跳fa。方法二:双向链表,每个链表表示一个区间,这样更快一点!并查集维护序列连通性。

2025-06-01 19:40:50 734

原创 P9936 [NFLSPC #6] 等差数列 题解

答案就是原序列变到答案序列的操作总和,也就是差值和:$ \sum\limits_{i=1}^{n}(s_i-a_i) $。因为是等差序列,再根据上面我们推出来的。的序列,每次可以给其中一个数加一,求让序列变成单调不增的等差序列的最小操作数。把这个式子拆开,发现是凸的。我们可以用三分来找凸函数的最值。和答案并不是单调的。把第二个式子代入第一个,得到。的最大值(题总不能越做越少吧)。因为要求最小操作次数,所以。如果你把最后的答案化简成带。次查询,给定一个长为。简单推一下,发现公差。,可以得出最终答案是。

2025-06-01 07:36:40 2076

原创 CF1061C Multiplicity 题解

从序列$ {a_1, a_2, …, a_n}$ 中选出非空子序列。观察到只会在因数处产生贡献,所以直接枚举。求有多少互不相等的合法子序列,答案对。的因数,在因数处转移。,一个子序列合法需要满足。

2025-05-31 20:02:14 606

原创 CF1728D Letter Picking 题解

的字符串(n为偶数),Alice和Bob两人分别先后依次操作,Alice先手,每次操作将字符串的两端其中一个字符移动到自己字符串的开头,初始时每个人的字符串为空。双方都按照最优操作,最后谁会赢,或是平局。当最后只剩两个时,若两个不同,则 Alice 可以取较小的那个取胜,若相同,Alice 也会在前面的操作中选小的。对于 Alice 的两种取法,Bob 都要有应对方法。只有在区间长度为偶数时有意义,那我们可以在枚举区间长度时只枚举偶数。是偶数,所以不存在 Alice 取的字符串比 Bob 长的情况。

2025-05-31 19:56:59 680

原创 虚树学习笔记

如何更快把LCA记录下来呢,我们可以把关键点按照dfn序排序,以此记录相邻的关键点的LCA,并把它们加入。从图中可以看出,我们需要记录关键点及连接他们的LCA,同时他们的祖先关系也没有改变。最后,在序列上枚举相邻的两个点,求得它们的LCA,并连接LCA(x,y),y。对于每个选定,要分别求: 这些新通道的代价和,新通道中代价最小、最大的是多少。对于一类树上DP问题,每次询问所需要查询的点为关键点,当关键点的个数与。为了提高使用关键点的效率,我们把信息浓缩,使大树变成一棵小树。如下图,红色是我们的关键点。

2025-05-31 17:48:36 805

原创 2023.10.1 kdy CSP-S模拟赛1

T2,读题,读懂了,胡一个贪心,样例过了,大样例又错了,以为是fc的问题,后来发现是我的问题!那我们看什么样的情况下要删掉,都知道最小的字典序一定是递增的,所以找到第一个递减的删掉就好了!发现是个完全图,非常的好,每两个点之间都有边,而一个点它产生的最小边权一定是排完序后和左右相邻两个点产生的。即使是弱化版的斯坦纳树,小可也不会做,于是他提出了一个乱搞的做法:建立一个新的完全图。接下来做T1,做做做,样例过了,大样例错了,检查,哦原来是DP细节写错了,太菜了,,看了看T3和T4,找规律失败,骗分,摆烂。

2023-10-02 22:53:53 145 1

原创 小总结-数据结构-分块

分块其实算是一种思想:把数据划分成几块,在块上预处理信息,询问时可以直接用。如果要在序列中询问一段区间的和,并且可能有增加区间的值。分块的时间复杂度和分的块的大小有密切关系,一般会设为。对于每个序列里的值,记录他们自己的值和所属的块。前面第一个整块中间的值。(图里的圈1和圈4)中间的整块的和加上(图里的圈2和圈3)。(所以查询散块的时候不要忘记把这部分加上)对于每个块,维护左右区间和和预处理的和。中间的整块的预处理的和加上要增加的值。左侧的散块原序列的变量加上要增加的值。的块,预处理每块的和。

2023-07-28 23:17:14 197 1

空空如也

空空如也

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

TA关注的人

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