自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 The BOSS Can Count Pairs

对于每个a[i]记录与它对应的b[i]。然后枚举a[i],用f数组记录每个选择的贡献,先求相同a[i]对应的b[i]的贡献,再求不同的贡献,注意每个循环最后f数组的处理。要求找到【i,j】的对数,使得1<=i<j<=n&&a[i]*a[j]==b[i]+b[j]。给定两个数组a和b,长度均为n。

2023-05-29 13:59:54 275

原创 Hyperregular Bracket Strings

给出n和k,有k组区间l,r,要求满足每个区间都是匹配的括号序列,且自己整体也是一个匹配的括号序列,长度为n,求满足条件的括号序列的数量,答案对998244353取模。匹配的括号序列的数量即卡特兰数,先用异或一个随机数来标记区间,然后利用异或前缀和来记录每个位置的贡献。

2023-05-29 13:59:37 173

原创 Copil Copac Draws Trees

给一个有n个节点的数,现在建树,要求当前边的两个点必须有一个点已经绘制完成,从1号点开始。如果两个点都未绘制过,则开始一次新的操作,问建成这棵树需要的操作数。其实就是模拟键边的顺序,先把每条边的序号记下来,然后对1号点的儿子进行dfs,如果对于每个点,如果当前点接入图的边的序号在其儿子节点之后,则操作数要加一。

2023-05-29 13:58:29 330 1

原创 Array merging

给出两个长度为n的数组a,b,现在每次可以取出任意一个数组的第一个元素,放到c数组的后面,c数组一开始为空,求c数组连续相等的最长子串长度。这里可以用两个map把a,b数组每个元素对应的连续相等的最长子串的长度存起来,然后找到最大值即可,具体看代码。

2023-05-29 13:57:23 196

原创 Codeforces Round 875 (Div. 2)A~E

然后枚举a[i],用f数组记录每个选择的贡献,先求相同a[i]对应的b[i]的贡献,再求不同的贡献,注意每个循环最后f数组的处理。给出n和k,有k组区间l,r,要求满足每个区间都是匹配的括号序列,且自己整体也是一个匹配的括号序列,长度为n,求满足条件的括号序列的数量,答案对998244353取模。如果两个点都未绘制过,则开始一次新的操作,问建成这棵树需要的操作数。给出两个长度为n的数组a,b,现在每次可以取出任意一个数组的第一个元素,放到c数组的后面,c数组一开始为空,求c数组连续相等的最长子串长度。

2023-05-29 13:56:21 280

原创 uniapp实现猜数字小游戏

一个uniapp的样例,超级简单~效果图在最后~

2023-05-28 23:44:44 549

原创 Bracket Coloring

这里可以用栈来匹配括号序列,因为可以反转,而且要颜色最少。对于合法序列,不难发现,最多只需要花费两种颜色即可,先全部初始化为颜色2,对于正向匹配的括号,染成颜色1,最后判断,如果存在颜色2,说明存在逆向匹配的括号,这时候再重新初始化为2,将逆向匹配的括号染成1即可,因为正向匹配的括号不兼容逆向匹配的括号,而逆向匹配的括号兼容正向匹配的括号。给出一个括号序列,定义漂亮序列为匹配括号序列或者反转之后是匹配括号序列的序列,现在要求染色,使得相同颜色的括号组成漂亮序列,问最少需要多少种颜色即每个括号染的颜色。

2023-05-26 15:39:39 129

原创 Best Binary String

给一个包含0,1,?可以换成0或1,要求换完之后使得成本最小,二进制字符串的成本定义为按非降序对字符串进行排序所需的“反转字符串的任意连续子字符串”形式的最小操作数。因为每次操作是反转连续子字符串,即反转一个区间,所以一个1或0与连续的一块1或0的操作数都是一样的,所以只需要把?替换成与前面一样的即可。

2023-05-26 15:39:00 137

原创 Educational Codeforces Round 149 (Rated for Div. 2)A~D

这里可以用栈来匹配括号序列,因为可以反转,而且要颜色最少。对于合法序列,不难发现,最多只需要花费两种颜色即可,先全部初始化为颜色2,对于正向匹配的括号,染成颜色1,最后判断,如果存在颜色2,说明存在逆向匹配的括号,这时候再重新初始化为2,将逆向匹配的括号染成1即可,因为正向匹配的括号不兼容逆向匹配的括号,而逆向匹配的括号兼容正向匹配的括号。给出一个括号序列,定义漂亮序列为匹配括号序列或者反转之后是匹配括号序列的序列,现在要求染色,使得相同颜色的括号组成漂亮序列,问最少需要多少种颜色即每个括号染的颜色。

2023-05-26 15:38:49 228

原创 Say No to Palindromes

因为要不存在长度大于等于2的回文子串,所以相邻的字符不能相同,又因为字符串只包含abc三种字符,所以不难发现,字符串只能由"abc"“acb”“bac”“bca”“cab”"cba"这六种子串组成,因此可以令f[j][i]表示前i个字符,当前匹配第j种子串,不合法的字符数,即需要的操作数,对于每次询问,枚举6种子串, ans = min(ans, f[j][r] - f[j][l - 1])即可。例如,a只能变成b或c。

2023-05-25 19:37:05 43

原创 Diane

给一个数n,要求一个字符串,要求满足所有相同的子串的数量都是奇数,输出这个字符串。不难发现只要字符串不存在对称结构即可。

2023-05-25 19:35:54 52

原创 Product 1 Modulo N

考虑1~n-1中那些元素可以选,如果x与n不互质,即gcd(x, n) == gcd(x % n, n)!= 1.因此子序列元素的乘积得与n互质,所以考虑选择1~n-1中与n互质的元素,gcd(x, n) == gcd(x % n, n) == 1就符合题意,如果最后x % n不为1,那只要把x%n这个元素去除即可。设x % n == p, 则除了p之外的乘积为ans, ans * p % n == p, <=> ans % n == 1.给一个n,(2<=n<=1e5),找到排列[1,2,…

2023-05-25 19:35:12 65

原创 Add One

给一个数n, 有m次操作,每次操作把n的每一位加一,例如1912操作一次后变成21023.问操作m次后,数字的位数。(k<=m),然后把n的每一位操作后的长度加起来即可。可以初始化0~9每一个数字操作k次后的位数f[i]

2023-05-25 19:33:42 80

原创 uniapp实现底部导航栏

其中pagePath是页面路径,iconPath是页面图标路径,是页面选中后的图标路径,text是页面名称,

2023-05-25 09:55:21 638

原创 Forever Winter

求每个点的度,最内圈的分支的度是唯一的,找到即可,设为x,然后第二圈的分支为(n-1-x)/x,n为总共节点上,减去中间节点和第一圈的分支就只剩下最外圈的点,然后再除第一圈分支数就是第二圈的分支。还有一种特殊情况,就是第一圈分支和第二圈分支相同,这样第一圈的度就不唯一的,加一个tem特判一下就行,具体看代码。给一个像下面这样的图,要求第一圈分支和第二圈分支,下图的第一圈分支为5,第二圈分支为3.

2023-05-24 17:30:18 122

原创 The Lakes

给一个n * m的矩阵,定义湖的深度为a[i][j]大于0,为0的是陆地,要求湖深度和,求最大的深度和,湖是往上下左右四个方向扩散的。简单递归题,递归找湖,找到最大深度和即可。

2023-05-24 17:27:11 162

原创 Codeforces Round 871 (Div. 4)G. Hits Different

l = l - fl, r = r - fl + 1, fl为当前层,当然,要考虑边界情况,l = max(s[fl - 1], l - fl), r = min(s[fl] - 1, r - fl + 1). 至于求区间分数和,可以用前缀和的方法求,具体看代码。给一个如图所示的三角形,输入n,击倒方块n,获得分数n*n,同时方块n上面的两个方块也会落下,同时获得这两个方块的分数,一直向上走,知道方块1,如图所示为n=9的时候掉落的方块,求获得的分数。然后维护每一层的区间l,r。

2023-05-24 13:18:01 118

原创 Codeforces Round 871 (Div. 4)H. Don‘t Blame Me‘

选a[i]: f[i][j & a[i]] = (f[i][j & a[i]] + f[i - 1][j]) % mod;不选a[i]: f[i][j] = (f[i][j] + f[i - 1][j]) % mod;给一个数组,在其中找按位与和等于k的子序列,求子序列的个数mod 1e9 + 7。动态规划,设f[i][j]表示在前i个数里面选,按位与和为j的子序列个数。

2023-05-24 12:59:32 116

原创 Ksyusha and Chinchilla

给一颗树,你可以删除其中的边,问你能否通过删除边,使得这颗树变成若干个由三个点组成的块,如果可以输出删除边的编号,如果不可以输出-1.深搜,返回的时候每遇到三个点就切一刀,如果返回的时候遇到大于3个点了,那就直接输出-1,像这种。.如果最后返回到根节点,点数不够3,也输出-1,

2023-05-20 12:14:53 126

原创 Ira and Flamenco

先记录每个数出现的次数,再用set给数组排序去重一下。对于合法的m个数,其选择方案数就是每个数的数量乘起来。然后枚举每个合法区间即可,求区间方案数,可以用前缀和来求,具体看代码。给一个数组,你要选m个数,且其中最大-最小要小于m,求方案数mod1e9+7。

2023-05-20 12:13:08 140 2

原创 Flipper

因为n <= 2000 ,所以可以暴力,因为字典序要最大,所以得找到最大的数,把它放到最前面,因此,选择的区间右端点r得固定在最大数前面,因为必须要进行一次操作,所以最大数因该从i==2开始找,找到右端点后,枚举左端点l即可。给一个排列,要求做一次操作,选择一个区间,翻转区间中的数,同时区间前面的数全部挪到后面去,区间后面的数全部挪到前面去。求操作后的最大字典序,输出最大字典序的排列,n <= 2000。

2023-05-20 12:12:24 53

原创 Round Dance

首先用并查集将a[i]和i连起来,然后每个联通块都是一组舞蹈,最多数量就是联通块的数量,因为每个人可以找两个人组合,所以环是无法再拉入人的,因为每个人都有两条边,而当一个联通块里面有链,它就可以与其他的包含链的联通块组合起来。所以最小数量就是成环的联通块,如果有存在链的联通块,就再加一,因为链可以合并起来。现在有n个人,每个人记得一个邻居,每个人可以找两个人跳舞,跳舞最少要两个人,每个人都要跳舞,首先他要去找他记得的邻居a[i],然后还可以再选一个人连起来。问最少和最多可以有多少组舞蹈。

2023-05-20 12:12:02 130 3

原创 Restore the Weather

因为题目保证有解,所以只要最小的a对应最小的b,第二小对应…可以将a,b排序,然后按照大小一一映射。给出a,b两个数组和k,现在要重新排列b,使得|a[i] - b[i]|

2023-05-20 12:10:35 229 1

原创 Vlad Building Beautiful Array

偶数可以减奇数,变成奇数,所以只要最小的偶数大于最小的奇数即可,因为奇数只能减奇数变成偶数,所以最小的奇数无法变成偶数,所以机速变偶数是行不通的,最后特判一下全是奇数或全是偶数即可。给出一个数组a,a[i]可以-=a[j],j随便取,问a数组能不能变成全部元素大于0且都是奇数或都是偶数,可以输出YES,不能输出NO。

2023-05-20 12:10:04 68

原创 Musical Puzzle

给一个字符串,每两个相邻的字符组成一个块,求有多少个不同的块。利用set去重,输出set的大小即可。

2023-05-20 12:09:48 136

原创 Codeforces Round 874 (Div. 3)(A~G)

首先用并查集将a[i]和i连起来,然后每个联通块都是一组舞蹈,最多数量就是联通块的数量,因为每个人可以找两个人组合,所以环是无法再拉入人的,因为每个人都有两条边,而当一个联通块里面有链,它就可以与其他的包含链的联通块组合起来。因为n <= 2000 ,所以可以暴力,因为字典序要最大,所以得找到最大的数,把它放到最前面,因此,选择的区间右端点r得固定在最大数前面,因为必须要进行一次操作,所以最大数因该从i==2开始找,找到右端点后,枚举左端点l即可。.如果最后返回到根节点,点数不够3,也输出-1,

2023-05-20 12:06:55 160 1

原创 uniapp中的button(按钮),checkbox(多选框),picker(滚动选择器)组件介绍

按钮。

2023-05-18 11:43:48 3115

原创 c/c++用数组模拟栈和队列

用hh表示队头,tt表示队尾插入元素获得队头元素以及弹出队头判断队列是否为空。

2023-05-18 10:40:45 66

原创 uni-app常用的一些基本视图组件

视图容器,类似于HTML中的div。

2023-05-17 16:59:31 1172

原创 加快unordered_map的速度

在用unordered_map的时候,有一些数据会让umap变得非常慢。这时候加入一下代码,可以让unordered_map的速度提升很多。

2023-05-15 17:53:44 216

原创 Codeforces Round 873 (Div. 2)

i,要求找到一个最大的k,你可以交换a[i]和a[i + k],使得a[i] == i。对于a[i],在b中找到第一个大于等于它的数,前面的小于它的位置都可以放a[i], 但是得减去前面已经放了数的位置。随后对于每个位置i,找到它前面的合法区间和后面的合法区间,ans减去前面的合法区间*后面的合法区间。随后对于每个位置i,找到它前面的合法区间和后面的合法区间,ans减去前面的合法区间*后面的合法区间。先初始化答案,即对于每个i,ans += (i - 1) * ((i - 1) + 1) / 2。

2023-05-15 13:36:50 448 2

原创 Range Sorting (Hard Version)

随后对于每个位置i,找到它前面的合法区间和后面的合法区间,ans减去前面的合法区间*后面的合法区间。先初始化答案,即对于每个i,ans += (i - 1) * ((i - 1) + 1) / 2。即等差数列求和,把所有合法不合法的花费都加起来,后面再把合法的减去。给出一个数组,对所有子数组,找到其中的非升序区间r,l。其花费为r - l。对于前面的合法区间可以用单调栈先找到区间的右端点,然后再用二进制倍增的思想找到左断点。至于每个位置后面的合法区间,可以用r数组代替,可以用单调栈的方法先预处理好r数组。

2023-05-15 13:35:41 219

原创 Range Sorting (Easy Version)

随后对于每个位置i,找到它前面的合法区间和后面的合法区间,ans减去前面的合法区间*后面的合法区间。先初始化答案,即对于每个i,ans += (i - 1) * ((i - 1) + 1) / 2。即等差数列求和,把所有合法不合法的花费都加起来,后面再把合法的减去。合法即升序,不合法为非升序。给出一个数组,对所有子数组,找到其中的非升序区间r,l。其花费为r - l。

2023-05-15 13:34:41 196

原创 Permutation Swap

给一个排列,a[i]!= i,要求找到一个最大的k,你可以交换a[i]和a[i + k],使得a[i] == i。找到每一个数的交换长度abs(a[i] - i),求gcd即可。

2023-05-15 13:33:13 84 3

原创 Counting Orders

对于a[i],在b中找到第一个大于等于它的数,前面的小于它的位置都可以放a[i], 但是得减去前面已经放了数的位置。给出两个数组a和b,求a数组有多少中排列使得a[i]>b[i],输出排序方案数mod (1e9 + 7)。即把所有位置的方案数都求出来,相乘即可。先对a和b按从小到大排序。

2023-05-15 13:33:01 134

原创 Divisible Array

给一个n,要求创建一个数组,使a[i] % i == 0 且数组和sum % n == 0;令a[i] = 2 * i即可。

2023-05-15 13:31:28 84

原创 Lunatic Never Content

找到对称的数,如果要mod x之后相等,x = abs(a[i] - a[n - i + 1]),这样mod之后两个数就会相等,因为x要大,所有对每对数的x求gcd即可。给一个数组,要求找到一个x,使得数组中每个数mod x之后回文,x尽可能大。

2023-05-14 21:51:17 76

原创 Dreaming of Freedom

如果可以一直投下去,输出NO,如果无论怎么投最后都会得到一个算法,输出YES。如果n的最小因子小于等于m,说明可以无限投,输出NO,当然,n不等于1.现在有n个人和m个算法,n个人给m个算法投票,投票数最多的算法留下来。

2023-05-14 21:33:47 44

原创 Running Miles

利用前缀和和后缀和,l[i]表示前i个a[i]+i的最大值,r[i]表示后i个a[i]-i的最大值,最后枚举每一个i求l[i]+a[i]+r[i]的最大值即可。给一个数组a,任选一个区间l,r求a[i1]+a[i2]+a[i3]-(r-l)的最大值,其中l

2023-05-14 21:25:15 34

原创 Combinatorics Problem

由组合数的递推式C(n,m)=C(n-1,m-1)+C(n-1,m)可以推出公式:f[i][j]=f[i-1][j]+f[i][j-1]首先可以发现,因为C(x, y),如果x 小于 y就没意义,所以b[k]以前的数都没意义,最后只要求b[k~n]的异或和就行了。令f[i][j]表示当k等于i是,b中符合条件的第j个数字。

2023-05-13 12:55:21 104

空空如也

空空如也

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

TA关注的人

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