自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 问答 (1)
  • 收藏
  • 关注

原创 2023 (ICPC) Jiangxi Provincial Contest ABCHIJKL

多练思维是真的有用的,K题没有想象中的那么难,我们发现交换只是让相邻两个数之间的差值换了个位置(自己手模一个算一下和旁边两个的差值即可发现),所以我们只要把差值排个序就做完了。是每件物品的体积,我们想让种类尽可能的多,那么肯定是从1开始,公差为1的等差数列的体积是最优的,那么可以求出体积最大是。跑多重背包,用二进制优化即可通过本体,更优秀的,我们可以用bitset优化转移,可以跑的更快。正难则反,考虑小于等于的个数不好考虑,我们可以用总数减去大于的情况。签到,感觉有点诈骗,修改其实只和两端的有关,询问。

2025-04-16 23:31:49 679

原创 2022 CCPC Henan Provincial Collegiate Programming Contest K 复合函数

将第二个条件转化成实际意义就是,两个点都需要通过移动进入环内并且,二者在环内的路径之差是环长的倍数,也就是最终会落在同一点,了解完需要的条件后我们需要计算答案,对于第二种条件,我们只关心能否走进环,并且路径差是环长倍数。至此,所有的步骤已经清楚,我们先进行连边,同时建立反图,在正图上跑拓扑排序,找出所有环,对每个环进行深搜,求出所有环外点的深度,求出每个环长的深度数组并求前缀和,回答每个询问即可。连边,这一步转化应该是比较容易想到的,通过手模样例,会有类似的灵感,那么。的点有多少, 深度小于等于。

2025-04-13 19:53:02 289

原创 2022 CCPC Henan Provincial Collegiate Programming Contest I

赛时磨了两个小时,模拟每一秒的变化就行了,模拟题要想清楚写这样思路比较清晰一些。

2025-04-10 20:39:10 197

原创 The 2024 CCPC National Invitational Contest (Changchun),第17届吉林省赛 C

是一个单位阵,所以可以直接拿掉,那么刚好和注意到的和前面的计算贡献的方法对应起来,那么按照题解说的固定前缀即可算出最终答案。题解是什么意思呢,首先我们需要知道的是,斐波那契数列可以用矩阵快速幂和矩阵乘法求解。题解横着放也是一样的,根绝题解给出的例子,手模一下发现是对的,如何去理解?我们通过打表可以验证其正确性,我们把那个题解的式子展开一下。再贴一份队友的代码,队友太会DP了。相乘结果都是A,所以可以理解为。让斐波那契数列往下递推一次。的求和答案怎么算出来的呢?和我上面写的矩阵相似,,也就是没有,二进制。

2025-04-09 21:21:33 739

原创 2024 Jiangsu Collegiate Programming Contest H

记录一下为数不多的网络流。

2025-04-08 17:47:41 188

原创 The 18th Northeast Collegiate Programming Contest G

看网上好像不怎么找不到代码,发一份出来。

2025-03-14 16:07:16 204

原创 2024 CCPC Liaoning Provincial Contest K

引入一棵时间的线段树进行维护每个时间对应的区间的信息,即将加入和删除操作看成一段时间的加入,然后进行DFS,就可以。首先不考虑删除操作,那么插入元素这件事情就是DP(背包或者可达DP) 做的,设。,每次转移只与上一次的状态有关且转移的偏移量相同,那么可以用。不方便维护,这里我学到了一种技巧,为能否用S中的元素组合得到。引入删除操作,由于单纯的使用。对状态转移进行优化,,这样的时间复杂度是。

2025-03-13 20:25:23 991

原创 2024 CCPC Liaoning Provincial Contest D

题目是说每次选择前面的所有未选择的点用最小的凸多边形覆盖,可是在二维平面平动和转动,问。,那么显然每次选择两个点更好,题目就变成了,n个点划分成若干线段,线段和。看似解析几何实则DP,

2025-03-13 11:18:47 794

原创 The 18th Northeast Collegiate Programming Contest H

节点,在这个节点到x之间,x走的步数都不超过mid.这样对于每一对点我们可以知道符合条件的节点是哪些,对这些节点取个交集即可,这里我采用了dfn序+差分求前缀和的方式。那就说明在x到LCA的路径内部就已经会走mid步,就是官方题解中的mid级子树内,否则我们找到距离y 的。至此,我们的check策略就清楚了,对于每一个点对,求出符合条件的节点范围取交集即可,时间复杂度。因为要让两个点的距离都尽可能的小,所以自然的选取两个节点的LCA会是第一直觉.随便选择一个点作为根都是可行的,否则,

2025-03-09 21:29:55 1069

原创 Codeforces Round 863 (Div. 3) E. Living Sequence

是一个一会儿单调递增,一会儿没有增量的一个函数,我与我们要找最小的符合上述方程的解。头一回用不是正解的方法做出来,也是比较极限,直接说做法就是。单调递增(并非严格) ,题目要找的其实是。这样一个解,我们去二分。

2025-02-02 20:48:48 413

原创 2024ICPC成都——B.Athlete Welcome Ceremony

那么显然a,b,c都是可以尝试分配的,这样设计f转移式比较好写,直接看代码即可。数量,一开始,只要刚好把问号数量分配完的方案才会有值,先把这个处理完就可以开始前缀和计算了。次询问,每次给定三个数x,y,z表示分别制作了x件a,y件b,z件c,问分配方案数。:前i个位置,分配了j个a,k个b,第i个位置是’a’+l的方案数。是每个人的衣服,相邻的人的衣服不可以相同,给定字符串,第。+三维前缀和的题,题目的n很小只有300,这就引导我们往。个人的衣服,如果是问号则是待分配,计算高维前缀和,我们要记录。

2024-11-19 21:10:09 861

原创 2024HNCPC G - Utakotoba

直接贴码了,注释可能有误,欢迎指出。

2024-11-11 21:19:00 242

原创 2024湖南省赛 J. Beautiful Sequence

,那么只需要解决最后一个问题了,怎么找他最多能拓展到哪里?我们可以查询即将插入这个数位置的逆序对个数和顺序对个数,如果他在两个数组中的逆序对个数或者顺序对个数不一样那么就说明他们的相对位置是不同的,那么就是不可以插入的,这个可以用线段树做到,按照位置建线段树,因为插入的数是递增的所以找到的位置比他小的个数就是顺序对个数,找到的位置比他大的就是逆序对个数。首先发现的性质是如果是beautiful的话,他如果要继续拓展的话,只能是最小值-1 或者 最大值+1,那么我们可以固定最小值(

2024-10-22 20:26:42 1067

原创 2024江苏省赛E. Divide

一道主席树的题目,可以先最整个区间一直进行除以2的操作,问区间[l,r]操作后结果,其实就可以转化为求区间第k+1大的结果,反转一下就是求区间第。每次操作会把区间内最大值除以2,q次询问,问[l,r]操作k次后的结果是什么。小值,这样就是比较裸的主席树了,需要注意的是每次插入操作的时候,需要把数从。加入然后除以2,直到为0停止,至于版本的话就是索引。

2024-10-21 20:34:14 582

原创 [NOIP2016]天天爱跑步

哪些情况会对答案有贡献,必要条件显然得是,某一条路径的起点或者终点在以。序计算贡献比递归调用好写也不饶,但谁让我是犟种呢。,可以开两个桶解决,每次计算询问对应桶的值即可。路径会被计算两遍,如果是以x为起点和终点的。的路径对上面的节点是没有贡献的,要删除它们。那一时刻人刚好到那里才会让答案。为根的子树里面,然后还有刚好在。的话,要去重,记录一下以x为。条路径,人沿路径跑,只有在。左式和右式都只与自身有关.对于情况一,可以看成是与。对于情况二,显然要满足。也是学别人知道可以用。做的,考虑对于一个点。

2024-10-04 11:40:30 1004 1

原创 2024杭电多校7——1007创作乐曲

离散化的处理手法,因为我的线段树索引要从1开始用所以,离散化的时候用的是lower_bound(…)+1,对于左界来说这样没有问题,但是对于右界来说就有问题,如果我的右界不在离散化数组里,那么lower_bound(…)本身就相当于已经映射好的正确的离散化右界,+1会出错,这个画个图立得。首先询问最少删除多少音符(一般人来说不太好处理),我们可以考虑它的对立面,最多保留多少字符这是比较好处理的。.每次dp的时候用线段树查询即可,dp的时间复杂度为。值没有被更新,二者作用等价,如果更新了,那么用。

2024-09-25 19:57:51 644

原创 2024杭电多校3——1007单峰数列

我从没有看见过的全新版本,不过据说挺常见的。线段树维护题目里询问的东西,是否一样,单调还有单峰,小细节挺多的。建线段树开始是从2开始的,因为差分的第一个元素是。,更新只需要更新两个点即可,注意询问的区间范围,还有一点就是如果询问的区间长度是1的话直接特判掉。,同理,询问的时候也要是。

2024-08-14 16:43:51 611

原创 2024杭电多校2——1011在A里面找有C的B

解法很简单,没有什么好补充的,不过可以学习一下std的写法,构建fail树,再跑一遍dfs累积答案,这样的做法比较高效,不过我写kmp+ac自动机会TLE,估计可能是STL的锅,hash就快很多。

2024-08-14 14:21:58 306

原创 2024杭电多校4——1007 序列更新

取个倒数才是我们需要的形式,指数是i+1,所以相当于从1开始,所以。让它用第一种方式去更新,因为小的数更容易被更新,对于。(第二种方式),因为大的数更容易更新别的数。大概是因为两种维护方法都与b的第。一种比较玄学的优化方式,长知识了。

2024-08-11 17:46:37 505

原创 2024杭电多校6——1007树上MEX问题

1代表不选这棵子树,dp[v]是选择这棵子树的方案数,子树独立,所以乘起来即可。题目让我们求所有连通导出子图MEX之和,可能存在的答案有1,2…,也就是要求的答案,(如果不理解的话带个n进去,自己展开写一下就明白了)的情况,题解里给了方法,但是我不会实现,有会的佬教教我。至于题解里的联想我是不明白,我只能从结果说明二者等价。缩成一个点,那么这样看不就是求这个点的dp值吗。只用本身也是一个连通块,所以dp初值是1。有直接连边但不在集合里的点v,它们的。类似于求连通块的dp,相当于把集合。

2024-08-09 10:38:40 1063

原创 2024杭电多校06——1005交通管控

写代码途中遇到的问题,TLE,vector直接开60000就会T,要根据k来开,想要更快的话其实可以再读入的时候就开始操作(看std学的).取某一位三进制,进位退位这种操作有比较简单的写法,(写一堆内联函数就显得有点愚蠢->me)变化而来的, 所以其实本来的方程有二维,表示的是用到第几个操作杆,但是这一维可以不要,我没有开滚动数组,是另一种常见优化,存储上一轮的结果,用上一轮的结果进行转移,时间复杂度大概是。大意一个操作杆可以对k个红绿灯进行操作,操作杆上的一个字符对应一个红绿灯,操作包括+,-,0,

2024-08-06 19:22:49 1127

原创 2024杭电多校01——1003树

蒟蒻不太理解后面说的话,只能讲点自己会的,对于一个集合和一个加入的点,会有大于集合元素的贡献和小于集合元素的贡献(贡献就是f(u,v)要我们求和的东西),如何快速求出贡献,可以用三个树状数组去维护,t1代表小于等于x的元素个数,tx代表所有元素的和,txx代表大于x的元素平方和。小于等于x的元素个数存储在t1里,大于x的元素的平方和存储在txx里,要减去的部分全在tx里,这样就可以跑树上启发式合并了。杭电多校的题解好少啊,官方题解又看不懂QAQ。,这样通过上述式子就可以求出。每次合并答案的时候,

2024-07-31 19:28:12 373

原创 2024杭电多校3——1001深度自同构

然后想到了对每个数枚举倍数预处理因子的话计算的话,时间复杂度是。发现还是TLE,STL常数太大了,队友突然想到可以直接算。已经算过了,可以进行转移,另外特殊处理因子是。一开始和队友想出来的式子,太菜啦QAQ,少用STL。的dp显然是过不了的。

2024-07-26 17:19:30 533 3

原创 Bouquet-Codeforces Round 961 (Div. 2)B2

如果说当前还可以买的花(花瓣数为x+1)和已经买的x的花大于等于left,说明可以用x+1代替x把钱花完,所以答案就是m。easy版本我写了个长度为2的滑动窗口,限制条件有不超过m元,差值不为一,所以只要排个序,再写一个滑动窗口即可,时间复杂度。如果不可以的话,就替代min(g0,c[x+1]-g1),可能被替代的x和可以用来替代的x+1的最小值,答案取max。有m块钱,买花只能买花瓣数差值不超过1的花,有多少花瓣就花多少钱,问最多能买到多少花瓣。这么多,代表着有的花,和能买的花的最小值。

2024-07-24 14:29:03 713

原创 Mad MAD Sum-Codeforces Round 960 (Div. 2)

只有连续的数段可以向右传递,做一次虽然非递减,但是会有只有单个的情况这是不可以向右传递的。经过一次运算总可以得到非递减的序列,因为MAD函数非递减,最大值只会越来越大。进行上述操作,知道全变为0为止,对每次操作的数组进行求和,记为。我们可以再做一次计算去除这些数,剩下就是可以向右传递的。MAD函数返回出现次数。读错题目了好难受qaq。

2024-07-21 10:58:08 715

原创 Chat Screenshots-Codeforces Round 925 (Div. 3)

我们可以让相对位置连单向边,代表位置关系,如果有环就说明有冲突了,判环用拓扑排序即可。告诉除自己以外的相对位置,判断绝对位置是否有冲突。

2024-07-18 10:28:31 179

原创 Packmen

的算法,自然地可以猜测是二分答案+验证的套路,问题是验证的么验证,我们先记录每个豆子右边最近的人在什么位置,然后从左往右记录能移动的最大位置,对于豆子看是否可以有人在二分的时间内过来,有两种情况,一种是先向向左到豆子再尽量往右走,第二种是先向右走再向左走,取向右走位置的max。的地图有豆子和人,每个豆子每一秒可以往左或右移动一个单位长度,吃豆子不消耗时间,最短吃完所有豆子的时间。如果先遇到的是人直接向右走即可(因为是从左往右遍历的)

2024-07-15 11:52:46 415

原创 Happy Birthday! 2

所以8个数构成的子序列必定有相同的子序列,状态压缩枚举min(8,n)的状态,如果第二次碰到某个数则输出yes,并输出序列。找两个不同的序列使得他们在mod 200的意义下相等。

2024-07-15 10:21:53 180

原创 Minimal Height Tree

处理手法还算常见的贪心,记录上一层还没有孩子的节点和当前层有几个节点了,然后模拟就行(要想高度尽可能低,那么每一层最好都填满)给定一棵树的遍历顺序,一个节点的子树遍历顺序是递增的,问这棵树的最小高度是多少。

2024-07-11 15:12:20 160

原创 Rudolf and k Bridges——Codeforces Round 933 (Div. 3) E

每座桥的代价如果用传统dp会超时,考虑优化,如果一个位置等更加靠后且代价更小,是更优的,可以考虑用单调队列来维护,(维护一个单调递减队列),对于每个。建一座桥要安装支架,支架之间的距离不能超过d(两个位置之间),建支架的代价是。看是否和单调队列的距离满足d,满足的话计算价值添加到队列中,若不满足队头出队。先求每座桥的代价,用前缀和算出连续k座(也可以用滑动窗口)问建连续相邻的k座桥的最小代价是多少。

2024-07-10 11:54:31 461

原创 牛客小白月赛96 D 最小连通代价

如果既有奇数点又有偶数点,则它们之间的所有边都要,否则我只要n-1条边因为代价大于0。如果全是技术点或者偶数点,则不需要奇数点和偶数点连一条边。这题就是一个分类讨论,先读进来统计奇数点和偶数点。加边是所有点连通,没有重边和自环,问最小代价。加边规则:两点权值奇偶性相同代价为a,否则为b。如果全是奇数或者偶数点,只取n-1条边即可。没开long long WA了好几发。为奇偶性相同的点的连边,为奇偶性不同的点的连边,所有可以连的边都连上。

2024-06-16 16:45:14 869

原创 Codeforces 1354B

那我前面的a完全可以不要,b只要1个然后去找。只有1,2,3,求最小的子串三者都包含.通过归纳,最终的答案形式值只能是。这种形式.感性的想如果现在是。思路有了,写法就很多样。

2024-06-12 17:32:02 925

原创 Codeforces Round 949 div2 B

区间或值怎么算,一个结论是l,r按二进制从高位往低位找,第一个l是0,r是1的位置,从它到后面都变成1。**分析:**题目理解清楚了,发现就是一个区间或起来的数值是多少,区间是。或运算的范围往左和右扩展一个数,问经过。**题目大意:**每过一秒。

2024-06-01 13:51:04 594

原创 Codeforces Round 946 E dp

一个人每月会有x的钱,m个月,每个月可以用钱换幸福值,问最多能获得幸福值多少,有多组测试。简单的背包问题都是问什么设什么,但是这题。即所需花费比我有的钱少。

2024-05-29 19:18:49 746

原创 筛子游戏(概率DP) 牛客

有三个面数给定的骰子,每次投出前进x+y+z(三个骰子投出的数字),开始位置在0点,问位置>n的期望步数?但是f[0]是一个未知数,所以需要使用一种常见手法进行转化。设f[i]表示分数到达i的期望步数。可以递推求解A[0]和B[0]b&&z==c会回到0点。

2024-05-22 21:14:20 850

原创 Bingbong的奇偶世界

dp[i-1][1]会对dp[i][2]有贡献:任意数字添上一个偶数就变成偶数了。dp[i-1][1]会对dp[i][2]有贡献:任意数字添上一个偶数就变成偶数。给定以字符串,问从中选出任意多个数字可以得到多少不含前导零偶数(可以重复)dp[i][1] 表示[1…dp[i][1]+1(相当于选第一个数,不能有前导零)dp[i][2] 表示前i个数字不含前导零偶数的个数。dp[i-1][1]会对dp[i][1]有贡献。dp[i-1][1]会对dp[i][1]有贡献。最后答案为ans+dp[n][2]

2024-05-16 20:24:50 180

原创 牛客周赛41 D(小红的好串)

给你一个字符串,有q次询问,每次询问给一个区间l到r,问最少修改多少次使得区间内的字符串是好串。也有三种情况(r,e)多一个,(r,d)多一个,(e,d)多一个,也求个min。可以发现red子序列最多的情况一定是rrr…好串的定义:长度和自身相同的,拥有red子序列最多的字符串。r,e,d的个数均分,用前缀和查询和理想情况差多少即可。有三种情况,r多一个,e多一个,d多一个,求个min。总的来说如果想到了就是一道靠代码基本功的题目。可以分三种情况:设字符串长度为len。

2024-05-07 17:21:28 364

原创 Find 3-friendly Integers

可以发现三位数都是可以的,那么4位数及以上也是可以的,可以看成三位数和另一个数拼起来,只要预处理1-99即可。Def of 3-friendly:数字中只要子串mod 3==0即可,0也算。多组询问给定l ,r 问区间内有多少数满足条件。

2024-05-04 16:59:47 226 1

原创 Groundhog Looking Dowdy

每天穿的衣服有数值val,从n天选m天使得val_max-val_min最小。尺取,维护一个m天的滑动窗口即可。

2024-05-03 17:45:42 236

原创 The Flee Plan of Groundhog

先dfs处理出y从n走到图上任意一点所需要的时间。再在t时x所处的位置bfs处理出x从t时位置到图上各点的时间,如果x和y同时到某点或比y晚到某点,则会被b抓住,维护一个被抓时间的最大值即可。x从1号往n号点走t秒,秒之后y从n开始追x,y速度比x快。

2024-05-03 10:58:57 271

空空如也

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

TA关注的人

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