- 博客(22)
- 收藏
- 关注
原创 div2 1052 个人补题笔记
的情况,如果没有出现即可说明这种方案是成立的,我们只需要有。统计每个数出现的个数,然后排一下序,设出现次数定为。先按二进制拆分,然后我们要找满足如下条件的最大的。至于之后2900的F,感觉目前能力达不到,就不补了。我们看少了一组方案的元素后,对于任意一个元素。,然后我们把每一组的元素都存起来,设。,我们要想让 其能二分找到,就要确保。,我们可以从大到小枚举,对于每个形如。按从大到小排序,我们的答案 即是。,我们需要维护,去找每一个可能的。是不满足要求的,所以要把这时候的。对于可能构造的方案,首先,所有。
2025-11-13 14:53:03
676
原创 cf div2 1061个人补题笔记
我们可以考虑一件事情,最终美丽数的大小由锁定的几个数来决定,其中真正做贡献的只有2个数字,因此,其实锁的操作只需要进行4步即可确定答案(因为经过4步操作后 总能 让 美丽数达到Alex的预期,后续的操作其实不影响最终结果),建边,最终构成一张图,保证这张图删除一个节点后还存在一个度为2以上的节点。对于这道题而言,直接从数组出发其实是不好考虑的,我们不妨从最终的答案。的复杂度,很明显是会超时的,其实我们根据4步操作这个性质就操作。,模拟过程即可,如果不存在 直接输出 对应的。的下标中,分别进行查询,若是。
2025-11-04 20:40:26
646
原创 2024ICPC昆明个人vp赛后补题笔记(正在更新)
我们若想要消灭敌方所有单位,就要尽可能的多引爆,因为无论如何操作,攻击次数的最大值是固定的(除非你进行无意义的操作浪费次数,比如对于。就是引爆,我们一定要尽可能干掉敌方血少的,然后引爆,看 有限的。,然后转移到上面Alice先手的情况,这种情况下当且仅当Alice先手的时候能使。,其实如何攻击我们并不需要知道,我们只需要最后能不能把敌方全干掉,因此这。,然后转移到Alice进行操作。时候,我们可以发现,无论是Bob操作还是Alice操作,都能使。中选一个最大的,确保无论如何移动,总能包含1个点,,即。
2025-10-30 20:07:40
1053
原创 edu div2 183个人笔记(目前只补到D,后续可能会更新)
看0、1的操作数有多少个,让左右两边铺满-,然后看中间,中间+的数量如果和2的数量一样,说明都能铺满,中间都变成-,否则把?从从左到右第一个+向右铺,从右到左第一个+向左铺。很简单的取余数,代码略。
2025-10-11 10:18:43
274
原创 第一次训练赛题解
这场比赛挂了几道牛客上的题目,比赛地址:https://www.nowcoder.com/acm/contest/118815。【邀请码:nuc2025】或者也可以直接利用前缀和思想,我们可以很容易知道区间【1,n】中有多少个数满足2的倍数,且【l,r】=【1,r】-【1,l-1】。然后我们想要变成双生数组,就需要分别对cnt1、cnt2找到其中出现次数最多的相加,然后len-最多次数即为答案。开2个数组cnt1和cnt2,分别存储 字符串前一半或者后一半 每个小写字母出现的次数。
2025-10-02 17:09:05
348
原创 div3 1054个人笔记
区间长度为【l,r】的满足要求区间个数 = 区间长度最长为r的满足要求区间个数 - 区间长度最长为l-1的满足要求区间个数。这道题我感觉有很多种思路,由于赛时我没调出来,所以就多学一学(太不应该了,居然赛时卡住了,这不对),列了2种写法。首先,包含k个不同元素的区间个数=包含最多k个不同元素的区间个数-包含最多k-1个不同元素的区间个数。我们肯定得把0变成1,这样就操作0的个数次,然后如果有奇数个1,就把-1变成1,这样操作数再+2。很明显,我们的长度d是固定的,因此我们要尽可能让这m+1段均衡一点。
2025-10-01 15:53:53
473
1
原创 div3 954 个人笔记+思考
暴力枚举,由于n很小,所以我们可以把每一位都看成两个数连接起来,然后有个思路,如果有0的话就一直乘,没有0就遵循遇到1就乘,否则就加的原则。对于那些要换的下标,我们只能换,记录多个不同的下标,按下标从小到大的顺序把可交换的字母按从小到大的顺序依次放置即可。AC代码:(我感觉这个算法还是很少见的,为了帮助理解,让AI添加了一些注释)因为最中间那个点到中间那个点的距离为0,到两边点的距离和又是最小的。根据题意,对于符合要求的格子,将其变成周围所有格子中最大的那个即可。
2025-09-21 23:51:45
375
原创 div2 1048个人笔记(参考了各种优秀的思路)
看a和b的质因子分解,我们乘x的目标就是让他们共有的质因子相同,因此我们可以先把a、b公有的部分提取出来,看a、b提取完后有没有剩下的质因子即可。我们可以确定一个点,就是知道一个状态,我们很容易推出来这个状态上一个状态是什么,因为上一个状态相对于这个状态而言是固定的,因此我们倒着处理即可。很明显,按从大到小排序,然后依次收集m天、m-1天......1天即可。我们知道了最后的状态,然后我们想知道如何从开始到达最后的状态的过程。至于F题,等日后有实力了再补(贪多嚼不烂)
2025-09-11 17:30:59
343
1
原创 div2 1021笔记
若是第k+1天的结果不固定,那么他可以先固定住第k+2天的情况,然后穷举第k+1天的情况,这样在 第k+1天预测的时候,他就能把 第k+2天的情况固定住。若预测第k天的人数为1个人,若是第k+1天的结果固定,那么他可以排除第k+2天的一种可能,从而让第k+1天的预测就只有2种情况(因为第k+2天只要另一种可能,第k+3天有2种可能)。根据上面的规律,就可以推出来,只要 存在预测第l天有2个人及其以上,预测第r天有2个人及其以上,且预测[l+1,r-1]这几天都有1个人及其以上,那么就是可以的。
2025-09-04 16:16:35
942
原创 div3 693个人笔记
这是一个非常经典的思维,对于糖果而言,若想能平分,那么总和必须得是个偶数,然后假设一半糖果是 x,若x是偶数,显然易见,必然存在方案能满足,若x是奇数,那么必须存在一个1,那么才能满足,特批即可。具体对于每一个位置i,由于i+a[i]必然是增大的趋势,那么我们从后往前处理的时候i+a[i]必然已经会处理,然后对于i这个位置的得分而言,其就是 a[i]+(i+a[i]这个位置的得分)。根据条件,我们容易知道,1是能到达任何一个顶点的,我们先计算出1到达各个顶点的距离,然后从1出发逐渐遍历每个点。
2025-08-17 13:18:17
615
原创 div3 760
看下标为奇数的gcd x 和下标为偶数的gcd y,如果下标为奇数的数都不能整除y那么结果就是y,如果下标为偶数的数都不能整除x那么结果就是x,否则都不能解决。把x、y的二进制拆分成 a、b两个数组,看a、a的翻转是否是 b、b的翻转的子串,且b除了子串部分全为1(只有全为1的情况下x才可能变成y)这是这场唯一一道2200难度的题,难度还是有的,而且考的算法恰好是我不太擅长的,所以赛后我就好好补了补。其实很明显这样的操作其实是无用的,因为我们要确保自己的值更大,就不能有以小换大的操作。
2025-08-06 19:34:20
352
原创 div3 702个人题解(可能代码不是最优的)
开一个cnt数组存储每一个数出现的次数,用sum存储各个出现次数的数量(比如 1 1 2 2 3 3 ,1、2、3各出现了2次,2这个次数出现了3次,所以这个时候 cnt【1】=cnt【2】=cnt【3】=2,sum【2】= 3)。先用map存储一下 1到 1e4的三次,然后对于每一个x,让i从1到1e4遍历,看 x-i*i*i是否存在即可。离散化存储出现的次数和sum值,然后用cost【i】存储 把 出现 i 次的数全移除的成本。用数组存储 余数为 0、1、2的数的个数,然后暴力调整数的分布即可。
2025-07-26 18:06:51
396
原创 div2 1026题解
这道题的思路是构造一个二分图,然后从二分图中度数为奇数的一个点开始进行遍历(如果没有奇数度的点,就任选一个偶数度的点),遍历到另一端后继续这个操作。然后看这个组成的数组和边界r差多少,最后只要后面的差值都合适 把当成 0看待的 -1 从0 变成1即可。这道题的图是有向图,而且是节点小的向节点大的跑,不得不说还是挺特别的。思路挺简单的,二分答案+循环即可(但我没想出来,又是悲伤的一天)的数量相同,然后在前面取走一个左括号,后面取走一个右括号即可。先把 0 和 1 知道的先组成一个数组,-1先把其当成0看待。
2025-07-25 23:18:22
317
原创 edu div2 181的赛后个人小题解
个人思路,用 dp【r】来维护 【1,r】的概率状态,设dp【r】.first 为【1,r】中出现一次的概率,dp【r】.second 为【1,r】中不出现的概率(注意,是这一整条不出现的概率,不止是这一条)。先算出来a和b的最大公因数,设其为r,然后 看 a/r+b/r 是否小于等于k,若是满足就是1,否则就是2。对于【l,r】的推导,那么就只要从【1,l-1】转移一下即可,推导和上述类似。看【l,r】之间有多少个数,能被2、3、5、7整除的,具体计算看容斥原理。把T放前面,剩下的放后面即可。
2025-07-23 14:52:12
261
2
原创 div2 1000 的赛后个人补题(未更新完,毕竟2000+有强度)
我们只能从【1,l-1】和【r+1,n】两个区间选择一个来进行交换,这样才能保证结果最优(如果两个区间都选择,那么其中任意一个区间必然会对另一个区间和【l,r】的交换造成干扰)若是有2个度数最大的点,那么最后的思路肯定是删除这两个度数最大的点,但若是有两个度数以上的点,那么就不能随便删除,要删除两个不相邻的度数最大的点,这样才能符合要求。对于1而言,其为【1,1】,对于其他数而言,就是【i,i+1】,因此,当l=r=1时候答案为1,其他情况都为r-l。
2025-07-21 19:27:06
334
原创 div3 1013题解
思路:贪心的想法,先排个序,然后按从大往小 的顺序依次组队伍,如果满足就说明 这个队伍是合格的,就开始下一个队伍的组建,如果不满足就让这个数加入这个队伍来让 数的个数大一点。题意+思路:就是从左到右,只要能凑够 01 03 2025 这几个数字,就输出最小的位置,如果没有就输出0,送分题,但由于我当时没读懂题,还是浪费了一些时间。找规律写即可,一个规律就是 让 1 到 n-1 往后挪,1挪1次,2挪2次,以此类推,然后对于n,就放到原位置即可(当然,这是我的idea)二分答案,然后按最优策略安排即可。
2025-06-25 18:20:34
813
原创 动态规划-线性DP
1、数字三角形:问题描述:给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。输入描述:第一行包含整数n, 表示数字三角形的层数。接下来 n 行,每行包含若干整数,其中第 ii 行表示数字三角形第 i 层包含的整数。输出描述:输出一个整数,表示最大的路径数字和。分析:思路:关于一个位置上的数字嘛,从上往下看的话其实只有两种选择。
2025-01-31 16:38:15
1127
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅