自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 带权并查集

她趁商人不在时去偷看账本,可是她无法将账本偷出来,每次偷看账本时她都只能看某段时间内账本上记录的收入情况,并且她只能记住这段时间内的总收入。设置dis数组维护每个战舰距离其所在集合根节点有多远,即前面有多少个战舰,由于两个集合合并时会直接将一个战舰群放在另一个战舰群下面,我们还需要siz数组维护每个战舰群的大小,因此x和y所在集合合并时,之间战舰数量时,可看作l到根战舰的数量减去r到根战舰的数量的绝对值,由于根节点计算了两次,还需要-1,即。所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和。

2025-10-14 15:48:16 325

原创 最短路径树SPT

SPT,就是从一张连通图中,有树满足从根节点到任意点的路径都为原图中根到任意点的最短路径的树SBTxdisrootxrootxn−1≥一般用dij实现,在松弛时记录前驱边即可spt。

2025-10-14 15:45:55 429

原创 2-sat

2−SAT2-SAT2−SAT简单的说就是给出nnn个集合,每个集合有两个元素,已知若干个ab(a,b)ab,表示aaa与bbb矛盾,然后从每个集合选择一个元素,判断能否一共选nnn个两两不矛盾的元素。更通俗的讲,有nnn个变量,每种变量只有两种取值(一般为0和1),还有mmm个关系表达式,一般为x1∧x2falsex1​∧x2​false询问能否给这nnn个变量找出一组赋值,使得mmm个关系全部满足。

2025-10-14 15:44:06 362

原创 Kruskal重构树

它并非直接用于求解最小生成树,而是通过重构原图的边,将边权信息“上移”到新生成的节点上,从而将路径上的边权最值问题转化为树上路径的节点最值问题,并能方便地处理连通性和。具体地,我们按最大生成树来重构,对于修改边权操作我们只需要建立一个边对虚点的映射,每次只更改虚点的点权即可,由于修改操作会在操作1之后统一修改,我们将所有的操作。的边,我们肯定希望尽可能的坐车走免费的边,那么我们按最大生成树重构原图,看每次坐车能获得的最大连通性在哪里,从这个虚点的叶子节点里选一个到。Yazid 的家恰好在魔力之都的。

2025-10-14 15:41:51 484

原创 最大权闭合子图

定义:选出一个图的子图,使得该子图内的所有点的后继点都在该子图内(即闭合性)最大权闭合子图即闭合子图内的节点点权和最大。可以表示事物间的依赖关系,如果一件事要发生,该事件的前提就必要都要发生(对于闭合子图中的后继节点)作为网络流最小割的经典模型,其建模方法如下:源点→正点权(正收益)事件,容量为其点权(收益)负点权(负收益)事件→汇点,容量为其点权的绝对值原图中的每条有向边uv(即有依赖关系的事件边),连一条容量为inf的边此时其最大闭合子图=正点权之和-最小割。

2025-10-14 15:36:48 299

原创 牛子图论1(二分图+连通性)

学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。比如A和B都是学校的学生,A要回家,而C来看B,C与A不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一个解决方案就是B睡A的床而C睡B的床。而实际情况可能非常复杂,有的人可能认识好多在校学生,在校学生之间也不一定都互相认识。我们已知一共有n个人,并且知道其中每个人是不是本校学生,也知道每个本校学生是否回家。问是否存在一个方案使得所有不回家的本校学生和来看他们的其他人都有地方住。即将点分为所有需要床的学

2025-09-03 23:34:18 1068

原创 图论水题5

n个点n-1条边,k个特殊点以及整数d,要求删除最多的边保证每个点都可以在d步之内到达一个特殊点,输入保证每个点都可以在d步内到达特殊点。

2025-08-25 18:09:36 725

原创 牛子图论进阶

学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。比如A和B都是学校的学生,A要回家,而C来看B,C与A不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一个解决方案就是B睡A的床而C睡B的床。而实际情况可能非常复杂,有的人可能认识好多在校学生,在校学生之间也不一定都互相认识。我们已知一共有n个人,并且知道其中每个人是不是本校学生,也知道每个本校学生是否回家。问是否存在一个方案使得所有不回家的本校学生和来看他们的其他人都有地方住。即将点分为所有需要床的学

2025-08-18 15:38:55 467

原创 图论水题4

给定一张n个点m条边的无向图,求其补图的连通块个数以及每个连通块的大小。

2025-08-17 17:09:01 1085

原创 图论水题日记

给定一棵树,规定dis(u,v)≥kdis(u,v) \geq kdis(u,v)≥k时(u,v)(u,v)(u,v)之间存在一条无向边,求k=(1,2,...n)k=(1,2,...n)k=(1,2,...n)时图中的连通块个数cf1775D题意给定n个节点,若gcd(ai,aj)!=1gcd(a_i,a_j)!=1gcd(ai​,aj​)!=1则ai,aja_i,a_jai​,aj​之间存在一条无向边,且所有边权都为1,给定两点,求这两点的最短路上的节点个数已经路径1≤n≤3⋅1051 \leq

2025-07-25 21:27:32 891

原创 图论水题2

对于一颗n节点的树,每个节点有一个字母,有m次询问,每次询问求对于顶点v的子树中深度为h的结点能否组成一个回文串$ (1 \leq n \leq m \leq 5 \cdot 10^5) $

2025-06-04 21:31:55 792

原创 图论刷题1

给定一颗n个点的加权树,以及m次询问,每次询问输出存在简单路径中边权不大于x的顶点对数1≤nm≤2⋅105)——树中的顶点数和查询数。x≤2⋅105。

2025-06-02 23:14:56 1085

原创 abc398 D-F

问题陈述有一个无限大的二维网格,坐标00处有一个营火。在时刻t0,烟雾只存在于单元格00处。您将得到一个长度为N的字符串S,由‘ N ’, ‘ W ’, ‘ S ’, ‘ E ’组成。在时刻t12N,按顺序发生如下:-风一吹,此时所有烟雾的移动如下:—如果S的t\第一个字符为“N”,则将单元格rc中的烟雾移动到单元格r−1c。-如果是“W”,则单元格rc中的烟雾移动到单元格rc−1。—如果为“S”,则单元格rc中的烟雾移动到单元格r1。

2025-03-25 14:48:00 475

原创 牛客周赛Round 85 D-F

定义一个字符串是“双生串”,当且仅当字符串中每一种字符出现的次数都是偶数次。现在,小紫拿到了一个长度为n,仅由字符‘0’和‘1’组成的字符串s∙小红先手操作,删除该串的一个非空前缀;∙小紫紧接着操作,删除该串的一个后缀(可以是空串)。如果最终可以生成一个非空双生串,那么小紫将获得最终的胜利。小紫发现这个游戏自己非常劣势,因为小红可以删除到只剩下一个字符导致自己必输,于是她强制让小红随机删除一个前缀(即删除1∼n个字符)。请你计算小紫最终获胜的概率。第一行输入一个正整数n1≦n≦。

2025-03-17 10:01:37 975

原创 3.07训练赛

例如,对于字符串“abaca”,以下字符串是子序列:“abaca”、“ABA”、“AAA”、“a”和“”(空字符串)。但以下字符串不是子序列:“aabaca”、“CB”和“BCAA”。子序列是一种字符串,它可以通过删除一些符号或不删除符号而不改变剩余符号的顺序来从另一个字符串中导出。是添加的子序列的长度(即价格等于删除的字符数)。个数,至多选择三个,且选择的数之间不存在倍数关系,求可以选择的最大和。,且子序列长度越长约优,将原串加入队列,使用bfs跑出。在一步中,您可以取给定字符串的。

2025-03-07 14:40:27 827

原创 3.04补题

时所获得的最大单位.由于X最多只有5000,可以枚举第一种和第二种维生素的获得数量,则第三种维生素的最大值为。之间所有的路径,其边上的字符若能形成回文串,其最短路径是多少,若不存在返回-1。的情况下找出维生素1,2,3中的最小值的最大值。种食物,每种食物只含有维生素1,2,3,吃第。可以先用01背包求出每种维生素在消耗卡路里为。减1,求满足以下条件的最小操作次数。可以发现要操作次数尽可能少,即要求。,可以操作任意次,选择任意的。之间不存在边,对于每一对。个点的有向图及邻接矩阵。之间存在一条有向边,且。

2025-03-04 17:12:33 897

原创 分层图最短路

Alice 和 Bob 现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多。Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。多开一维记录免费次数,对于每个点,分别更新使用和不使用免费机会的代价。种航线,每种航线连接两个城市,并且航线有一定的价格。个城市设有业务,设这些城市分别标记为。建两层图,一层原图,一层反图,对于。的边,原图和反图上的每个点建代价为。代价反转所有边,可以多次反转。的一条有向边,再建一条反转后的。

2025-03-03 11:03:25 705

原创 25.2.25补题

给定三个长度为n的整数数组ABC,以及一个整数K,对于整数ijk1≤ijk≤n的每一个N3选项,计算Ai​∗Bj​Ai​∗Ck​bj​∗Ck​的值,并输出第K大的值。

2025-02-25 20:49:40 760

原创 25牛客寒假营1

个人认为难度划分hard: F K。

2025-01-24 00:27:06 955

原创 寒假康复训练4 edu113

给定只包含字母ab的字符串s,定义平衡子串为lr内ab数量不相等,查找任何不平衡的子串,输出lr,若不存在这样的子串,输出−1−1。

2025-01-17 18:49:11 1052

原创 寒假康复训练3 edu112 (A-E)

给定三种披萨,分别为15分钟制作6块,20分钟制作8块,25分钟制作10块,现在有n个人来聚会,要保证每个人至少一块披萨,求最少的制作时间数。

2025-01-17 02:10:18 700

原创 寒假康复训练2 edu111(A-C)

让我们称由n正数(大于0)组成的数组为a如果对于从1到n的每个i都满足以下条件,则整数很漂亮:ai​1,或者数组中至少存在数字ai​−1和ai​−2中的一个。给定s,求数组和为s的漂亮数组的最小可能大小。

2025-01-16 00:21:20 1205

原创 寒假康复训练1 edu110

四个数字,确定第一个第二个中的最大数以及第三个第四个数的最大数是否是四个数中最大的两个数。

2025-01-15 01:36:46 687

原创 11-28 D题

给定一个字符串,支持两种操作1.将x位置上的字符修改为y2.查询字符串[l,r]范围内的非重复字符个数(即出现过多少个字母)

2024-11-29 12:50:59 314

原创 C组暑假第一次训练题解

两种操作1.在第i个柜子第j个格子输入2.输出第i个柜子第j个格子的数字。

2024-07-07 01:59:38 973 1

原创 Codeforces Round 929 (Div. 3) A—E

0,即a不是mn的倍数,那么a%mn的结果一定比mn小,这样就得到了一个唯一的,新的最小值,这样只需将新的最小值放在第一位即可保证结果不为0;由于获得的奖励为u,u-1,u-2,u-3...,u-k+1,以等差数列方式表现,且奖励和的函数图像为凸函数,那么问题变为了就凸函数极值点,自然可以想到三分。(保证每个a>=1)若a<b , 则a%b=a,那么我们将最小值放在第一位,若最小值唯一,结果就等于最小值,一定不为0。(值 u+1−k可以是负数,这意味着完成额外的部分会降低Isaac的性能。

2024-03-05 17:19:37 818

原创 Codeforces Round 927 (Div. 3) A--E

此操作结束之后,除去王牌花色,其余花色最多只剩一张牌没有消去,如果此时王牌花色的牌数小于其余花色的牌数,那么该轮不合理,输出impossible,否则我们将王牌花色的牌按点数从小到大排序,将其余花色的牌用王牌花色消去后加入ans,剩下的王牌花色牌分别消去加入ans即可。有四种花色的卡牌,分别用C,S,D,H代表,每种花色有2-9八张,四种花色共有32张卡牌,每局游戏给出一种花色作为王牌花色,每轮游戏第一个人打出一张卡牌,第二个人只能打出比他大的卡牌,该轮结束,关于卡牌大小规定如下。

2024-02-21 01:46:21 1013

原创 Codeforces Round 923 (Div. 3) A—F

可以发现每相隔k个位置的元素之间相差不超过1,为了使数组包含1-n所有元素,我们让每隔k个位置的元素加1,但如果我们全部选择加1,构造出的数组为 1 4 7 9 2 5 8 10 3 6显然存在不符合条件的区间,所以我们不能全部选择加1,可以选择加一减一轮流出现的策略,此时构造出的数组为1 6 7 10 2 5 8 9 3 4。给定一个包含n个元素的数组a以及m个查询,每个查询包含l,r两个整数,你的任务是判断l到r之间是否存在不同元素,如果存在输出任意两个不同元素的下标,如果不存在输出-1 -1。

2024-02-12 19:53:40 1028 1

原创 Codeforces Round 898 (Div. 4)

引入了基环树之后,我们再来看,如果b想逃脱,那么他只能跑到环上和a不断地兜圈子,那么我们先找到环上的点是那些点,然后计算出a和b到这些点的最短距离,如果对于任意一个环上的点,a都能先一步比b到达,那么a一定能抓到b,反之只要有一个在环上点,b到这个点的距离比a小,那么b一定能逃脱。给定一张n个点n条边的无向图,以及a和b的初始坐标,现在a想要抓到b,b非常聪明,可以预测到a的行动,两人同时开始行动,问a是否可以抓到b,如果抓不到,输出Yes,否则输出No。-然后,将水箱注满水,使每列的高度为 ℎ ,

2024-02-02 01:48:49 940

原创 Codeforces Round 922 (Div. 2)

3.为使a异或x减b异或x的绝对值最小,那么我们应该选择从第一个不相同的高位开始,对于后面不同的位,我们选择将其变成符号与第一个不相同位产生的贡献相反的符号,不断减少第一个不相同位产生的贡献,使得最后的绝对值更小,可以证明,就算后面的数全部与第一个不相同位的符号相反,结果也一定是大于0的,因为高位的数至少是低位数的二倍。1.当a和b的某一位相同时,即都为1或都为0,那么对于x的这一位不论是1还是0,其与a,b异或之后再相减所产生的贡献一定为0,所以对于a,b某一位上的数相同时,不会产生贡献,我们直接跳过。

2024-01-31 20:11:14 1471

原创 Codeforces Round 921 (Div. 2) A—C

c题其实是a题的反向判断,a题是找出一个可以覆盖全部子序列的字符串,c题是判断这个字符串是否可以覆盖全部子序列,那我们依据a题的思路,判断是否存在合法的n个结构(前k个字符都至少出现一次后,为一个结构)出现即可,如果不存在n个合法的结构,我们只需要找到最后一个结构缺少了哪个字符,那么前面几个结构的最后一个字符加上这个缺少的字符一定就是没有被覆盖的子序列,输出这个字符串即可。给定两个正整数n和k,请你找出一个字符串s,使得所有可能的仅使用前k个小写英文字母构成的长度为n的字符串都可以作为s的子序列出现。

2024-01-30 21:33:20 538 1

原创 Codeforces Round 909 (Div. 3) A—F

最阅读理解的一集,大意为给定了一棵树和一个数组d,d[i]表示第i天所期望的长度,期望长度的含义为树中存在两个叶子结点的距离,为了树每天都存在这样的叶子结点符合期望长度,我们每天可以进行一次操作,将一个节点从原先所在节点连接到一个新的节点,例如 4 3 2代表将4号结点从3号结点移走,接入到2号结点之后,请你输出树的结构和第i天的操作,如果第i天不需要操作则输出-1 -1 -1。给定一个n个元素的数组a,求其中元素和最大的非空连续子数组的元素和,而且保证相邻元素的奇偶性不同。

2024-01-27 17:10:32 810

原创 Educational Codeforces Round 158 (Rated for Div. 2) A-D

因为答案与数组的顺序无关,所以我们考虑将数组排序,因最后的答案要求所有的元素都相等,可以想到,当操作若干次之后,若数组中的最小值与最大值相等,那么全部元素一定都相等,若我们每次都选择最小值为x,那么最小值将不会发生改变,而其余的值都会不断缩小,最大值也不断向最小值逼近,直至最大值与最小值相等。点伤害(a[i]为i号怪物的生命值,i-1为i的左面有i-1只怪物,由于伤害每次递减1),同理如果攻击从右边到来,那么最坏的情况就是右边的y只怪物全部被攻击之后i号怪物才被攻击,此时i号怪物应最少受到。

2024-01-25 15:12:59 872

原创 Codeforces Round 912 (Div. 2) A—D1

由于或运算的性质,只要两个数其中有一位该位是1,那么结果该位也一定是1,为了使答案最优(更容易满足其他元素),所以我们可以确定a[1]的第1位和第3位为1,那我们只需要找到a[1]上哪几位是0即可,对于该行所有元素如果相同位都为1,那么a[1]该位也为1,有一位为0,那么a[1]该位也为0。对于操作次数无上限的问题,我们往往采用贪心的策略,可以发现只要每次反转两个元素,就一定可以将数组变为非递增的,因此只要操作次数大于等于2,就一定可以,对于操作次数<2的,除非原数组就是非递增数组,否则一定不可以。

2024-01-22 20:28:27 1148

原创 Educational Codeforces Round 161 (Rated for Div. 2) A-E

可以发现对于n个递增的数,可以贡献2^n -1个递增的子序列,那么我们先找到最大的n,构成1,2,3.....n,那么还需要构成x-(2^n-1)个递增的子序列,如果我们往1-n这样的递增数列前插数,例如。给定n个城市的坐标(升序)和m个询问,每个询问包括一组a和b,求从第a个城市到第b个城市的最小花费,花费的计算:如果下一个要去的城市是当前城市的最近城市,那么花费1,否则花费两城市的距离之差。=b时,只能插入大写字母,并且t!2.a==b时,若插入小写字母,此时t==a==b,为满足t不匹配c,则t!

2024-01-20 21:21:47 841

原创 Codeforces Round 920 (Div. 3) A—E

但由于棋盘是有边界的,当逃跑的一方到达棋盘边界时,就只能向前走,倘若此时追击一方的棋子还在前方(两人的棋子还没有经过同一行,一方获胜必然在两人棋子处在同一行时发生),则一定会被追上。2.可以获胜的一方由棋子初始位置决定,想获胜就必须产生吃棋子的动作,也就是两人到达同一行时,这一步由谁来走,只有走这一步的人才有获胜的资格,因为a先走,所以两人棋子行坐标之差为奇数时a可以赢,行坐标之差为偶数时b可以赢。a和b在玩棋盘游戏,两人各一颗棋子,a的棋子只能向下,左下,右下走,b的棋子只能向上,左上,右上走。

2024-01-16 13:00:42 1020 3

原创 Hello 2024 前3题

‡‡ 将数组 a=[3,1,4,1,5]=[3,1,4,1,5] 拆分为 (s,t)的一些有效方法是 ([3,4,1,5],[1]) 、 ([1,1],[3,4,5]) 和 ([],[3,1,4,1,5]) ,而拆分 a的一些无效方法是([3,4,5],[1]) 、([3,1,4,1],[1,5]) 和([1,3,4],[5,1])。由于+代表1,-代表-1,很容易想到区间和问题,而且不难发现如果将每个符号单独划分,就只会产生1的罚金,那么对于-和+数量相等的区间,其产生的罚金为0;

2024-01-07 14:09:06 1174 1

原创 Codeforces Round 918 (Div. 4)

(-2,100)区间的子区间(起点大于-2,终点小于100)个数为5个,(1,8)区间的子区间个数为2个,(2,6)区间的子区间个数为1个,(3,9)子区间个数为1个,(4,5)子区间个数为0个,(7,10)子区间个数为0个,所以答案为5+2+1+1+0+0=9,可以看出对于起点已经排序的情况下,我们只要看当前终点后面有几个数比其小,那么其就有几个子区间,即满足i<j,a[i]>a[j]的元素个数,很明显的逆序对,那么这题就变成了对终点求逆序对个数,对它使用逆序对板子即可。除了斯拉夫人,他们都有自行车。

2023-12-30 16:57:44 2233 2

原创 Codeforces Round 917 (Div. 2) 前三题

可以发现除了第一次执行操作2会获得值和下标相等元素个数的分数之外,我们之后每次执行操作2最多只能获得1分(执行完操作2之后,每次执行操作1最多有一个满足条件的元素),那么我们可以一天执行操作1,下一天执行操作2,每两天获得1分,这是第一种保底的方法。第二种方法则是先执行i天操作1,让满足条件的元素尽可能变多,然后执行操作2,之后就和第一种方法一样每两天获得1分。给定一个数组,可以对其中任意元素操作任意次,操作规则:可以用0-a[i]之间的任意数替换a[i],,求使得数组所有元素之积最小的操作次数。

2023-12-25 20:54:34 726

原创 Codeforces Round 916 (Div. 3) 前6题

a和b都有n种颜色不同的弹珠,每人轮流行动,每次行动可以选择一种颜色,将对方该种颜色的弹珠清0,自己该种颜色的弹珠-1,前提是两人都至少有一颗该种颜色的弹珠。模拟两人轮流取弹珠的过程,由于最终分数为a的弹珠数减b的弹珠数,所以a对最总分数的贡献为加上该种颜色弹珠可获得的·分数,而b对最终分数的共享为减去该种颜色弹珠可获得的分数。一共有n个任务,最多可以完成k个,每个任务有首次完成奖励和重复完成奖励,每个任务可以重复完成,只有做完前一天的任务才能做下一天的任务,求可获得的最大的奖励。E1为E2数据弱化版。

2023-12-20 20:30:34 1989 1

空空如也

空空如也

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

TA关注的人

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