自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

give it a try

花还会开,不同的春来了又来

  • 博客(43)
  • 收藏
  • 关注

原创 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 267

原创 杭电多校第四场 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 412

原创 杭电多校第四场 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 233

原创 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 349

原创 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 254 1

原创 智算之道 - 情报战 (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 147

原创 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 291

原创 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 344

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

什么是拓展欧几里得?所谓拓展,就是在欧几里得的基础上得出的推论。拓展欧几里得就是根据欧几里得的原理(辗转相除),可以算出二元一次方程组的整数解和乘法逆元拓展欧几里得: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 366

原创 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 124

原创 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 104

原创 杭电多校第一场 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 167

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

费马小定理:若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 4318 5

原创 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 189

原创 洛谷 - 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 333

原创 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 165

原创 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 144

原创 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 236

原创 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 1224

原创 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 156

原创 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 195 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 166 1

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

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

2020-07-18 22:03:47 147

原创 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 268 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 351

原创 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 530

原创 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 327

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

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

2020-07-10 16:12:24 499

原创 更相减损数

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

2020-07-10 00:00:53 563

原创 洛谷 -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 557

原创 洛谷 - 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 222

原创 欧拉函数定理及其性质

欧拉函数就是指:给定一个n,求得1到n中与n互质的数的个数再介绍欧拉通项前,首先得介绍唯一分解定理那么求一个数的欧拉值的公式为:φ(n)=n * (1-1/P1) * (1-1/P2) * … * (1-1/Pn)其中的P1到Pn为n分解出来的质因子那么求一个数的欧拉值的时间复杂度为O(sqrt(n))代码实现:int euler(int n){ int ans = n; for(int i = 2;i * i <= n;i++)//标准的分解质因子的模板 {

2020-07-07 11:14:30 1535

原创 Codeforces Global Round 9 - D. Replace by MEX (暴力破解)

题目传送思路:咦,比赛的时候暴力写岔了一个地方,没写出来没有什么好讲的,暴力干就完事,题目中的k < 2n是迷惑人的,我直接暴力变成下面的数组,无论怎样都不会超过2n次我们直接把这个数组变成 0 1 2 3 4 5 6 … n-2 n-1 即可枚举目前的未出现的最小非负整数,然后添加到相应的位置,如果枚举出来的是n,那么我们就把他添加到一个i != arr[i]的位置即可AC代码#include <bits/stdc++.h>inline long long read(){

2020-07-06 18:59:23 215

原创 洛谷- P1983 车站分级 (拓扑思想)

题目传送题意:思路:由题意可知,起点和终点之间的没有停的站台点一定是比停了的站台点的级数低,所以这里就有一个大小关系,我们可以把没有停的站台点到已经停了的站台点之间连一条边。然后最后利用拓扑的思想来判断最多有几级。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 ==

2020-07-06 13:57:14 192

原创 Codeforces Global Round 9 - A. Sign Flipping (思维,贪心)

题目传送题意:给你一个n大小的数组(n一定为奇数),现在你可以改变其中元素的符号,现在要求你在操作后,使得有至少一半的ai <= ai+1,至少有一半ai >= ai+1,现在让你构造出这个数组思路:我们直接正负正负的一直下去,由于n为奇数,那么肯定就满足条件了AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c <

2020-07-05 10:42:02 427

原创 Codeforces Global Round 9 - B. Neighbor Grid(贪心)

题目传送题意:给你一个二维数组,现在要求二维数组中的每一个位置的元素值的多少都要对应于周围有多少个相邻的不为0的数的个数。现在你每次可以对二维数组的元素加一,问是否能构造出这样的二维数组。思路:既然没有规定操作的次数,那么我们何不直接把操作数拉到最大再看呢?我们直接构造成这种矩阵即可。但是我们现在的操作只能加上某个数,所以如果最开始的初始矩阵的位置上的元素值大于上面的对应位置的的元素值就无法构造AC代码#include <bits/stdc++.h>inline long lo

2020-07-05 10:34:23 377

原创 Codeforces Global Round 9 - C.Element Extermination (栈,贪心)

题目传送题意:给你n大小的数组排列,现在如果有俩个连续的数满足ai < ai+1,那么你可以删去其中的一个数,现在问:在进行上述操作后,是否有可能使得数组元素为1思路:分情况贪心:1.如果栈为空,那么直接把这个元素收入栈中2.如果现在输入的元素小于栈顶元素,那么执行不了删除操作,把现在输入的元素入栈3.如果现在输入的元素大于栈顶元素(满足操作删除条件)(1)如果现在的栈中元素个数为1,那么我们直接删除现在输出的元素(因为现在栈中的元素比较小,我们要把小的让出来,使其尽可能的去匹配后面的

2020-07-05 10:20:03 567 2

原创 洛谷 - p2241 统计方形 (数学)

题目传送题意:思路:一个长为2,宽为3的方形中:长为2,宽为1的长方形的数量为:(2 - 0) * (3 - 1) + (2 - 1) * (3 - 0)正方形边长为1的数量为:(2-0) * (3-0)边长为2的数量为:(2-1) * (3-1)子矩形的数量为原矩形的的长和宽减去一定长度来获得的,且长和宽减去的长度不能相同的为长方形,相同的为正方形,AC代码#include <bits/stdc++.h>inline long long read(){char c =

2020-07-04 21:25:05 389

原创 Bellman-Ford 求最长路

洛谷 - P1807题目传送题意:思路:只有DAG(有向无环图)才有最长路最长路其实思想和最短路的思想是一样的,如果没有负权值,那么我们完全可以用dijkstar解决(在枚举当前最短路径的时候,直接枚举最长路径即可)。但是很不幸,这个题有负权值,那么dij解决不了,如果用floyd的话,看到数据为 1 <= n <= 1500,看到会t掉。所以这里用另外一种方法解决,他就是 Bellman-Ford (时间复杂度为(n*m),也就是点的数量乘边的数量,求单源路径)算法原理:才

2020-07-03 21:55:11 1056

原创 Codeforces Round #654 (Div. 2) - D. Grid-00100 (思维,构造)

题目传送题意:给你k个1,让你构造出一个n*n的二维数组,使得数组中列和的最大值-列和的最小值的平方 + 行和的最大值 - 行和的最小值的平方最小。思路:要如何构造呢?肯定是每次把1添加到一列中和一行中1最少的位置。而我们怎么判断最小值是多少呢?我们想想其实只有0和2中俩种,因为按这种摆法最多也就是 最大值和最小值的差值为1。AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();lon

2020-07-02 11:24:38 238

空空如也

空空如也

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

TA关注的人

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