自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无愧于人

只要心情是晴朗的,人生就没有雨天

原创 POJ - Permutations(群论,置换群)

题目传送很好的置换群的入门题,题目中已经把上面是置换群是什么讲得很清楚了每一个数都有一个循环节长度,所以要满足要求就求所以循环节的长度的lcm即可。这里要说的是:如果一个数已经出现过了(前面计算循环节的时候记录过),那么在后面遇到这个数的时候,这个数的循环节也和在记录另外一个数的循环节长度一样,所以可以不管(可以减少时间复杂度)AC代码#include <bits/stdc++.h>inline int read(){char c = getchar();int x = 0,s =

2020-08-08 23:10:09 4

原创 Codeforces Round #662 (Div. 2) C. Pinkie Pie Eats Patty-cakes (思维,分块)

题目传送题意:给你n个数,问你相邻俩个相同的数的最大最小距离是多少思路:我为什么写了个分块在标题上面呢?例:有数 1 1 1 2 2 2 3 3 3 4 4 5 6那么我们是如何分呢?1.我的方法是先统计相同的数的最多出现的次数(Max),和拥有相同Max的数的个数(sum)。2.这里Max = 3,sum = 3,那么我们肯定要使得这些数尽量的错开,也就是1 2 3 1 2 3 1 2 3这种错开(我称为把1 2 3 作为一块)3.这样做可以使得相同的数距离的最远,那么我们发现还有4 4

2020-08-08 22:05:36 9

原创 Codeforces Round #662 (Div. 2) A.Rainbow Dash, Fluttershy and Chess Coloring (思维)

题目传送思路:说实话想了挺久的。。。。答案为n/2 + 1那么我们来证明:首先:最开始,我们只能填最外围的一圈,而这最外围的一圈,无论n是多少,都要填俩次才能把最外围的填满,而在第二次的时候,我们不仅仅的填了最外围的一层,还往里面又填了一次,但是同理,这一次是填不完的,还需要再填一次,才能把这层填完,然后就依次下去,一层一层的填下去,就只有最外围的一层填了俩次,其他层都只用一次即可填满(而在最后一层,也就是只有一个方格的时候,这一次被上一层填满的时候就能填满了)而每一层之间的差距方格数差距为2,

2020-08-08 20:01:47 19

原创 Codeforces Round #662 (Div. 2) B.Applejack and Storages(思维)

题目传送题意:给你,n块木板,再q次询问的情况下(询问时会添加或者减少木板),问在当前询问下是否能使用现有的木板构成一个正方形和一个矩形(也可以是正方形)?构成的时候,每一条边是只能用一块木板思路:千万不要读错了,每一条边的构成只能用一块木板的那么我们现在只用记录现在有多少组木板长度一样的(4个为一组记为ans1),在除去前面的一组的情况下,还有多少组长度为一样的(2个为一组,记为ans2)如果ans1 >= 2 (能构成俩个正方形) 或者 ans1 == 1 && ans

2020-08-08 19:50:39 24

原创 2020牛客暑期多校训练营(第八场)G. Game SET(暴力就完事)

题目传送思路:恶心的暴力…不过多锻炼锻炼自己写代码的能力也还行AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x = x*10

2020-08-06 22:26:11 15

原创 2020牛客暑期多校训练营(第八场)K.Kabaleo Lite(前缀和,高精)

题目传送题意:有n道菜,第i道菜有bi盘,每盘利润为ai(利润可能为负)。遵循以下规则为每个顾客上菜:● 每位顾客至少有一道菜。● 每位顾客都得到从1开始的连续编号的菜,每道菜只吃一盘。问能容纳的最大的顾客数,已经可赚取的最大利润。思路:首先,最多的人数肯定是第一道菜的人数。其次,要最大利益,那么我们前缀和,贪心先拿最大的利益,依次下去(我不知道暴力会不会t),但是这个东西爆了long long,只有用__int128过,但是奈何cb不支持这个东西,我又不会Dev,就只能用py了。。这里讲

2020-08-05 22:09:53 18

原创 2020牛客暑期多校训练营(第八场) I.Interesting Computer Game(并查集求连通块以及判环)

题目传送题意:一个游戏有N个回合,每回合提供两个整数ai和bi,每回合只能选以下三个操作之一。不做任何操作。如果ai没被选过(指ai的数值),可以选择ai。如果bi没被选过,可以选择bi。先给出所有a1,a2,…,an与b1,b2,…,bn,求出选择的最多整数数量。思路:我们把每一回合的俩个数连成一条边,那么现在这些边与边互通,我们用并查集记录他现在的根,不断更新,然后求出来,最后有几个连通块,以及在这些连通块中,有几个是环,如果一个连通块是环,那么这里面的数全部都可以选(可以自己画画图来验

2020-08-04 22:25:00 29

原创 2020牛客暑期多校训练营(第七场)

D.Fake News这个东西…要不打表出来,要不你去证明叭…证明在这:一位初中生的碾压性证明打表发现只有1和24可以#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' &&amp

2020-08-03 22:02:29 47

原创 除法分块 - 数论

问题:当我们暴力的时候时间复杂度为O(n),但是我们可以把时间复杂度降到O(sqrt(n)),这点时间优化在数论中可是不能小视的。除法分块所谓分块,就是把一段数分成不同的区间,而这些区间的每一个数除以同一个数的值是相同的,所以我们就把这些区间统一处理,就不用再来一个一个遍历例: 问题中我们假设n = 10。那么我们现在分一下{1},{2},{3},{4,5},{6,7,8,9,10},分别分成这几块因为他们除以n的值是相等的那么我们用代码怎么分呢?先贴模板: ll l = 1,r,n;

2020-08-02 22:35:55 30

原创 Educational Codeforces Round 92 (Rated for Div. 2) C - Good String (思维)

题目传送题意:给你一个字符串,现在有俩种操作,一种是字符串所有位都向左平移一个单位,另一种是向右平移一个单位,现在要使得这个字符串俩种操作后的字符串还是相等的,问最少改动多少个字符?思路:既然要平移后的字符串还是完全相等的,那么可以得到:s[i-1] == s[i+1] (向右平移的和向左平移的),那么再推一下就可以得到只有俩种字符串是可以的:1111111 或者 2525252525(这种只能是偶数)那么由于是只有0到9的数字组成,那么当然也就20种情况,暴力跑一下就可以了AC代码#i

2020-07-30 22:02:18 29

原创 杭电多校第四场 Blow up the Enemy

题目传送思路:暴力即可,但是要注意,第一次俩者是不需要等待,直接发起攻击,所以在计算击杀对方时间的时候还要减去第一次所需要的时间AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0'

2020-07-30 21:29:36 100

原创 杭电多校第四场 Kindergarten Physics

题目传送思路:我真的是醉了,万有引力我以为是俩物体间的相互引力作用,谁知道他们俩是做的自由落体(要不就是翻译的锅)。既然是都在做自由落体,那么他们的相对距离肯定是不变的。AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar(

2020-07-30 21:17:24 76

原创 Educational Codeforces Round 92 (Rated for Div. 2) A.LCM Problem(思维)

题目传送题意:给你 l,r,让你求俩个数l <= x < y <= r ,并且l <= Lcm(x,y) <= r,思路:既然1求一个满足的,那么我们只用使得求出来的Lcm是最小的即可,最小为多少呢?就是 l 和 2l,如果r < 2l,那么就不成立AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(

2020-07-30 13:58:36 160

原创 2020牛客暑期多校训练营(第六场)

B.Binary Vector题意:设A={0,1},每天Roundgod从{A^n}(即维度为n,每一位由01组成的所有向量的集合)中随机选择一个二进制向量。现在他想知道n天中选取n个线性独立向量的概率在mod1e9 + 7 下的值。其实也可以根据题目下面给出的提示去猜出公式,但是这里的数据实在太大,所以我要打表。已经知道1/2 %mod == 5e8 + 4,我们推出f(n) = f(n-1)*(2n - 1) / (2n)根据此公式推出:分母的公式为2 1 + 22 + 23 + …

2020-07-28 20:50:20 58

原创 智算之道 - 情报战 (dfs + 记忆化)

题意:思路:每知道一个数,我们就能知道与这个数相对应的其他数,在知道其他数的同时我们又知道了,其他数所对应的其他数,所以一直这样递归下去,再加上个记忆化就可以了AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}

2020-07-26 13:44:15 26

原创 Codeforces Round #659 (Div. 2) C. String Transformation 1(贪心,思维)

题目传送题意:给你俩个长度都为n的字符串a和b,现在每一次操作可以选定改变字符串a中的相同字符只要是相同的,都可以一起改变,或者选几个改变 ,但是只能变大,问你现在把a改变成b的最小操作数思路:首先明确一定,我们选择的字符串只能改大,不能改小。1.所以当字符串a中的对应位置的字符大于b中的时候,直接输出-12.那么当排除不可能的情况后,我们怎么操作能使得操作数最小呢?这里我们记录下每个字符需要改变到的字符,如aaa -> bcd 那么a要改3种: a-> b ,a-> c,a-

2020-07-25 20:26:47 126

原创 Codeforces Round #659 (Div. 2) A. Common Prefixes(思维,构造)

题目传送题意:给你一个n大小的数组,打印n+1个字符串,使得后一个字符串与前一个字符串的最长相同前缀长度对应于数组中的大小思路:贪心。我们先构造出一个200长的字符串(因为题目中的限制就是200)然后先打印出第一个字符串,第二个字符串则改动相应位置,使得最长前缀长度对应于数组中的值,然后依次下去AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;

2020-07-25 17:25:31 96

原创 拓展欧几里得求方程整数解和逆元

什么是拓展欧几里得?所谓拓展,就是在欧几里得的基础上得出的推论。拓展欧几里得就是根据欧几里得的原理(辗转相除),可以算出二元一次方程组的整数解和乘法逆元拓展欧几里得:ax + by = c我们知道这个方程组在实数范围内是有无数个解的。但是在整数的范围内他却存在着有限个解。首先介绍裴蜀定理这里再证明一下:为什么在整数解的情况下,c一定是gcd(a,b)的倍数呢?例:2 * x + 4 * y = c那么c无论如何都是偶数,换句话来说,c一定是2的倍数2 = gcd(2,4)3 * x

2020-07-24 22:16:06 34

原创 2020牛客暑期多校训练营(第二场)

D.Duration水题:#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x = x*10 + c -'0';c = getchar();

2020-07-24 21:01:45 35

原创 2020牛客暑期多校训练营(第一场)

题目传送F.Infinite String Comparision单独写了一篇J.Easy Integration(数学)题目传送需要掌握知识点:分数取模就是分子 * 分母的逆元%mod,分母逆元就为分母^(mod-2)%mod公式推导结果为:(n!)^2 / (2 * n + 1)!AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;wh

2020-07-24 17:57:21 20

原创 杭电多校第一场 Distinct Sub-palindromes(思维,构造)

题目传送题意:使用26个小写的英文字母,构造长度为n的字符串s。字符串s的 本质不同的回文子串的个数最少,求字符串s种类的数量。思路:这是个纯思维构造问题,分情况:情况1:当n <= 3时,我们直接这样构造: a,aa,aaa,这种,这样的回文子串一定最少当n > 3时,我们这样构造,一直abcabcabc…这样的回文子串数量一定是3.AC代码#include <bits/stdc++.h>inline long long read(){char c = getc

2020-07-23 21:35:15 18

原创 分数取模(费马小定理)

费马小定理:若p是质数,且p与a互质,有等式:a^(p-1) %p == 1 % p那么我们在这上面变一下型:俩边同除aa^(p-2)%p == a^(-1)%p那么我们再在俩边同乘b(b / a)%p == b*a^(p-2)%p所以分数b/a 模 p的结果就为b* a^(p-2)%p这其实也是求出了其除法逆元...

2020-07-23 14:27:51 76 4

原创 Codeforces Round #658 (Div. 2) D. Unmerge(分块,背包dp)

题目传送思路:首先得观察到一个规律,如果某个数的后面紧跟着的数中有一段比他小的数,那么这一段数肯定是在一个数组中的,例: 5 3 1 4 2 10 7 8 9 6 ,那么可以分成三段 [5 3 1] ,[4 2] ,[10 7 8 9 6],那么分段有什么意义呢?我们知道了可以把这些段分出来,那么我们现在就可以把段自由组合一下,如果能组合成一个长度为n的数组,那么就成立了,如何自由组合?这很像背包dp,代价为段的长度,价值也为段的长度AC代码#include <bits/stdc++.h&g

2020-07-22 18:13:51 59

原创 洛谷 - P1290 欧几里德的游戏 (博弈论)

题目传送思路:假设n < m1.如果当前m为n的整数倍,那么这个人肯定赢了2.如果现在m / n >= 2 的话。有方程 m = k*n + z (k为m/n,z为余数),那么现在这个人就可以拿到(n,z)或者(n,n+z)这俩种情况,因为当m / n == 1的时候,拿到的人不能有任何操作,只能拿成(m-n,n),所以接下来谁赢就只能看递归的次数了,然而我要是都能拿到上述俩种情况,那么自己最后拿到的最终递归结果是能被自己控制的。综上:如果谁先拿到m/n >= 2,直接赢

2020-07-22 17:22:16 25

原创 Codeforces Round #658 (Div. 2) C.Prefix Flip(思维,贪心)

题目传送题意:给你俩个长度为n的二进制字符串a,b,现在你可以进行操作:翻转字符串a的任意前缀,(0变成1,1变成0),然后把翻转后的前缀再倒序,现在你最多有2*n次这个操作,让你打印怎么操作的,使得字符串a等于b思路:贪心一下,先把字符串a全部变成0或者1(至于是0还是1不重要) string a,b; cin >> a >> b; a = " " + a,b = " " + b; vector<int> v;

2020-07-22 15:15:23 32

原创 2020牛客暑期多校训练营(第四场)H.Harder Gcd Problem(数学)

题目传送题意:给出1 - n的数字,让选择m对数字,让gcd(a_i,b_i)>1,让m尽可能大,并且输出这m对对应的数字。思路:既然要m尽可能的大,那么肯定就是要求配对的越多。那么需要配对得越多,那么就需要充分的利用他们每个数的因子,来进行某种完美匹配,以达到最多的匹配数目,那么我们就想这种匹配方法就可以了完美匹配的方法:用埃氏筛来进行变化,筛出每个数的质因子个数,质因子种类数,以及最小质因子和拥有每种质因子的数集合。 for(ll i = 2;i <= n;

2020-07-21 16:55:59 35

原创 2020牛客暑期多校训练营(第四场)F. Finding the Order(思维)

题目传送题意:给你在已知AB//CD的情况下,给出AC,AD,BC,BD的长度,让你判断是是AB//CD还是AB//DC思路:签到题总是给我惊喜的做法,感觉思维再一次被碾压看图我们知道三角形任意的俩边之和大于第三边那么根据图中可知:在AB//DC的情况下,ac + bd > ad + bc在AB//CD的情况下,ad + bc > ac + bd所以我们直接判断ad + bc和ac + bd的大小情况即可了AC代码#include <bits/stdc++.h&g

2020-07-20 21:39:56 69

原创 2020牛客暑期多校训练营(第四场) B.Basic Gcd Problem(数学)

题目传送题意:给定一个函数给你x和c,问这个函数的值是多少?思路:首先得把这个函数看懂,要是看都没看懂,还怎么做题。举个例子:f(8)的最大值为 f(8) = c * f(gcd(8,4) == 4),那么f(4) = c * f(gcd(4,2) == 2) , f(2) = c * f(gcd(2,1) == 1) = c综上:max f(8) = ccc可以注意到,这个函数的递归退出条件就是gcd(i,x) == 1的时候,这时的f(1) = 1,那么既然退出递归的时候f(x)的

2020-07-20 15:28:23 967

原创 Codeforces Round #657 (Div. 2) B. Dubious Cyrpto (思维,数学)

题目传送题意:给定l , r , m 。让你求出等式中的a,b,c 。 m = n*a + b - c,其中n是任意的正整数,l <= a,b,c <= r思路:既然n是任意的正整数,那么我们直接枚举a的情况,再来判断b-c的情况。1.先在 l 到 r 的范围枚举a,那么这个时候的b-c有俩种情况就是n*a 或者 (n+1)*a,但是这里有个坑,就是n必须大于0,所以我们就得先判断(n+1)*a,因为这种情况一定是大于0的。2.那么我们a可以枚举,我们怎么判断b和c呢?就只用保证

2020-07-19 21:56:06 60

原创 Codeforces Round #656 (Div. 3) D. a-Good String(分治)

题目传送题意:给定一个字符串s,长度为偶数我们规定一个字符串叫做c-good,如果它满足以下任意一个条件:字符串长度是1,且包含字母c字符串长度大于1,左半边都是c,右半边为c+1-good字符串长度大于1,右半边都是c,左半边为c+1-goodc+1就表示字符 c+1 = d例:s="cdbbaaa"是一个a-good字符串它的右半边全是a;它的左半边"cdbb"是b-good a+1 = b ,因为:"cdbb"的右半边全是b;"cdbb"的左半边是c-good b+1 = c

2020-07-19 12:01:17 64 2

原创 2020牛客暑期多校训练营(第三场) B.Classical String Problem(思维)

题目传送题意:给你一个字符串,现在给你n个操作,如果输入的操作是A,那么输出现在的第x个位置的字符。如果是M,如果x为正,那么现在字符串的最左边的x个字符移到末尾,如果x为负,那么把最右边的x个字符串移到左边。思路:我们只需要记录现在的字符串的开头位置是哪个位置就行了比如:abcdefg现在的开头位置是0,如果现在我们现在把最左边的3个字符移到右边,那么现在的开头位置就是d,那么0 + 3就是现在的开头位置,s[3]。那么现在如果我们要查询第3个位置,那么就是在现在的开头位置的基础上加上3,

2020-07-18 23:23:33 39

原创 Codeforces Round #656 (Div. 3) C. Make It Good(思维)

题目传送题意:给你一个数组,让你删除最少的前缀,使得删除后的数组,在只能把第一个元素或者最后一个元素添加到另外一个空数组情况下使得空数组添加后得到的数组递增排序。思路:我们先想如何能在删除前缀后,使得剩下的元素能满足在只添加第一个元素,或者最后一个元素的情况下使得另外那个添加的数组递增。那么只有一种情况是可能的,就是这个数组是直接先递增再递减的的这种,但是我们现在的删除前缀是不确定的,所以我们直接从后面开始枚举,先遍历到从后往前递减序列,一直遍历到不成立的那个点,然后再往前遍历递增的序列,再遍历到

2020-07-18 22:03:47 40

原创 2020牛客暑期多校训练营(第一场)F.Infinite String Comparision(什么叫思维拉胯...)

题目传送题意:给你a字符串和b字符串,这俩个字符串是无限长的,例:如果输入abc,ab,那么a = abcabcabcabc…,b = ababababababa…,现在叫你比较他们俩的大小思路:最开始我想把他们的长度拉到一样长,求了他们的Lcm,结果内存爆了,后来又想了想,只用把长度都变成俩倍就够了,但是这不是我要讲的。方法:直接比较 a+b 和 b+a 的大小就行了。为什么呢?现在假设len(a) < len(b)情况1:如果前len(a)个字符有大小关系,那么就直接输出就是了

2020-07-15 16:58:15 82 2

原创 Educational Codeforces Round 91 (Rated for Div. 2) D.Berserk And Fireball(思维,暴力破解,分情况)

题目传送题意:现在有一个排列,再给出一个删除后的数组,删除操作只有俩种:一种是,选择连续的k个数,删除,消耗x点代价。另一种是,选择连续的俩个数,删除其中小的数,消耗y点代价。现在问,能否得到删除后的数组,如果不能输出-1,如果能,请打出最小代价。思路:很明显就是分情况操作,先记录下,每个数的位置,然后在删除后的数组中对应起来,看删除的哪些数,枚举删除的数的最大值(这里要注意,因为区间不会重复,所以我们暴力枚举最大值,最坏也就总共2e5次操作),再看删除的这些数是否满足删除条件。1.如果y*k大于

2020-07-15 00:02:36 139

原创 2020牛客暑期多校训练营(第二场) F. Fake Maxpooling (单调队列维护二维的矩阵)

题目传送题意:给你一个nm的矩阵,矩阵中的每一项Aij的值为Lcm(i,j),现在问求所有大小为kk的子矩阵中的最值,然后把每个最值加起来,问这个值是多少?思路:单调队列先去维护行这一维的最值,然后就会又形成一个矩阵,然后在这个矩阵上面去维护列这一维的最值,就得到了每个子矩阵中的最值,有点类似于矩阵压缩。AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s =

2020-07-13 19:18:00 268

原创 Codeforces Round #655 (Div. 2) - C. Omkar and Baseball (思维)

题目传送题意:给你一个排列,让你用最少的次数重新排列使得其递增排布,重新排列的要求是,排列后,每个元素的位置都要与排列前不同思路:仔细想一下,其实无论怎样也就最多排俩次就够了(先排一次全部序列,使其位置与元素值都不同,然后再排一次就可以了)所以这里就分情况就可以了我们记录这个序列中有多少个位置的下标与元素值相等(用ans记录)1.如果ans == n,也就是全部都相同,那么这个序列就是递增的,输出0次2.如果ans == 0,那么就只用排一次,但是这里必须有个前提,例: 3 1 2 4,这

2020-07-12 10:10:22 155

原创 洛谷 - P1638逛画展(单调队列思想)

题目传送题意:思路:我最开始想的是,最大的满足条件的情况就是整个序列,然后枚举左右端点去判断,判断是否在当前的序列中的该种的数量大于1,如果大于1就删,如果没有大于1,那么就不删它。然而现在面对的一种情况就是,左右端点的值都相同,而且刚好该种类型的就他们俩个,那么就无法确定删哪个,而用递归去解决这种情况的话又太复杂了,所以这里有另外一种思路:我们最开始,先从左往右依次遍历,直到枚举到,当前的序列中有所有的种类,那么我们再看是否左端点的数量在当前序列中的数量大于1,如果大于1,就删除,然后再次判断

2020-07-10 16:12:24 39

原创 更相减损数

上次做了个题,用到了这个的一点原理,原来以为会用辗转相除法就可以了。。。。更相减损术很简单:古文原文:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。算法思想就是:俩数相减(大减小),然后用减出来的数替换掉大的那个数,然后重复,直到减出来的数和上次的减数相等,则停止,这个数就是俩者的最大公因数。例:12 4第一步:12 - 4 = 8,替换后数为 8 4第二步为:8 - 4 = 4,现在的的减数与减出来的结果相等,那么4就是他们的最大公约数之所以不常用

2020-07-10 00:00:53 44

原创 洛谷 -P1147 连续自然数和 (数论)

题目传送题意:思路 :首先我们知道连续的自然的和的公式为:(L+R) * (R-L+1)/2根据题意我们得出:(L+R) * (R-L+1) == 2*n我们假设现在k1 * k2 == 2*n,且假设k2 > k1那么k2 = (L+R),k1 = (R-L+1),根据这俩个方程得出:L = (k2 - k1 + 1) / 2R = (k1 + k2 - 1) / 2那么L,R必定为整数,所以又得出,k1,k2肯定一奇数一偶数那么我们现在就枚举k1来获得k2,再来判断成立

2020-07-08 00:15:33 45

原创 洛谷 - P2032 扫描 (单调队列)

题目传送思路:单调队列模板题没有什么好解释的,就是再熟悉下模板就是在k区间内维护数组的单调性AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c &l

2020-07-07 23:37:35 46

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