思维
_Rikka_
- v -
展开
-
D. Remove Two Letters (思维)
贪心思维题原创 2023-03-03 15:28:52 · 604 阅读 · 1 评论 -
蓝桥杯国赛---平方拆分(dfs)
问题描述将 2019 拆分为若干个两两不同的完全平方数之和,一共有多少种不同的方法?注意交换顺序视为同一种方法,例如 132 + 252 + 352 = 2019 与 132 + 352 +252 = 2019 视为同一种方法。思路暴力dfs,运用递增保证不重复。#include <iostream>using namespace std;typedef long long ll;ll num=0;void dfs(int n, int begin){ if (n &l原创 2021-05-31 23:38:00 · 663 阅读 · 0 评论 -
天梯赛 整除光棍 (math)
天梯赛L1-046 整除光棍 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,原创 2021-04-18 18:16:00 · 205 阅读 · 0 评论 -
1498B - Box Fitting (优先队列)
题目思路:开一个优先队列存放每一行(高度1)还剩余的长度,将所有的木块从大到小排序,1开始遍历,如果优先队列中还能容纳最大的长度比当前木块大则加入到当前高度所在行,否则另开一行存放。Code:#include<iostream>#include<algorithm>#include<set>#define ll long longusing namespace std;const int Max = 1e6 + 5;int lst[Max];int原创 2021-03-30 14:04:15 · 677 阅读 · 0 评论 -
1506D Epic Transformation(思维、贪心)
题目思路:假设有只有一种数字,答案为该数字数量,两种数字,答案为大的数量减去小的数量,三种数字,假设数量从小到大排序 s1 s2 s3 ,可以知道当s1+s2<=s3, 答案为s3-(s1+s2) 当s1+s2>s3 ,如果(s1+s2+s3)%20,答案为0,(s1+s2+s3)%21,答案为1(这里好好想想应该不难,cf有一道800分的题就是只有三个数的)。然后对于数字种数为3个以上的情况,其实都可以转化为3个的情况。Code:#include<iostream>原创 2021-03-26 11:43:36 · 371 阅读 · 1 评论 -
C. Nauuo and Cards (贪心、思维)
题目思路:首先想能不能在原有的b中出现* * * * 1 2 3 … k,如果可以的话则利用b中原有的再添上前面的即可构成1 2 3 …n,但这个构成有一个限制,对于每一个从k往后添加k+1 k+2 … n一定要连贯着一次性达成,如果中间出现k+x没取的到,要再从前面取几个用0做缓冲,则该顺序一定会混入0,方案作废。剩下的情况,则看一个b数组中最多需要额外多取几个才能在用到该数时能放到底部,例如 n=6 b:0 0 2 5 6 3 对于第3个元素5,想要取到其需额外先取次数 =原创 2021-03-25 16:40:17 · 119 阅读 · 0 评论 -
C. Basic Diplomacy (思维、贪心)
题目思路:首先为NO的情况只有,某一天只可以选一个人且某人在只可以选他的情况下被选了>⌈m2⌉次。除了这种情况,其它情况不可能为NO,看一个极端的例子,总共有8天,有两个朋友1和2,有4天全是只可以选1,其它4天都是可以选1或2。那么只要让其它的天数全选2即可,2也不会超出⌈m2⌉次。然后来看YES的情况该怎么选,首先对于只可以选一个人的天数先加在每个人的被选天数上,然后从第一天开始,遍历那一天的所有人,选出目前备选天数最低的那个人,其备选天数+1,如果遇到只有1个人可以选的直接跳过(已经预先处理原创 2021-03-22 00:36:38 · 309 阅读 · 1 评论 -
B. Binary Removals (思维)
题目思路:想要出现否的情况那一定会有0在1的后面,而我们的删除操作只能隔着删,所以当出现两个00或两个11必然会留下一个,所以从后往前遍历,如果发现出现00之后又出现11则最终无论怎么删都会留下一个…1…0…的情况。#include<iostream>#include<cmath>#include<map>typedef long long ll;using namespace std;const int Max = 1e6 + 5;ll ji[Max],原创 2021-03-19 01:05:30 · 465 阅读 · 0 评论 -
C - k-LCM (easy version AND hard version) (构造、思维)
题目思路:先来考虑k=3的情况,如果n为奇数则三个数分别为 1 n/2 n/2,这样最大是n/2。如果n为偶数,如果n%4==0,则 三个数为 n/4 n/4 n/2,反之 先将n=n/2 则又变为了奇数的情况 三个数为 21 2(n/2) 2*(n/2)对于hard情况,可以发现如果k越大其实越容易满足每个数<=n/2,那么对于k-3个数 全部填1 剩下的三个按照easy的思路来。Code:#include<iostream>#include&l原创 2021-03-18 21:40:15 · 330 阅读 · 0 评论 -
E1. Square-free division (easy version) (数论、思维)
题目思路:首先贪心的想一想,我让每一段尽可能长,则最后的段数就可能越少。再来看什么时候一个数是平方数,将一个数质因数分解X=a^x1 * b^x2 * c^x3…只要让一个数的x1 x2 x3…xn都为偶数即可那我们只需发现如果有相乘的两个数各自的质因数次方相加全为偶数则会组成一个平方数,就需要切出一段来。但这个记录各自质因数再让每个相加又太麻烦,所以就想出了一个简便的记录方法,只要记录质因数次数为奇数的所有质因数乘积(把为偶数的部分扔掉,偶数部分不会影响判断),如果发现有两个这种乘积相等,则原创 2021-03-18 21:22:26 · 336 阅读 · 0 评论 -
D. A Leapfrog in the Array (思维)
题目思路:经过模拟可以发现对于一个元素的移动每次移动量是之前一次的两倍,如果将列表倒过来从0开始,那么每次元素的位置移动便是x=2x+1,现在给出了最后的某个位置,那么我们只需逆转x=(x-1)/2直到位置为偶数就是开始移动的位置,因为列表倒置后所有元素位置会变为偶数,而每次进行x=2x+1又会变成奇数,所以逆移动到了偶数即是开始的位置。Code:#include<iostream>#include<vector>using namespace std;typedef l原创 2021-03-17 22:29:00 · 187 阅读 · 0 评论 -
C. Eugene and an array (区间为0前缀和处理)
题目思路:以每一个位置作为右端点取其前面为0区间的左端点的最大值为左端点,这一个字串就是以该位置为右端点,满足条件的最大长度的子串,它产生的贡献是(r-lmax-1,为了不把左端包含进去,包含进去就有为0的区间了),所有贡献相加即为答案。而对于如何判断一个区间是否为0,以及这个最大左端点的记录。我们可以使用前缀和来纪录某区间是否为0,sum[i]=sum[j] 那从i+1…j的元素的和为0,我们用map来记录,每次添加进一个新的和,如果前面已经出现了该值,则代表从前一个位置+1到此区间和为0,然后对于原创 2021-03-15 00:54:53 · 166 阅读 · 0 评论 -
D. GCD of an Array(数论、multiset)
题目对于n个元素的gcd,将每个元素质因数分解,对于一个质数如果每个元素都有其作为因数,那么这个质数p对答案的贡献为p^(所有元素分成质因数相乘中p的最小次方)a1=p1^b1 …* pi^c1* … pm^d1a2=p1^b2 … * pi^c2 *… pm^d2…an=pn ^ bn…*pi ^ cn … pm^dn如质数pi,其对答案贡献为 pi^(min(c1,c2,c3…,cn)),将质因数的贡献相乘即为最终答案。如果某个质因数不是n个元素都有,那么其没有产生贡献。所以我们需要原创 2021-03-11 20:46:47 · 211 阅读 · 0 评论 -
D - Minimax Problem (二分、状压)
题目思路:首先暴力想一想这道题,把每两组数都模拟一遍取最大值,O(N^2)。然后看有没有什么地方可以改进,会发现这题可以适用于二分,看可以用二分的条件—单调(而本题从某种方面看也是“单调”的,所要求的最大值ans,值越小就越不可能成立,越大则越可能成立),故设立一个范围l=0,r=1e9,二分出答案。check()该怎么弄?如check(a),当存在两个数组lst1,lst2任意第i位元素的两者最大值 --max(lst1[i],lst2[i])>=a,则a是符合条件的,最终的答案>=a,l原创 2021-03-08 19:08:05 · 247 阅读 · 0 评论 -
C. Covered Points Count (线段问题---差分、排序)
题目两种解法:1.用差分思想,l—r所有点加1用map[l]+1,mdp[r+1]-1表示,前缀和即是当前点所对应覆盖线段数。Code:#include<iostream>#include<stack>#include<map>#include<string>#include<algorithm>using namespace std;typedef long long ll;const int Max = 1e6 + 5;原创 2021-03-06 22:00:57 · 259 阅读 · 0 评论 -
D. TediousLee (找规律、推导)
题目一层层推导下去很容易发现规律,a[i]=2*a[i-2]+a[i-1],看下面这张图,标着的序号代表以这个顶点为根的整颗子树所对应的阶次。6由两个4一个5组成,5由两个3一个4组成。那涂色得到的答案不就是上方的公式吗?但答案去是不对的,这还忽略了一个claw树,当达到6阶层时按照如下涂红色的去取会发现还多了一个claw,就是最上面的那个4个点,那么我们现在只要找到什么时候还要给答案加一个claw即可,当我们要求第i阶层时会发现只有当i-1 与 i-2最上面的点都是不取时可以多构成一个claw,然后相应原创 2021-03-06 21:24:27 · 191 阅读 · 0 评论 -
C. Two Arrays (dp、思维)
题目a[i][j] 表示前i个数字中第i个数字为j的所有情况的非递减序列的数目b[i][j] 表示前i个数字中第i个数字为j的所有情况的非递增序列的数目对于非递减数列aa,和非递增数列bb,只要第一个元素满足aa[1]>=bb[1]整个数列就满足aa中个元素>=bb中对应元素了。那么只需枚举a中第一个元素所有可能与之相对应满足条件的b中第一个元素即可。另:递增序列第一个数字为j的所有情况=递减序列最后一个数字为j的所有情况 ,递减序列同理Code#include<iostre原创 2021-03-06 02:00:57 · 140 阅读 · 0 评论 -
B - Catch Overflow! (范围处理)
题目很容易想到用堆处理,但会有操作使得数值远大于long long.此时灵活将范围缩小,细节见代码。#include<iostream>#include<stack>using namespace std;typedef long long ll;const ll Max = pow(2, 32) - 1;stack<ll> sta;int main(){ ll a = 0; int t;cin >> t; ll sum = 1;原创 2021-03-05 01:54:29 · 181 阅读 · 1 评论 -
C. Long Beautiful Integer (构造)
题目思路:先构造成最小的情况,从前k个数的每个数开始,之后每隔k个数令其等于前面的该数,如 lst[3]=2 i=3(k=4) lst[7] lst[11] lst[15]…=lst[3]=2, 如果此时构造出来的数满足大于原数,则输出。如果不满足则把lst[k] lst[2k] lst[3k]…全体+1,但可能会发生+1后变为10,所以需要从lst[k]往前找到第一个小于9的数位置噢p,将其每隔k个全变为lst[p]+1 lst[p+k]=lst[p]+1…然后再将p—k的数每隔k个全部原创 2021-03-01 21:44:42 · 183 阅读 · 0 评论 -
C. Maximum width (贪心、思维)
题目思路:对于答案我们只需求取每相邻的两个元素的最大相差再从所有的最大相差取最大的即可,那么贪心一下假如要求取的是第一个和第二个元素的最大相差,那么就是第一个元素第一次出现的位置和第二个元素最大的能使得后面能完全匹配第二个数组的位置。简单来说就是—在前面匹配好了的情况,后一个元素取最后面那个刚好能使后面也匹配的位置。然后从后往前遍历得到刚好使后面达成匹配的最大位置,从前面遍历得到完成前面匹配的第一个出现位置,细节见代码。Code:#include<iostream>#define pii原创 2021-03-01 17:47:26 · 496 阅读 · 1 评论 -
1408D - Searchlights (思维、枚举)
题目从结果来分析,最小的步数必然是往右走多少步使一部分盗贼到达安全区域,然后再向上走一部分使余下的盗贼到达安全区域。那么我们从0到1e6+1枚举所有向右走的步数加上在该步数下最小向上走的步数,取其中最小值即为答案。那么问题来了,这个最小向上走的步数我们如何能够快速得到答案?其实只需要一个从后往前遍历记录的向上移动所需最大值数组即可。简单来说就是,对于一个盗贼x,y,灯塔tx,ty,可以让盗贼向右移动tx-x+1使其脱离范围,也可以使其向上移动ty-y+1使其脱离范围。然后我们用一个数组dis[tx-x+原创 2021-02-22 23:24:01 · 171 阅读 · 0 评论 -
1438C - Engineer Artem (构造)
题目思路:如横纵坐标相加为奇数则将对应位置的数变为奇数+1或不加,如横纵坐标相加为偶则将对应位置数变为偶数。这题我觉得要培养一种感觉,看到一个题目,它给了什么条件要按给的条件那个方向去多思考一下,就像本题说可以加一或不加,那么我们想想加一其实比较容易想到的就是改变奇偶性。而有些题它给了一些数据大小,其实也是一种引导,引导着我们要去用符合数据范围的算法,从出题人的角度想想这些条件可能要考什么。#include<iostream>using namespace std;int main(原创 2021-02-19 22:50:13 · 122 阅读 · 0 评论 -
D. Irreducible Anagrams (思维、前缀和、构造)
题目题意:一个字符串如果只是其中字符顺序被打乱则称其和原字符串相互为字谜。对于两个互为字谜的字符串,两个字符串按相同的位置分割开成为n(n>=2)个小串,然后每个小串都互为字谜,则称这两个字符串是互为可还原的,现在给我们一个字符串,再给出q次问询,每次问询给出一个区间,要我们判断区间内的字符串是否具有任意一个不可还原的字符串与之对应(不可还原需要两个字符串互为字谜且不是可还原的)。思路:其实判断其是不是可还原串拆成n个小串变为拆成2个小串就可以了,因为可以拆成n个必定也可以拆成2个。然后我们构造一原创 2021-02-18 22:34:20 · 135 阅读 · 0 评论 -
E. Accidental Victory (思维、二分)
题目思路:首先将数组排个序,容易知道要看一个数能不能成为冠军,其实就是将这个数从小到大不断与比他小于等于的数合并相加如果最终能够合并为一个数则其有成为冠军的机会。在这我们先看看暴力的思路,就是遍历每一个数然后让它与最小的数开始相加直到最终它不能再和后面的数相加(前面所有的总和都比后面的某个数小)或合并为一个数了,O(n^2)这毫无疑问会超时。我们想如何进行优化,其实在这我们可以发现对于两个数a<b,a会一直把前面小的数加完 而b也会把a加的那一部分数再加一次,这就重复进行了操作,这时我们可以先从原创 2021-02-17 22:56:09 · 526 阅读 · 2 评论 -
C. Minimum Ties (构造)
题目当n为奇数 ,构造第一人获胜情况前(n-1)/2项为1,后(n-1)/2项为-1,其余人的获胜情况就是前一人往后滚动一位如:n=5第一人对第二三四五人的情况 1 1 -1 -1第二人对第一三四五人的情况 -1 1 1 -1第三人对第一二四五人的情况 -1 -1 1 1第四人对第一二三四人的情况 1 -1 -1 1第五人对第一二三四人的情况 1 1 -1 -1当n为偶数 ,构造第一人获胜情况前(n-1)/2项为1,中间那项为0,后(n-1)/2项为-1,其余人的获胜情原创 2021-02-16 01:16:27 · 3013 阅读 · 4 评论 -
1368 D. AND, OR and square sum (贪心、位运算)
题目思路:看一个例子对于两个二进制数11001010100100AND结果:0100100 OR结果:1100101如果两个二进制位都为1或0,AND OR 中结果不变还是1或0,如果一个是0 一个1,就会把1转到OR结果中AND中的那个位变为0。我将这个过程看作是一个让1往一个数(OR结果)分配的过程,所有二进制每个位总的个数不变,但通过上述操作可以让1集中到一个数上面,我们可以通过无限次操作总是拼出来一个大的数,相应的这个数花费的各个二进制位数减1,直到所有二进制位的个数耗尽,这样得出来原创 2021-02-12 22:28:27 · 255 阅读 · 0 评论 -
1372 D. Omkar and Circle (思维、前缀和)
题目思路:对于为n的奇数,可以进行(n-1)/2次让一个数取代相邻两数操作,直到最后只剩下一个数,其实每次操作就是删掉了一个数,那要如何让删除后的总和最大? 首先贪心一下,我们一定不能删掉变成了两个数相加的那个数,如 1 2 3 4 5 假设第一步删掉1 -> 7 3 4 那之后删掉的数不能是7 因为 再删7=删掉1 2 5相当于删去了3个数,我们可以对比删掉2 5一定优于删掉1 2 5。而要不删掉已经加过一次的数就一定要删掉不是相邻的数,问题就转化成了从n个数中删掉(n-1)/2个不相邻的数原创 2021-02-12 12:37:15 · 193 阅读 · 0 评论 -
D - AB Graph (构造、图)
题目思路:分为两种情况:1.当m为奇数时,直接12121212…构造出的一定是回文。2.当m为偶数时,可以知道n>=3时一定可以构造出。证明如下:当1,2,3三个点中出现来回字母一样,只需两个点不断循环即可。当无上述情况,来回必然是a,b交叉,因此我们一定可以找到如下的图。其实就是有连续两个a,1->2->3->1,或2->3->1->2,或3->1->2->3,这几种情况aab,aaa,aba…因为是循环的一定可以找出两个连续的a构成原创 2021-02-08 17:20:45 · 336 阅读 · 0 评论 -
1469D - Ceil Divisions (思维)
题目思路:首先对于1 2 3 4 . . . 2e5 我想啊,让 i=3 到 2e5-1的数全部 i/2e5 那么这些数就全为1了,1 2 1 1 1 … 1 1 2e5 ,我们这时操作次数还剩下8次(1,2,2e5没用掉),但2e5/2 8次不够用啊,所以接着我想留出一个10来现在操作次数剩下9次,2e5/10 用掉了6次,10/2又要用掉4次,比9次多了一次.那么我想这让2e5/a 用掉5次,a/2还是用4次就可以了。将a最大化16,16/2用4次,2e5/16用5次,那不就解决了嘛。但n原创 2021-02-05 13:28:25 · 168 阅读 · 0 评论 -
1478C Nezzar and Symmetric Array (构造)
题目思路:首先来看一下这个距离是怎么计算的-4 -3 -2 -1 0 1 2 3 4 不难发现4到3和-3的距离和=2 * 4 到-2 2到-1 1的距离和也都为2 * 4,在此可以发现规律一个较大的数到两个较小的数的距离和等于其自身二倍。观察0 1 2 -1 -2…到4 -4的距离和为都为2*4,又发现了一个规律一个绝对值较小的数和两个绝对值比它大的正负数的距离和=二倍大数的绝对值。那么给出了d的序列,不难得出最大的那个di必然是最大的那个数和其他数的距离和,其对应的ai值为(di/2)/n,现在原创 2021-01-29 01:32:23 · 1656 阅读 · 3 评论 -
1334 - D. Minimum Euler Cycle(思维)
题目思路:其实构造起来还是不难的,要使形成一条字典序最小的欧拉回路。如下:n=5121314152324253435451从这不难发现规律,我们只需找到它的起始位置,然后开始模拟,假设是第i行,i i+1 i i+2 i i+3…n每次到了n时到下一行i+1开始,正好模拟r-l+1步即可,细节见代码。Code:#include<iostream>#define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)原创 2021-01-27 21:57:42 · 236 阅读 · 0 评论 -
1475E - Advertising Agency(dfs、dp)
题目思路:对于一个结点有四种情况00 11 10 01,其中00 11我们不需要重新交换。然后因为每个子树都可用其父亲及往上的结点的值交换。故我们从上到下更新每一个结点的交换值,其值为min(自己,父亲)。然后从1开始dfs,先深入到最底下结点,让下面的结点先进行交换(因为越往下的结点花费越少),还剩下的没交换的给其父节点,一层层往上,如果最终都还剩下没交换好的,则不可能全交换。Code:#include<iostream>#include<vector>#defi原创 2021-01-26 15:18:45 · 296 阅读 · 1 评论 -
1475E Advertising Agency(组合数)
题目思路:选出K个博主,要使得总共关注者最大,先看一个简单例子如1 2 2 3 4 4 4 4 5 6 7 7 k=6最大为4+4+5+6+7+7=33.可以知道我们一定要选最大的后面6个博主 4 4 5 6 7 7 假设换了前面一个必然导致和不为最大值,而这六个博主其实5 6 7 7也已经定死了,能选择的只有4(第n-k+1个博主的值)我们只需从总共的4个拥有4个关注者的博主选两个答案为C 4 2=4*3/2=6。再推广到普遍情况设第K大博主关注者数量为t,答案为:所有关注者数量为t的博主中选出原创 2021-01-26 01:46:02 · 368 阅读 · 0 评论 -
1475C Ball in Berland (思维)
题目思路:看N为2e5可知复杂度为O(n)或O(nlogn),在这我用两个map分别记录每个男和女各自可以和多少匹配,首先选好一组匹配,那么还可以找出多少组匹配与之组成两组呢?答案为:k - 此组匹配中男生可以匹配女生数 - 此组匹配中女生可以匹配男生数+1(他们自身匹配那条线多匹配了一次)。Code:#include<iostream>#include<string>#include<map>#include<algorithm>#includ原创 2021-01-26 01:20:02 · 960 阅读 · 2 评论 -
1301D - Time to Run(思维、模拟)
题目思路:先进行一遍全部过程的模拟储存下来,为了方便模拟尽量先将相同的方向走完,而对于多少步step,将连续的相同方向当作一步,如DDDDDULLL->5D1U3L,只需判别存储好的全部模拟字符串前后不同步数+1即可,细节见代码。#include<iostream>#include<string>#include<map>#include<algorithm>#include<memory.h>#include<cmat原创 2021-01-24 14:55:46 · 168 阅读 · 0 评论 -
1358 - C Celex Update (思维)
题目思路:一开始我想错方向了,以为是向动态规划一样找递推然后推公式,后来发现其实只要用能得到最大的值减去最小的值就可以得出答案,然后找规律发现先下再右最大,先右再下最小,而且每次两个数相差为1 2 3 … x … x…3 2 1但是会到达一个峰值–min(x2-x1,y2-y1),维持这个峰值,再递减回到1,答案等于(1+2+…+x-1)*2+(x2+y2-x1-y1-1)*x。#include<iostream>#include<string>#include<原创 2021-01-17 01:01:38 · 275 阅读 · 0 评论 -
C. Strange Birthday Party(贪心)
题目题意:我有n个朋友,商店有m种商品,这m种商品按序号价格从小到大排列,对于每一个朋友我给出一个序号k,我可以直接给朋友序号k的商品价格的金钱或给朋友买一个序号小于k的商品,且每种商品最多只能买一次,问我需要花费的最少金钱?思路:将朋友的序号从大到小排序,由题意序号大的商品花费的金钱一定大于等于序号小的,所以我们只需要让序号大的朋友优先选用前面序号小的商品替代使花费金钱减少,直到前面的商品都已经被买了一次,然后后面的朋友直接给出对应序号金钱即可。Code:#include<iostream&原创 2021-01-06 19:13:15 · 496 阅读 · 0 评论 -
C. Canine poetry (贪心、思维)
题目思路:首先可以知道如果我们要消灭长度>=4的回文串,那么这个大的回文串必然包含小的回文串。所以我们其实只要消灭小的回文串就可以了。其实就是干掉aaa、aba、aa这三种。那么对于很长的一串回文串我们要使其任何子串都无长度>=2的回文串,我们从头开始遍历。如果开始出现aa,贪心一下我们干掉第二个字符,这样会尽可能减少a与之后的形成回文串。类似,aaa干掉后两个,aba干掉第三个,细节见代码。Code:#include<iostream>#include<string原创 2020-12-31 15:58:40 · 543 阅读 · 0 评论 -
1371D Grid-00100
题目思路:要想差值最小,那么我们肯定是要使得这个二维数组的数尽可能平均起来,再看一下数据k<=n*n,故我们往数组中填1,并且要尽可能让每一行每一列的值相差最小,所以我们先将所有行和列的R C值先将其变为1,2,3,4…直到填完k个数。填的方式如图:Code:#include<iostream>#include<string>#include<map>#include<algorithm>#include<memory.h>原创 2020-12-30 13:07:30 · 169 阅读 · 0 评论 -
1469C Building a Fence
题目思路:每一次求取一个范围,然后判断之后的小方格是否满足范围。对于最后和第一个方格已经取定,需要特殊判断,细节见代码。Code:#include<iostream>#include<string>#include<map>#include<algorithm>#include<memory.h>#include<cmath>#define pii pair<int,int>#define FAST io原创 2020-12-30 01:08:30 · 689 阅读 · 0 评论