自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 11.27比赛题解

完结撒花~

2024-11-28 07:23:17 422

原创 丁真杯理塘大赛题解

部分代码思路可能与题解思路不同,

2024-11-25 21:43:35 835

原创 11.24梦熊比赛题解

很赤石。

2024-11-24 20:19:05 287

原创 11.22糖丸比赛题解

为什么这么多dp!!!

2024-11-22 22:30:38 706

原创 11.21比赛题解

让你飞起来1.拓扑排序2.简单分析下题意:给出一些大小关系,问根据这些关系能不能确定排名,如果不能, 判断是信息不完全,还是信息冲突。3.大概思路:考虑出现冲突的情况: 当且仅当图中存在环,才会出现冲突,如:a > b, b > c, c > a, 则是冲突, 这种情况可在拓扑排序时确定。

2024-11-21 18:59:05 798

原创 梦熊11.17noip模拟赛总结

1.貌似是贪心+优先队列2.将文件按照加入时间从小到大排序,对于每一个文件分别去选打印机。对于打印机,需要选择当前最早能使用的。用两个优先队列,一个维护当前可以选的最小的打印机,一个处理正在被使用的打印机,按发起时间排序后,每次让时间跳到下一个发起时间,当然要考虑没有打印机可以用时让时间跳到等待时间最小的打印机的结束时间。

2024-11-19 14:56:55 220

原创 11.18比赛总结

前5道都是模板题,分别是割点,线段树,最小生成树,扫描线,基环树。(不多做描述)还有1道警钟长鸣(幽默)

2024-11-19 09:09:32 660

原创 NOIP2020比赛题解

1.高精度+拓扑排序模板(细节还挺多的)2.这道题用到了int128(会爆long long),int128是到2^127,long long是到1e18(分母 2 最高 22 次,3 和 5 最高 11 次,所以会爆了)3..首先应该实现分数的加法,这里注意要随时除 gcd 来保持分母分子互质。已知了流水的方式,那么我们可以直接在图中进行模拟,可以用 dfs / bfs 来模拟流水过程,即枚举每一个污水接受口排出的水。

2024-11-15 08:33:14 961

原创 11.11比赛总结

(出这么难是要打坤我嘛)

2024-11-12 15:23:24 455

原创 NOIP2021比赛题解

1.禁止报的数的生成规则与埃氏筛法类似,考虑用筛法预处理可以报出的数字列表和不可报出的数字,从而 O(1) 回答每一组询问。具体来说,从 1 开始逐一处理每个正整数。当处理到数字 x 时,如果数字 x 尚未被标记为不合法,就通过拆位判断它是否合法。如果是合法数字,则将其加入合法数字列表,否则将 x 的所有倍数(包括 x 本身)全部标记为不合法数字;如果数字 x 已经被标记为不合法,则因为数字 x 的所有倍数都已经在之前和数字 x 一同被标为不合法数字,不需要再执行额外操作。

2024-11-10 18:16:53 313

原创 11.7比赛总结

神牛出品,必属精品。

2024-11-08 14:17:38 937

原创 11.5比赛题解

大乌龙:理解错题辣!我理解的是两只猴子手拉手,结果是一只猴子用手拉着另一只猴子,当连着的两只猴子都松手时猴子才会掉下去。这道题思路比较巧妙也比较常见:正难则反。考虑正推,好像要带撤销并查集(觉得挺难,非要写应该也可以),面对这种删边问题,一般都是通过倒推的方法变为加边问题,往往会好做。,问题转换为:通过不断加边,则每个点的掉落时间为它第一次与 1 号节点联通的时间,可用维护。但是,一个问题来了:在一块连通块 B 与 1 号节点所在的连通块相连时,怎么更新 B 内的节点?

2024-11-05 21:43:00 785

原创 11.3比赛总结

1.题意:有一个由 B 和 W 组成的字符串,要将它划分成尽量多的区间,并使得每个区间中 B 和 W 的比例相等。2.一道贪心题。首先特殊处理比值恒为 0 和不存在比值的情况,也就是全是 W 或者 B,明显这两种情况下每一个字符分一组就是最优解。对于其它情况,发现所有段的比值都等于整个串里面的比值,也就是比值固定。在这个前提下,发现如果对于某一个满足比值区间,其子区间同样满足这个比值,将这个大区间拆成这个子区间和其补集同样满足条件,而且划分出的区间还多了一个。

2024-11-03 19:09:53 789

原创 11.1比赛总结

1.一道dp题。转移方程:f[i]=max{f}+a[i],优化:用优先队列,思想就是一个堆记录从1i-L的max;另一个记录从1i-R-1的max;是不是把两个堆重复的部分删掉,就是i-L~i-R了,这一部分就是纯dp时需要枚举的k啊;当然只需要判断两个堆的max是否相同,相同了说明出现重复,把堆顶弹出就好了;但是,如果出现所有的数据都一样就只要再用结构体把下标也放进去就好了。但好像被hack了……

2024-11-01 14:38:03 912

原创 2023春测比赛总结(不嘻嘻)

1.大体思路:可以想到,后涂的一定会覆盖掉前面涂的颜色,因此可以只记录下每行和每列最终的颜色,最后对于每个点比较行上与列上最后一次涂色的的时间,取时间靠后的那次涂色的颜色就能得出涂色完的矩阵。比较每个位置的涂色时间,输出时间晚的颜色。(不止可以用两个pair,也可以是两个结构体,四个数组也可。2.小贴士:由于有多组测试,记得清空清空数组。

2024-10-30 19:17:48 844

转载 2022NOIP比赛总结

1.本题是一道前缀和优化加上枚举的问题。先考虑 C 因为 F 是 C 下边随便加一个点,所以只要求出 C 就求出了 F。注意到,并没有要求上下行一样,唯一的要求是 C 的两个横要隔一行,这就是问题的突破点,这题很明显的计数,计数则用到乘法原理和加法原理。假设上边的有 a 个合法的横,那考虑这一行每一个合法的横(这里说的不同是长度不同)给答案的贡献是什么?

2024-10-29 15:36:45 642

原创 2024CSP-S题目简析

浏览完4道题后选择写第一道题,没想很清楚之后写了O(n*n)的做法(连审题带写第一题花了1h),觉得第二题比较好拿分,没仔细想第一题正解就先放下写第二题去了,一开始思路还是比较清楚的,后来就越来越懵,被硬控了2h后就先放下匆忙写了写第三题,觉得细节不太好处理也没仔细想然后就又返回去写第二题,然后就想到正确的贪心思路了,但来不及想该怎么用代码实现就只能选择选择放弃,第四题一看就不会写果断跳过。

2024-10-28 10:59:21 1062

原创 2024CSP-J题目简析

1.题目大意:给定n张扑克牌和这n张扑克牌的花色和大小(),需要输出还需要多少张牌才能凑齐一副扑克牌(这里,所以共52张)。2.思路概要:由于扑克牌会有重复,所以重要的操作就是字符串的处理和去重。这里先介绍下,它的作用是“去掉”容器中相邻元素的重复元素。(这里去掉要加一个引号,是因为实质上是一个伪去除,它会把重复的元素添加到容器末尾,而返回值是去重之后的尾地址。)这道题并不难,所以也不过多赘述。

2024-10-27 21:13:36 1328

原创 10.18做题记

关于jsz和lyq:不要再约会了啊喂!

2024-10-23 19:31:13 666

原创 信友队做题总结

1.30分:暴力50分:DP(考虑本质不同的状态只有选择了前 x 个中的 y 个改为异或)70分:优化一下:不难发现无论接下来的操作是什么,x+2 经过这些操作的值都会比 x 大。所以只需要记录选择了前 x 个中的 y 个改为异或,当前值为奇数/偶数的最大值即可!进一步地发现每次操作后奇偶性一定会改变,所以只需维护最大值即可。100分:注意到无论是哪一种收益,每次操作后数的奇偶性都会变化。

2024-10-22 15:10:10 636

原创 csps模拟赛总结

1.题意简述现在有n个敌人,第i个敌人的初始攻击力为正整数ai。初始生命值为正整数W。定义如下流程为一场战斗:从第1个敌人开始,每个敌人依次循环进行攻击。第i个敌人发起攻击时,生命值W减去ai,同时ai翻倍。当W≤0时,本场战斗立刻结束。然后重置生命值W以及所有敌人的攻击力ai。定义本次战斗的评分为接受敌人攻击的次数(不包括致命攻击)。q次询问,每次询问给出三个数l,r,d,表示对第[l,r]个敌人进行强化,使每个敌人的ai增加d,然后立刻进行一场战斗。输出此次战斗的评分。询问之间相互影响。

2024-10-22 14:23:00 880

原创 梦熊十三连测题解

1.通过造样例可知:注意到两类操作并不会改变单调性,即对于任意 x≤y,在操作后仍然满足 x'≤y'。2.所以我们就可以将原序列升序排序,分别通过二分找出最大和最小的下标。3.时间复杂度:O(n*

2024-10-21 21:59:14 576

原创 NOIP2023(惨烈)做题记(泪奔::>_<::)

1.这道题倒是做出来了,大概思路如下:对于每一个字符串,可以存储一个 k 和 k2​ 分别表示这个字符串包含的字符中的字典序最小字符与字典序最大字符,这一步可以初始就处理好。然后判断每一个字符串是否成立时,我们可以直接判断该字符串的 k 是否绝对小于任意其他字符串的 k2​(注意这里不能等于,注意到题目中 wi 的字典序比 wj​ 都要,而不是,如果当前 k=k2​,那只可能当前字符串的字典序大于等于另外的字符串,不符合题意)。

2024-10-17 20:47:16 682

原创 KMP、trie、hash练习总结

1.有根树最小表示:树的括号序列转化:从树根开始执行一次 DFS,每一个结点的子树都有进入和回溯两个过程。DFS 过程中维护一个序列,进入一个子树时向序列中加入一个左括号,回溯时向序列中加入一个右括号,如此可以构成长度为 2×n 的括号序列。然而 DFS 过程中,一个点 u 有多个子结点 v1,v2,⋯ ,vk,因此在不规定访问顺序的情况下,同一棵树有多种不同的括号序列,其中字典序最小的一个称为这颗。求法:DFS 一次即可,设 fi 表示以 i 为根的子树的最小表示。

2024-09-13 16:28:48 590

原创 平衡树.st表.离散化练习总结

2.把每一种数单独拿出来,设有一个正整数序列,满足Ak1=Ak2=...=Akm=x,1=k1<k2<...<km=n,并且所有数都小于x,如果让以x为左右端点的威胁区间尽量少,设将x个设为负数,y个设为正数,则威胁区间有(x+y)/2个,当x等于0时,该操作无法进行,因为0=-0,直接算总数即可,对原序列从前往后遍历,记录每一个数上次出现的位置,用st表计算区间最小值,判断该区间是否是威胁区间,若是,则将区间内该数的个数加1,否则计算答案并清空。,但注意到ai的范围是1e9,,则该区间内所有数对数量为。

2024-09-10 18:40:37 1001 1

原创 dp的练习总结(9)

(2)a⊕b⊕c=0,只有当前位相同的二进制数字异或才是 0,所以由此可知,当前位 a,b,c 都选 0,或 a,b,c 中任意两个数选择 1。2.所有深度 >k 的节点是无用的,而标记 i 相当于标记所有 i 子树里深度为 k 的节点,所以我们把树用 dfs 序重新编号,并且只记录深度为 k 的节点,设 Li,Ri 为 dfs 序中 i 的子树里新编号最小和最:大的深度为 k 的节点,di​ 是 i 的深度。a 的状态为 j,j=1 的时候代表 a=n,j=2 的时候代表 a<n;a,b 选过了 1。

2024-08-23 21:32:56 565

原创 dp的练习总结(8)

2.可以想象出一个栈,当前点的的起始位置加入栈,如果这一段有颜色不同于这个点的,就不可能,如上图右边,碰到当前点的终止位置,就出栈,最大染色次数就是栈最大的size,可以画个图试一下,当size 变化为 1 2 3 2 1 时,两边明显是可同时进行的,所以答案应该只要记录最大值。1.如果节点u不是重心,那么它有且仅有一个size v ≥n/2(重儿子),则要在重儿子中找一个大小为s的树,满足2*(size v -s)≤n,2*s≤n。t2[i]:维护当前扫过点的子树中大小小于 i 的个数。

2024-08-22 18:43:04 433

原创 dp的练习总结(7)

1.用状态 f(0/1,0/1,u,i)​ 表示以 u 为根的子树中有 i 个被选取的点,第一个0/1 表示 u 是否选取,第二个 0/1 表示 u 是否被覆盖。2.要想输出方案,可以用 g(u,i) 记录一下 f(u,i)​ 的后继状态,转移时从 g(u,i-k)​ 复制。后继状态中显然当 i=0 时 u 要被删去。则有f(u,i)=min( f(u,i-k),f(v,k) ),当k=0时,f(u,i)加一。1.本题为树形dp,用f(u,i)​ 表示以 u 为根,取出 i 个节点子树的最少删边次数。

2024-08-22 15:46:05 456

原创 dp的练习总结(5)

或者说,记 n/t=p,那么第 1 到第 p 大的放在一个环中,第p+1 到第 2p 大的放在一个环中,以此类推。注意一下 k=0 的情况和边界。3.考虑一下优化:到一个数的因子很少,这道题 n 又是固定的,也就是说 t,p 的个数很少,所以只用。l∼(l+r)/2与 (l+r)/2+1∼r 部分完全相等,可另开函数判断;只要 p 相同结果就相同,如果以前算过 p,就直接输出答案。1.求 n 和 k 最大公约数,记为 t,那么 t 就是。数组初始化为极大值,方便之后的。,从而实现积的不平均。

2024-08-20 16:31:52 331

原创 dp的练习总结(4)

2.第一种 (S)(S) 的情况,直接扫一遍 O(n)O(n)。然后考虑 (A),(SA),(AS)。第一种从 [l+1,r−1] 转移,剩下的扫一遍,从 f[i+1,r−1],f[l+1,i−1] ,其中 s[l+1,i],s[i,r−1] 是 S,转移,复杂度 O(n)。最后一种考虑枚举断点,转移方程大概是 f[l,i]×f[j,r],s[i+1,j−1] 是 S。3.考虑给 dp 加一维状态,f[i,j,0/1] 分别代表能或不能使用最后一种转移,那么 f[l,i,0]×f[j,r,1] 转移即可。

2024-08-20 15:24:59 236

原创 dp的练习总结(3)

也就是说,dpi,j 到 dpi+1,k 的转移系数为 k−j+1。由于我们状态定义是小于等于,所以还需要在所有dp值上加一。考虑统计答案,我们强制 t 为最小的满足要求的 t,也就是说上面强制选正好 i 行,利用差分性质即可计算,而下面只要不超过 n−i+1 即可,同时乘上在 m 中取 j 个的系数。2优化:.容易发现 dpi,j​ 到 dpi+1,k 的转移系数为 k−j+1 是一个显然的前缀和形式,运用两次前缀和即可计算。2.可以发现f[i][j]可以影响的范围为f[u][j+1](i<u≤n)

2024-08-19 18:21:38 176

原创 dp练习总结(2)

(2)如果 i 是偶数,说明现在是从对岸回来的过程,我们再次枚举这一次渡河的 50 千克的人数 a 与 100 千克的人数 b,则 f(i,j,k)​ 将要增加的贡献为 f(i-1,j-a,k-b)×C(x−j+a,a)×C(y−k+b,b)。(1)如果 i 是奇数,说明现在是到达对岸的过程,我们枚举这一次渡河的 50 千克的人数 a 与 100 千克的人数 b,则 f(i,j,k)​ 将要增加的贡献为 f(i-1,j+a,k+b)×C(j+a,a)×C(k+b,b)​。

2024-08-19 15:35:21 280

原创 dp练习总结(1)

2.设 f(i,j)表示前 i 个素数总和为 j 的所有 k 的总和,枚举第 i 个素数的幂进行转移,因为之前并没有用过第 i 个素数,所以应把上一个状态乘上 p[i][k]​,所以直接有方程 f(i,j)=∑f(i−1,j−p[i][k]​)×p[i][k]​。按照f[i]从大到小排序,如果f[i]相等,则按照v[i] 从小到大排序(贪心),比较大的f[i]可以满足更多的需求,而当f[i]相等,自然要选择比较小的v[i]。3.利用滚动数组压缩并倒叙枚举,f(0)=1,最后答案是 ∑f(i)

2024-08-18 16:53:18 289

原创 线段树(加乘)

x=0;ll f=1;while(!}x*=f;}tree[N];if(l==r){return;return;return;ll num=0;return num;i<=m;i++){else{

2024-07-23 08:11:36 294

原创 图论考查的总结(4)

如果两个物品之间存在关系,那么可以有优惠,就把两个两个点连起来,增加一条边对所有的节点,我们都可以直接购买,所有的节点都增加一条边指向一个公共的根节点,边权值为w,然后求出最小生成树的值即可。1.依旧是最小生成树问题,可用kruskal算法:将边按权重从小到大排序,再枚举每条边以及权重,如果两边不连通就加入集合(f[a]=b,res(权重)++,cnt++)。3.本题思路:把所有的物品都看作节点,购买所有物品所花费的最小值就应该是把所有点连接起来的最小代价,也就是该图的最小生成树。一.P1194 买礼物。

2024-05-30 21:15:07 216

原创 图论考查的总结(3)

如果第二只牛可以匹配到第一个牛栏,而这时第一只牛又有另一种匹配选择,那么第二只牛就匹配上第一个牛栏,第一只牛去找另一个牛栏来匹配,以此类推。1.本题是二分图匹配,可用匈牙利算法(在总结(1)中提到过),该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。2.本题在插入操作之后,只在字符串结尾加上存在标记即可,查询操作返回的三种状态则可以加入一个布尔变量,判断是否已被查询过。son[N][26]:儿子,cnt[N]:以该字母结尾的单词数,idx:下标(为0:根或者空节点)

2024-05-30 20:34:32 567

原创 图论考查的总结(2)

比如 E 1 2, E 2 3,记录E[1] = 2, E[2] = 1现在到了E 2 3,E[2]有了,那么把1,3合并,然后记录E[3] = 2。由于敌人的敌人已经合并,那么这时的1或者3都是2的敌人,取一个代表就行,下次再碰到2和某个人是敌人,把他和1合并或把它和3合并是一样的。1.本题依旧是紧张刺激的并查集(>-<),原理是用树维护集合,树根编号为集合编号。3.在跑第一遍最短路的时候记录被更新的点的前驱,(只有第一次跑,才要记录路径)(不去掉最短路上的边,最短路没有变化)PS:思路不顺望见谅。

2024-05-27 21:48:17 247

原创 图论考查的总结(1)

第一位客人肯定把他的喜爱口味全会取走,为了让结果更优,接下来的客人的喜爱口味与之有重合,这样他就只会取走一个零食,以此类推……于是建一个n个点m条边的图。对于每一个连通块如上述处理,假设该连通块有 x个点,那么该连通块中最终有 x-1位客人可以取走零食。3.第一问求选择的道路数,因为只有“保证连通”一个条件优先级在“道路尽量少”之上,不难看出直接输出n-1(一个N个点的联通图最少有n-1条边)。匈牙利算法考查的是二分图的最大匹配问题(脑抽了)1.本题考查的是并查集(本人考虑的是匈牙利算法 一--一)

2024-05-27 21:05:10 537

原创 油滴&&对称二叉树

/判断左右子树相等。//i油滴在j油滴内。3.确定油滴的位置(前k-1个油滴的面积为sum)2.需要计算油滴的半径。

2024-03-14 22:43:55 267

原创 总结桀桀桀

/将save数组中的值赋到ans数组中。//为了避免重复,所以下一次应从上一次的下一位开始。1.本题不是求路径,而是判断是否有路,所以不能用回溯法(会超时de),用洪水填充法即可。如果它在main函数中,它将退出函数并返回一个值。3.dfs是void类型,不是int(::>_<:: )2.深度优先搜索:当确定第k步时,说明k-1步已经确定了。1.先定义一个check数组,判断喂的维他命是否够了。exit(0):正常运行程序并退出程序;

2024-03-14 21:22:23 322

空空如也

空空如也

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

TA关注的人

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