自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客周赛 Round 51题解

牛客小白周赛题解

2024-07-22 19:26:12 237

原创 关于基环树找环问题

在基环树中,只有唯一的环在拓扑排序后入度任然为2。所以使用拓扑排序来标记,未被标记的点就是环上的点。

2024-07-16 00:46:29 190

原创 关于质因数求最小公倍数

n个数的最小公倍数是这n个数里所有质因数的最高幂的乘积。其实就是在质数筛的时候顺便把这个质数的乘积给算出来。

2024-06-05 23:52:23 183

原创 Codeforces Round 950 (Div. 3)

其中x轴的排序时从大到小,y轴的排序是从小到大。如果想移除这个台灯后面积变大,这个台灯必须得位于边界,并且两个相邻的边为边界才行, 这个点也是边界改变的点。所以每次改变边界的时候都把这个点标记。所以用两个map 分别存每个元素的x和 y坐标 然后最后看两个矩阵的每一个元素的x和坐标是不是对应的。思路:从底下往上算,每次都修改最左边的值和最下面的值,并加上左边的面积,就是总面积了。思路:其实就是看两个矩阵的每行和每列的元素是不是一样的。好久没写题解了,今天来写个题解。

2024-06-04 12:04:12 444

原创 牛客周赛 Round 42

使用了组合数的思想。j可以视为第i个数在序列中的位置。除去自身的贡献之外。还有前面j个数和后面j-j-1个数的贡献,并将组合数预处理,字符串的每一个字符的贡献只需要在这次计算就可以了。而在奇数时,我们可以空出最后一个数,因为相比空出中间那个数来说的话,最后一个数,不仅最小值变大了,而且最大值变小了。树上问题熟悉的遍历树。当发现这个子树的联通块大小为偶数时,便可以切除一条边。想要极差尽可能的小,在有偶数个数时,我们可以让首位相乘。

2024-05-20 20:32:06 353

原创 B. Getting Zero

x点到mod的操作数可以视为其最短路。于是可用宽搜从1到mod建图。所以每次求数x到mod的最下操作数变为到mod这个顶点的最小边数。有边权为(x+1)%mod 和(2*x)%mod 两种边权。这题可以使用bfs的做法,特记录在此。

2024-04-23 11:51:51 188

原创 AtCoder Beginner Contest 350

然后再按照排列从小到大的顺序遍历,如果这个数不在相对应的位置上就和其需要到的位置上的数交换。1~6 mp[n/i] / 6 + y 当i=1时 两边有相同的式子,把它移到左边。这题考察联通块的知识,每个联通块内都可以有(cnt)*(cnt-1)/2条边。因为存在一个点被联通块内多个点连接的情况,所以每次先加上边,最后除以2.先用一个数组记录第几个输入的数字,然后一个数组记录这个数字的位置,如果一个洞奇数次进,则总数加一偶数次进总数减一。mp[n]是n的期望花费。

2024-04-21 17:51:16 287

原创 Codeforces Round 877 (Div. 2)

如果是的每一列的差都是m的倍数即可。可先从最大的奇数行到最小的奇数行,在从最大的偶数行到最小的偶数行。每一行内的数差为1,可不更改。只需要保证每一列里相邻的数差为1即可。所以只需要记录每个数的位置,并保持最大的数的位置在1和2的位置之间即可。要求的是最小的排列数,只要让最大的值在1,2之间即可。

2024-04-10 17:35:03 130

原创 分块大小

根据均值不等式, \(u*n+\frac{n^2}{u}\) 在 \(u*n=\frac{n^2}{u}\) 时取最小值。复杂度 \(O(u*n+\frac{n^2}{u})\)即 \(u=\sqrt{n}\)

2024-04-01 00:05:19 265

原创 Codeforces Round 806 (Div. 4)

这题可以考虑贪心的思想。因为dp的话具有后效性。因为要上限最高,所以尽量让坏钥匙放在后面,因为不会降低上限。所以我们遍历一遍分界点,从第一个到最后一个。其中坏钥匙最多只要计算32个左右,因为数值最大为1e9。实际上就是让四个部分关于中心点对称。所以只要遍历四分之一区块即可,通过推导推出另外三点于这点的关系。遍历一便当这个数小于这个数的下标时,就二分一下求出这个数大于的队列中的下标的数量。并将这个下标放入队列中即可。(队列中放的都是下标)这题数据较小遍历每个字符串暴力求解即可。

2024-03-29 21:03:37 529

原创 Codeforces Round 817 (Div. 4)

所以我们可以将d第n-2 位数设为一个极大的数(2^30) 这样的话可以保证第三十位始终不被占用从而使得第n位不出现过。可以先从第一位到第n-3 为放任意不相等的数,可以为1--n-3. 但前n-3 位的异或和不能等于n-2 位。所以如果前n-3 位的异或和等于n-2 位就放另一个没出现过的数 eg:n-1 .先将未改变之前的总数记录,然后枚举每一位并记录改变后对于总数的贡献,并对这个记录的数组进行排序,将最大贡献的排在前面。这题可以采用二维前缀和的做法。题意位奇数位上的数异或和等于偶数位上的数的异或和。

2024-03-28 00:31:35 312

原创 Codeforces Round 876 (Div. 2)

我们可以先得到4个0 ,再在第二个位置插入0. 所以我们可以从后向前遍历,如果为0 直接输出0,否则计算连续1的数量并输出。在第一个和第n个位置必须要为1,所以可以保证满足条件的最小条件为ceil(n-1/k)+1。这题前提条件是ai要小于等于开启灯泡的数量。又因为文中提到已经开启的灯泡坏掉也算分,所以,每次可以保证ai 的灯泡最多可以开ai个。因为再多就会坏掉,无法再开启。通过分析题目我们可以得出在1的后面必须要有0.否则无法得到1。在根据样例1 : 1 1 0 0 0 来分析。

2024-03-26 17:14:17 190

原创 动态规划专题训练

分别总前后求两遍最长上升子序列。这题限制条件是总和为f的倍数。

2024-03-24 00:39:15 145

原创 Codeforces Round 936 (Div. 2)

此题意思为一个n个节点的树,删去k个节点后联通块最小的最大值。所以采用二分答案,二分找到联通块的大小,然后再dfs 找如果联通块大小大于等于这个的数量大于等于k+1的话就满足条件。最后找到最大值即可。先找找到最大子数列,然后每次都增加最大子数列,(记得要更新最大子数列,每次相当于增加了一个自己)。(最后得出的值模数必须要为正,所以先加一个mod。直接进行排序,从后面往前遍历到中位数的位置,在此期间如果有数等于中位数,就将修改次数增加1.再dfs的过程中 :如果联通块的大小大于等于要求就间切断和父节的联系。

2024-03-23 19:24:45 210

原创 Codeforces Round 797 (Div. 3)

本来以为是找一对尽量和可以被k整除的数,后来改为先记录每一个物品除 k 的商,每个数取余数。主要看ai 于bi之间的差和ai 与0之间的差大小,第二种情况不能大于第一种情况。可以理解为多个区段的首尾判断,枚举一次,每次更新下一区段的开始位置即可。可以通过前缀和记录w的数量,来查找k的区间中,w的最小数量。在使用双指针从头尾扫刚好大于等于k的数,更新总和。

2024-03-22 08:55:44 490

原创 分块算法模板更新

【代码】分块算法模板更新。

2024-03-21 20:50:12 166

原创 Codeforces Round 935 (Div. 3)

先分别求出两种各自再(m+1)的时间里最大可拥有的数量,因为两种的释放时间存在最小公倍数,即可同时开始放,所以可同时满足各自的最大数量。这题模拟即可,使用一个前缀和来计算前后的1的数量,再维护一下 |n/2-i| 最小即可。应为要考虑最大的值和要维护尽量最小的蘑菇数,所以使用一个优先队列,每次排除最小值。在m之前可加上 min(ai,bi) 在m处则计算从1到m的最小情况。先记录出x的位置,模拟一次二分的过程,如果未找到x则交换一下位置即可。只需满足让b的人住满就可以了。其余的则按照最小标准来算。

2024-03-19 21:16:37 585 2

原创 双序列最大和

可分别从从前面和后面求最大的子列,并进行预处理。最后从前到后枚举一遍即可。

2024-03-15 20:12:41 340

原创 关于 LCS 和 LIS

直接遍历全部的数组,遍历全部的状态,如果状态符合要求,就进行更新,否则进行继承。

2024-03-14 17:12:51 377

原创 P1004 [NOIP2000 提高组] 方格取数

用一个总步数优化了一维,每个位置只需要保存一个坐标即可,因为总步数相同,所以可以知道这个点的具体坐标。分别枚举两个位置的坐标,状态转移只能从两个位置的上面和左边转移。

2024-03-13 22:00:48 424

原创 Codeforces Round 905 (Div. 3)

思路:要作为唯一的子数组,左端的数必须时第一次出现的位置,否则会被取代,而贡献值由第一次出现的数提供,在最后出现的位置结算一次贡献,每出现一个数贡献加一,且不会消失。思路:如果数量为奇数个的字符要大于k+1的话,则无法形成回文(每次k都可以使一个字符数量变为偶数,当只有一个字符数量为奇数时,可以放在中间)当ai-1 < ai 让 xi 不断减一,直到 ai-1*2<ai.思路:如果最左端的r于最右端的l相交,则全部相交,否则存在不相交。当ai-1>ai xi不断加一,直到 ai>=ai-1.

2024-03-07 13:20:57 372

原创 Codeforces Round 908 (Div. 2)

思路:要求找到两队的相等,则至少要有两个数出现两次,则分别让a为1和2 .1和3.

2024-03-04 23:59:40 356

原创 Good Bye 2023 (CF)

通过169,961,196,三个数来构造。可向196后面加100的倍数,向169,961中间加0.思路:当b整除a时,b=a*p。p为x的最小质因数。x=b*p =b*b/a.当b不能整除a时,x=lcm(ab)思路:直接看是否能整除即可。

2024-02-18 16:38:56 362

原创 Codeforces Round 925 (Div. 3)

https://img-home.csdnimg.cn/images/20231127111739.png

2024-02-17 18:11:53 523

原创 刷题记录

3.当 f[i-1][j+a[i]]==1 f[i][j]=1.可添加一个当前砝码。4.当 f[i-1][j-a[i]]==1 f[i][j]=1.可减少一个当前砝码。思路:总共可选择的重量在1到总重之间。f[i][j] 表示在前i个砝码中重量为j.2.当f[i-1][j]==1 f[i][j]=1. 无需添加。1.当 j==a[i] f[i][j]=1。

2024-02-17 12:51:29 379

原创 牛客小白月赛87

【代码】牛客小白月赛87。

2024-02-16 23:21:51 599

原创 构造题记录

【代码】构造题记录。

2024-02-16 22:43:26 410

原创 牛客周赛 Round 31

思路:使用dp,设dp为前i项和为j选择元素的最小值,类似于背包问题。

2024-02-04 22:40:17 371 1

原创 AtCoder Beginner Contest 339

思路:遍历相加,当总人数为小于0时,变为0.做法:简单的模拟即可。

2024-02-03 23:48:42 439

原创 线段树模板

这里是一个基础的线段树模板。包括区间修改,区间查询功能。

2024-01-30 22:41:04 362

原创 Codeforces Round 921 (Div. 2)

思路:要想满足所有条件,必须是没k个字母在一起,再循环n次的形式,可以开一个字符串记录每k个字母循环的最后一个字母,如果没有n个循环,就从第一个字母向后列举,没有出现过就加入字符串中。题意:判断给出的长度为m 的字符串,其是否可以满足由n个前k个字母组成的字符串是其子序列。如果不是,输出一个长度为n 的不是其子序列的字符串。题意: 在n个和为x的数中,找出其最大的 gcd.思路:可以判断出这个gcd 一定为x的因数。

2024-01-28 10:43:07 377

原创 AtCoder Beginner Contest 337

比赛时,我还使用了队列进行粗储存,其实没必要,使用一个变量进行输出即可。

2024-01-20 23:21:55 387

原创 AtCoder Beginner Contest 332

对于每个整数i,从1到N,第i种产品的价格为每件Pi​日元,他将购买Qi​件。如果购买产品的总价为S日元或以上,则运费为00日元,否则为K日元。他将支付购买产品的总价加上运费。高桥决定从那里购买N种产品。AtCoder公司通过其。此外,他必须支付运费。计算他将支付的金额。

2024-01-15 20:46:40 379

原创 Educational Codeforces Round 139 Editorial

1.若在后边还存在 B 但和上一处的 B 不相连----就是 w 和 B 连在一起。先遍历找出一个上下两格不同的一列, 在分别从两边向边缘处遍历。2.通过dp 计算各处B的数量。

2024-01-11 13:35:39 350

原创 头歌顺序结构程序设计 第2关:不使用第3个变量,实现两个数的对调

本关任务:下列程序是不用第三个变量,实现将两个数进行对调的操作。程序代码如下:

2024-01-05 11:00:23 418 1

原创 头歌顺序结构程序设计 第1关:加法运算

本关任务:写一个加法程序,输入整数a,b,输出他们的和。

2024-01-05 10:58:24 366 1

原创 CF1789C Serval and Toxel‘s Arrays

1.取出一个含 x 数列和一个不含 x 数列,会对答案产生 1 的贡献;2.取出两个含x数列和哟个不含x的数列,也会贡献1.然后考虑如何求出每个数出现的次数。

2024-01-04 20:29:29 384 1

原创 Codeforces Round 854 by cybercats (Div. 1 + Div. 2)

思路: 在给出的p序列中找不同的数字,如果出现了相同的数字则不需要删除原数组中的数字。本题使用了count 函数,作用是在a+1,到a+n+1中统计,某个数的数量。2.如果数组中出现了1,则无解,因为1无法改变也无法被改变。思路:学习了jiangly 大佬的思路。1.如果全部相同,则不需要操作。4.把其他数依次和2进行操作。

2024-01-02 16:10:52 386 1

原创 c 转 c++ 的快速入手教程!!!

其实在基础上只有这些变化,其余高级的差别,我们不在此叙述。首先本人认为其实两种语言在基础的应用上其实是一样的。这就是两种c++中新加的输入输出类型。记得要加在头文件的下一行。所以头文件上的一个转变。

2024-01-01 19:59:38 471

原创 Codeforces Round 867 (Div. 3)

2.通过求和公式我们可以发现、sum=n*(n+1)/2;所以当n为奇数时,第一位等于最后一位。==》 所以n必须为偶数。假设n 在第x位上,则1到第x-1位与第x 位的余数相同 -》 所以n必须放在第1位。这类题我们要通过题目条件和样例来发现规律,1.可以发现 n 必须放在第一位。思路: 不难发现,这是一道构造题。其实我也不太会,这里可能就是靠经验了,还是多做题多积累吧。当我们开心的写一个递归式以为可以ac时,却发现超时了。通过总结我们可以发现的。本题是一个推公式题。

2023-12-31 17:01:18 344 1

空空如也

空空如也

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

TA关注的人

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