数学
方哲Beans
一只小蒟蒻
展开
-
Hyperregular Bracket Strings
给出n和k,有k组区间l,r,要求满足每个区间都是匹配的括号序列,且自己整体也是一个匹配的括号序列,长度为n,求满足条件的括号序列的数量,答案对998244353取模。匹配的括号序列的数量即卡特兰数,先用异或一个随机数来标记区间,然后利用异或前缀和来记录每个位置的贡献。原创 2023-05-29 13:59:37 · 217 阅读 · 0 评论 -
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 · 349 阅读 · 0 评论 -
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 · 80 阅读 · 0 评论 -
Vlad Building Beautiful Array
偶数可以减奇数,变成奇数,所以只要最小的偶数大于最小的奇数即可,因为奇数只能减奇数变成偶数,所以最小的奇数无法变成偶数,所以机速变偶数是行不通的,最后特判一下全是奇数或全是偶数即可。给出一个数组a,a[i]可以-=a[j],j随便取,问a数组能不能变成全部元素大于0且都是奇数或都是偶数,可以输出YES,不能输出NO。原创 2023-05-20 12:10:04 · 89 阅读 · 0 评论 -
Restore the Weather
因为题目保证有解,所以只要最小的a对应最小的b,第二小对应…可以将a,b排序,然后按照大小一一映射。给出a,b两个数组和k,现在要重新排列b,使得|a[i] - b[i]|原创 2023-05-20 12:10:35 · 269 阅读 · 1 评论 -
Range Sorting (Easy Version)
随后对于每个位置i,找到它前面的合法区间和后面的合法区间,ans减去前面的合法区间*后面的合法区间。先初始化答案,即对于每个i,ans += (i - 1) * ((i - 1) + 1) / 2。即等差数列求和,把所有合法不合法的花费都加起来,后面再把合法的减去。合法即升序,不合法为非升序。给出一个数组,对所有子数组,找到其中的非升序区间r,l。其花费为r - l。原创 2023-05-15 13:34:41 · 244 阅读 · 0 评论 -
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 · 150 阅读 · 0 评论 -
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 · 103 阅读 · 3 评论 -
Divisible Array
给一个n,要求创建一个数组,使a[i] % i == 0 且数组和sum % n == 0;令a[i] = 2 * i即可。原创 2023-05-15 13:31:28 · 119 阅读 · 0 评论 -
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 · 115 阅读 · 0 评论 -
Dreaming of Freedom
如果可以一直投下去,输出NO,如果无论怎么投最后都会得到一个算法,输出YES。如果n的最小因子小于等于m,说明可以无限投,输出NO,当然,n不等于1.现在有n个人和m个算法,n个人给m个算法投票,投票数最多的算法留下来。原创 2023-05-14 21:33:47 · 103 阅读 · 0 评论 -
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 · 124 阅读 · 0 评论 -
Lost Arithmetic Progression
因为c是a和b的公共部分,设a的首项,公差,项数为a3,d3,n3,则lcm(d1,d3)== d2。我们可以枚举a数列的公差d3,对于每一个d3,a数列可以向左右分别延申d2/d3个元素,所以方案数为(d2/d3)*(d2/d3)。原创 2023-05-12 17:54:16 · 43 阅读 · 0 评论