Codeforces
文章平均质量分 70
h_tour
这个作者很懒,什么都没留下…
展开
-
CF 475D.CGCDSSQ ST表 + 二分
题目链接题意:给定长度为nnn的正整数序列aaa。有mmm组询问,每组询问包括一个正整数xxx。对每个询问计算共有多少个区间[l,r][l,r][l,r],满足al,al+1,…,ara_l,a_{l+1},\dots,a_ral,al+1,…,ar的最大公约数为xxx,即gcd(al,al+1,…,ar)=xgcd(a_l,a_{l+1},\dots,a_r)=xgcd(al,al+1,…,ar)=x。数据范围:题解:1.首先,我们使用STSTST表存储区间之间的最大公约数。原创 2021-08-08 22:24:58 · 142 阅读 · 0 评论 -
CF 5C.Longest Regular Bracket Sequence 栈 + DP
题目链接题意:给一个只包含′(′、′)′'('、')'′(′、′)′左右括号的字符串,询问最长的合法括号序列的长度和出现次数。题解:设dp[i]dp[i]dp[i]表示以位置为iii的右括号结尾的最长合法括号子序列的长度,状态转移方程可以得出是:dp[i]=dp[cur−1]+i−cur+1dp[i] = dp[cur - 1]+i-cur+1dp[i]=dp[cur−1]+i−cur+1,其中,curcurcur表示位置为iii的右括号所对应的左括号的位置,这个可以使用栈记录,也就是对应的栈顶元素原创 2021-08-08 21:36:43 · 179 阅读 · 0 评论 -
Codeforces 894 B. Ralph And His Magic Field (组合数学)
题目链接题意:给一个n×mn×mn×m的矩阵,现在要给每个位置填数,只能填111或−1-1−1,问有多少种方法能够使每行每列乘积均为kkk,k∈{−1,1}k\in\{-1,1\}k∈{−1,1}题解:先考虑k=1k=1k=1的情况,我们先给前n−1n-1n−1行前m−1m-1m−1列填好数字,这时可以随便填,因此现在的方案数就是2p, 其中p=(n−1)∗(m−1)2^p,\ 其中p=(n-1)*(m-1)2p, 其中p=(n−1)∗(m−1)。填完之后,我们再填前n−1n-1原创 2021-04-22 12:15:27 · 110 阅读 · 0 评论 -
CF1152C Neko does Maths
题目链接题意:给我们两个整数aaa和bbb,让我们给a,ba,ba,b同时加上一个非负整数kkk,使得lcm(a+k,b+k)lcm(a+k,b+k)lcm(a+k,b+k)最小,如果lcmlcmlcm一样小,则让kkk最小。输出kkk。题解:a和ba和ba和b可以表示成:a=x1∗g+y,b=x2∗g+ya=x_1*g+y,b=x_2*g+ya=x1∗g+y,b=x2∗g+y。其中,ggg是aaa和bbb的最大公约数,yyy是他们共同的余数。那么我们其实要做的就是把余数yyy补上一个kkk,原创 2021-04-19 18:22:26 · 92 阅读 · 0 评论 -
F. Equalize the Array
来源:Codeforces #702(div 3)https://codeforces.com/contest/1490/problem/F题意:给定一个长度为n的数组,问最少删除多少个数,使得新数组中每个数出现的次数相同。题解:记录每个数出现的次数,然后存入numnumnum中,按从大到小排序,那么每个次数需要保留的元素个数就是num[i]∗(i+1)num[i]*(i+1)num[i]∗(i+1),也就是,所有出现次数大于等于当前次数的元素个数 × 当前出现次数。将num里的每个元素枚举一遍,原创 2021-02-24 14:19:10 · 208 阅读 · 4 评论 -
Codeforces #704(div 2) A~D题解
A. Three swimmers题目链接题意:给四个整数p,a,b,cp,a,b,cp,a,b,c。其中a,b,ca,b,ca,b,c分别表示三个游泳者到达泳池边的时间点,比如,第一个游泳者到达泳池边的时间就是0,a,2a,3a,…0,a,2a,3a,\dots0,a,2a,3a,…。p表示的是一个人来到泳池边的时间点,问这个人在泳池边要等多久才能见到第一个到达泳池边的游泳者。题解:直接找a,b,ca,b,ca,b,c的大于等于p的最小倍数即可。注意数据范围比较大,保守起见开了unsigned&原创 2021-02-24 10:39:45 · 248 阅读 · 2 评论 -
Codeforces #703(div 2) 部分题解
C. Guessing the GreatestC1简单版本链接C2较难版本链接这是一道交互题。二分。题意:给我们一个长度为n的一个排列,每次我们可以对一个区间进行询问,每次询问返回当前区间第二大的元素下标。让我们在有限次数内,找到这个排列的最大值的下标。题解:基本上交互题都是使用二分解决。这道题也不例外。我的做法就是,在第一次询问时,直接询问1 n1~n1 n这整个区间,找到第二大的元素下标,然后判断最大的元素在该元素的左侧还是右侧。判断的方法就是,比如目前第二大元素的下原创 2021-02-19 17:05:37 · 181 阅读 · 2 评论 -
Codeforces #690(div 3) 部分题解
Codeforces #690(div 3) 部分题解D. Add to Neighbour and Remove题目链接大致题意:给你长度为n的数组a,你能进行的操作就是将任意一个元素a[k],使其任意一个相邻元素a[k−1]a[k - 1]a[k−1]或a[k+1]a[k + 1]a[k+1]加上a[k]a[k]a[k],并...原创 2021-02-16 19:17:45 · 112 阅读 · 0 评论