自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round 993 (Div. 4)

如果你对解法有不懂的地方,可以发在评论区中,我会解答前面三道题都是签到题,这里不做讲解。

2024-12-16 11:45:34 696 2

原创 Codeforces Round 992 (Div. 2)

放置的位置一定是 1 4 10 22 48 .....1 在最左边的出现的次数是 8 ,2 的最左边的出现的次数 4。数字 i 出现的次数是 1

2024-12-09 11:15:57 452

原创 codeforces - 补题

对于一个r行c列的矩阵,我们可以求出它每一行,每一列的最大公约数(共r+c个数)。要求输出一个矩阵,满足这 r + c 个数不同,且这 r + c 个数的最大值最小。给出n个数,问对于每个数,是否可以将这个数的数位重新组合(可以有前导零),使其可以被60整除,若可以,则输出red,否则,输出cyan。这是因为有 r + j == r + j ( 列的公约数 == 行的公约数 )A 是 3 的倍数 等价于 A 中的位数 之和 % 3 == 0。当 r == 1 或者 c == 1时。这样的公约数是最小的。

2024-12-09 11:03:01 329

原创 Codeforces Round 988 (Div. 3)

签到题。

2024-11-20 19:27:05 326

原创 树形dp总结

dp[i][j] = max( dp[i][j] , dp[i][j-k-1] + dp[t][k] + w[i] ) ( t 为子节点,k是值子树中选择 k 条边)状态转移方程 dp[i][0] += dp[[j][1] dp[i][1] += dp[j][0] j 为 i 的子节点。dp[i][j] = dp[i][j - k] + dp[t][k] ( t 为 j 的子节点 ,k 是从子树中选择 k 个节点 )这类题型在 dp 中很常见,于是做一个总结吧!

2024-11-13 19:50:30 500

原创 codeforces_补题

并且 [ a[i] / 2 , a[i] ] 内始终存在一个数 2 ^ k ,我们可以让 b[i] 等于 2 ^ k ,并且可以满足条件 1 2。假设 a[i] 始终大于等于 b[i],那么 b[i] 要满足条件三 b[i] 的范围可以再 [ a[i] / 2 , a[i] ],

2024-10-30 09:24:11 374

原创 codeforces _ 补题

题意:思路:容斥原理考虑 第 i 对情侣组合 ,男生为 a ,女生为 b ,那么考虑与之匹配的情侣 必须没有 a | b,一共有 k 对情侣, a | b 可以表示为 k - cnt[a] - cnt[b] + 1 ( cnt[a] 表示为有男生 a 的方案数 )

2024-10-25 20:18:57 377 1

原创 D. Deleting Divisors

数字 n 的一个因子 为 x , 如果 ans[ n - x ] 为 false ( 必输态 ) ,则 ans[n] 是 true ( 必胜态 )接下来观察结果,你会发现 当 n % 2 == 0 时,基本上就是 Alice,当有例外 2 8 32 等,你会发现这些数字都是 2 的奇数次幂。所以得到结论 当 if ( n % 2 == 1 || n 为 2 的奇数次幂 时 ) ,puts("Bob");打表找规律( 递推 )

2024-10-24 14:21:26 376

原创 二分图染色法

题意:给定无向图,假设共有 n 个点,m 条边,要给每个点染成 黑色 或 白色,并且要使得每条边所连接的每个顶点都是不一样的颜色,问是否存在这样的方案?问法套路:分成两组 1组 2组,且1组2组之间有一定的关系。思路:建图 + 二分图染色。思路:二分 + 二分图染色。思路:二分图染色 + 贪心。

2024-10-23 00:36:40 234

原创 D. Co-growing Sequence

题意:给定一个 数组 a , 构造一个数组 b ,使得 ( a[i] ^ b[i] ) & ( a[i + 1] ^ b[ i + 1] ) == a[i] ^ b[i]我们要让 t 的二进制数位为 1 如果 a[i +1] ^ b[i +1] 此时二进制数位为 0 的话,就必须要异或 这一位为1,如果此时为1的话,就不用。设 a[i] ^ b[i] = t。思路:(二进制题目)

2024-10-21 16:23:04 156

原创 Codeforces Round 980 (Div. 2)

pre[i] 表示 数组 a 的前缀和 ,dist[i] 表示从 1 到 i 的代价最小值(类似于最短路的求法)答案 ans = pre[i] - dist[i] ( 1

2024-10-20 20:55:53 779

原创 Codeforces Round 979 (Div. 2)

首先观察字符串 ,如果相邻的两个字符分别是 'L' 和 'R',则一定不能交换 (就属于两个集合)我的方法是先看样列,如果不能看出规律,就在手搓样例(都试几组),继续看,如果还不能,就只能猜了。重新排列的数组 -> 最大的元素放第一个位置 ,最小的元素放第二个位置。一般构造题都是按照某种规律来做的 -> 关键是找规律。通过改变,可以使他们变为一个集合,于是可以交换。如果 有两个连续的 '1' -> true。如果首尾 有 '1' -> true。思路: 贪心 + 模拟。思路:(类似于并查集)

2024-10-20 14:36:05 492

原创 补题:B. Hemose Shopping

题意:给定由 n 个元素组成的数组,现给定操作 选取索引 i j ,如果 abs( i - j ) >= x 就可以交换 swap( a[i] , a[j] ),可以进行任意次操作,如果操作后的数组是不递减的输出 " YES " , 否则输出 "NO"当 x > n / 2 时, a[1] ... a[ n - x ] 可以与 a[ x + 1 ] .... a[ n ] 交换元素。则 a[ n - x + 1 ] .. a[ x ] 不能交换,所以只需要判断这个范围内是否有序即可。

2024-10-18 17:46:33 237

原创 补题:J. Robot Factory

题意:给定一个二维矩阵,每个矩阵中的元素均为 [ 0, 15 ]的范围内,每个矩阵中的元素二进制位上为1时,就代表一堵墙(不能通过),求二维矩阵联通块大小从大到小排列。由于元素是有限的,并且范围很小,于是可以先预处理每个元素的二进制位。在通过 dfs 处理出来每个联通快的大小。思路:( dfs )

2024-10-18 17:18:54 445

原创 补题:C. Paprika and Permutation

2. 从小到大枚举每个数,若需要操作,这个数字只能变成 < ( a[i] + 1 ) / 2的任何数字。当 x

2024-10-17 15:25:20 326

原创 Codeforces Round 770 (Div. 2)

s = "abcd" 经过一次操作后 -> "abcddcba" 或 "dcbaabcd"当 n 为奇数时 ,奇数相差 k 个 , 且此时 k > 1 ,所以这种情况是错的。非回文字符串经过一次操作后会产生 2 种字符串 -> 产生的字符串均是回文字符串。假设 s = "abba" 经过1次操作后 -> "abbaabba"在二进制下 ,经过一系列的操作后,判断 操作后的数字 与 y 的奇偶。初始数字 为 x 和 x + 3 -> 一个为奇数 ,另一个为偶数。构造题:奇数一行 ,偶数一行。

2024-10-16 19:47:19 496

原创 Educational Codeforces Round 170 (Rated for Div. 2)

设 f[i][j] 为 智力提高 i , 体力提高 j 能通过的最多检查。思路:这种题往往都是具有规律的 -> 方法:打表找规律。答案: pow( 2 , k[i] ) % mod。

2024-10-15 16:20:11 564

原创 Codeforces Round 833 (Div. 2)

前缀和 1 1 1 2 1 1 2 2 1。当字符串长度 > 10 时,每个字符出现的次数至少是 2 次 ( 0 ~ 9 个出现一次,剩余字符出现 )但是数字种类就只有 10 个 ( 0 ~ 9 ),所以当字符串长度 > 100时,一定是错误的。当字符串长度 > 100 时,每个字符出现的次数至少是 11 次。当字符串长度 > 20 时,每个字符出现的次数至少是 3 次。

2024-10-09 20:25:41 409

原创 Polynomial Round 2022 (Div. 1 + Div. 2, Rated, Prizes!)

题意:思路:当 s[i-1] == '1' 时,输出 '-';当 s[i-1] == '0' 时,输出 '+';当前表达式的和 sum 0 | 1。

2024-10-08 21:38:19 212

原创 Codeforces Round 868 (Div. 2)_C题

要使数组 b 最大,则要使用更少的质数构成更多的强合成数(尽可能使用 两个相同的质数构成 )强合成数可以有两个相同的质数构成 比如 4 9 25。也可以由三个不同的质数构成 30 42。

2024-10-07 16:49:57 199

原创 Codeforces Round 975 (Div. 2)

一共有:[1,2],[1,3],[1,5],[1,6],[1,7],[2,3],[2,5],[2,6],[2,7],[3,5],[3,6],[3,7],[5,6],[5,7],[6,7]在 i 的下标中 左边一共有 i - 1 个数 ,右边有 n - i + 1,相互组合有 ( i - 1 ) * ( n - i + 1 )的贡献。点 1,7 在5个线段中包含,点2,4,6在9个线段中包含,点3,5在11个线段中包含。所以查询 5 时,输出2,查询9时,输出3 ...

2024-09-28 14:47:05 645 3

原创 Codeforces Round 973 (Div. 2) - D题

即求 最大值的最小 和 最小值的最大 -> 二分答案。尽量要 最大值变小,最小值变大。

2024-09-21 11:01:07 543 6

原创 补题篇--codeforces

由于一个字符只能增大,所以可以找到旋转位置的最大字符,每个字符都要变成最大字符,因此求出答案。

2024-09-16 10:31:51 544 1

原创 补题篇--codeforces

转换 a[i-1] = a[i-1] - 1;a[i+1] = a[i+1] - 1 等价为 a[i] = a[i] - 1;操作a[i] 时 , 会影响a[i + 1] , a[i + 2]的值,当a[ i + 1 ] < 0 或 a[i + 2] < 0 不符合题意。f[i][j] 表示状态为 i 的选法,以第 j 首歌为结尾的播放列表中的歌曲总数。因此这个题可以考虑用 状压dp。

2024-09-02 20:43:30 564

原创 Codeforces Round 969 (Div. 2)

补C题:Problem - C - Codeforces题意:给定一个数组,现可以对这个数组的某一个元素 +a 或 +b,进行若干次操作后,所能得到的最小范围(范围:最大值 - 最小值 )思路:设数组为 f[i] ( f 为排序后的数组), 操作后的数组为 d[i] =f[i] + ax + by ,由裴蜀定理得,ax + by = d 有解 -> d 是 gcd( a , b ) 的倍数 , d[i] = f[i] + k * gcd( a , b ) , 不妨等式双方同时 %d ,

2024-08-31 11:04:16 362

原创 Codeforces Round 966 (Div. 3)

签到题。

2024-08-15 09:13:36 228

原创 Codeforces Round 965 (Div. 2)

有 A , B 两人,A可以走主桥和备用桥 , B只能走备用桥,给定 n 个岛屿和 m 条备用桥,到达第n个岛屿获胜,当一个人离开岛屿后,这座岛屿和连接的所有桥都将倒塌,若 B 可以从 i ( 1

2024-08-11 20:18:40 982

原创 tarjan算法模版

【代码】tarjan算法模版。

2024-08-09 21:50:01 234

原创 Codeforces Round 964 (Div. 4)

1. 若要将所有数字变为0,则只能操作[ y/3] ,则要多进行操作[ y/3 ] ,另一个数字要进行 x * 3 , 则x = 0。3. 若1的个数为 i ,则0的个数为 k - i ,有乘法原理得C( i , cnt1 ) * C( k - i, cnt0 )2. 什么数字最容易变为0 , 最小的数字,先让最小的数字变为0,然后让其他的数字变为0。3. 每个数字变为0的操作次数是不变的,则可以用前缀和。题意:给定一个两位数,求位数之和。思路:贪心 + 模拟。

2024-08-08 10:49:50 358

原创 河南萌新联赛2024第(三)场:河南大学

令 c > b > a , sum = n * b( 平均数 * n ),若 sum >= w 则说明当前的总和过大 ,应减小,将其中。的一个 b 变为 a ,总和则是 sum + a - b,若总和过小,应增大,将其中的一个 b 变为 c ,总和为。状态表示:f[i][j][k] 从(1,1)到达(i,j)其中使用k次魔法的最大生命值。1. 处理一个前缀和 f[i] 表示从 0 到 i ,累加1的操作次数。当 n > 0 时 f(n) = n * n - n + 2。当前这个(i,j)点不使用魔法。

2024-07-31 22:16:00 305

原创 动态规划——背包模型

题目含义:一共有n种商品(每种商品只有一个),背包体积为v,并且已知每种商品的体积和价值,求将商品放入背包的最大价值状态表示:f[i][j] 为前i个物品放入背包,且总体积不超过j的最大价值状态转移方程:f[i] = max( f[i-1][j] , f[i-1][j-v[i]] )(根据物品选 或 不选 分类)

2024-07-30 12:25:19 923

原创 Codeforces Round 962 (Div. 3)

1. 如何确定一段区间内 0 1 个数相等 -> 将 0 当做 -1 ,1 当做 1处理,若0 1个数相等,则说明这一段区间和为0 f[r] == f[l-1]2. 一段区间中,a中字符串中的字符数 - b中字符串中的字符数 -> 替换的次数。通过枚举 a b , 确定 c 的个数 , 从而确定(a,b,c)的个数。1中字符串 'a' 和 'c' 的个数多于 2中的字符串 答案为2。2. 如何确定(l , r)对(x,y)的贡献 -> 扩展(x,y), (x,y) 那么x的范围 * y的范围。

2024-07-29 11:37:09 324

原创 Codeforces Round 961 (Div. 2)(AB1B2C)

一段数组中,选取子序列,要求子序列中,任意两个元素之差小于等于1,并且子序列的和小于等于 m , 求子序列的最大和。1.首先容易分析出 -1 的情况 a[ i - 1] > 1&& a[ i ] == 1。假设 a 朵花的花瓣数为 a , 一共有 x 朵 ,b 朵花的花瓣数为 b , 一共有 y 朵。1.首先所有的金钱购买 a 花 ,如若购买a花后,仍有剩余的钱,2.则购买b花,或用a花的钱 + 1 换得 b花(注意数量关系)注意 : 1.当a == 1 || b == 1 return 0。

2024-07-25 00:22:06 348

原创 Codeforces Round 960 (Div. 2)(ABCD)

原因:1 ~ y - 1 的前缀和只能是 0 或 -1 ,y ~ x ( x > y ) 的区间和 >= 2 ,那么 1 ~ x 的前缀和 >思路:先将数组排序,若最大的数为奇数个,则Aline赢 ,否则枚举第二大的数 ,若第二大的数加上最大的数个数为奇数个,则Aline赢,依次类推。1 ~ y - 1 的前缀和 ,因为 y + 1 ~ n 的前缀和只能是 0 或 -1 , 1 ~ x 的前缀和 >= 1 ~ n 前缀和,又。3 . y + 1 到 n 的区间中以 -1 ,1 ,-1 , 1交替出现。

2024-07-21 17:47:36 389

原创 P1392 取数

时间复杂度分析:n * ( mlongm ( 排序 ) + klongk ( 调和级数 ) ) == nmlongm + nklongk = 10 ^ 6 (约等于 ) < 10 ^ 8 可以AC。首先说一下 我首先想到的思路 ( 20%通过率 ):通过dfs , 将所有的情况放入priority_queue中(greater<int>),维持堆中的数据为k个 -> TLE。如若你看完题解后,仍有问题,欢迎评论。

2024-07-07 16:10:23 222 2

原创 Linux的基本指令第二篇

tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.grep "error" < log.txt:在log.txt文件中查找包含"error"的行。grep "error" log.txt | wc -l:统计log.txt文件中包含"error"的行数。管道将一个命令的输出作为另一个命令的输入,可以实现多个命令的组合和数据处理。

2024-06-23 20:05:03 1171

原创 Linux的基本指令第一篇

当我不显示列出具体目录,则认为是在当前所在的目录(pwd所显示的)当我列出具体目录时,则列出具体目录下所有的目录和文件pwd。

2024-06-16 18:45:38 765

原创 C++进阶篇章:set与map(pair , multiset , multimap)

与 set 不同的是,multiset 允许键值重复,即可以包含相同键值的多个元素。定义:pair包含在 的头文件中 ,其中pair中有两个成员变量 , 一个是first , 另一个就是second。允许重复键值: multiset 允许容器中存在相同的键值,因此可以包含多个相同键值的元素。给定一个key值 ,如果set中存在,返回1 , 不存在,返回0(与find函数相似)给定一个key,如果set中存在,返回该节点的迭代器,不存在,返回set.end()返回的是关于value的引用。

2024-05-27 16:39:25 807 2

原创 C++面向对象的第二大特性:继承

首先容我先向大家举一个列子:我这里定义了一个Person的类在这个基础上,我要定义一个关于Student , Worker 的类由于Student Worker都具有Person类中的成员变量 , 为了实现类的复用,由此引出继承。

2024-05-18 17:17:34 1054 3

原创 模版进阶篇章

回顾:函数模版 :不用传类型,编译器会自动推导,和普通的函数调用一样类模版:通过传不同的类型,编译器会自动生成不同的类,然后进行实例化对象注意:调用函数模版时,需要传对象(匿名实例化 或者 有名实例化)调用类模版时,需要传类型非类型模版参数概念:将常量作为模版参数注意:1.只有整形家族才能支持非类型模版参数2.参数在编译时就能确定。

2024-05-03 11:30:00 757 1

空空如也

空空如也

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

TA关注的人

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