![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维
࿐ཉི༗࿆一鲸落,万物生 ༗࿆ཉི࿐
这个作者很懒,什么都没留下…
展开
-
Acwing 1226. 包子凑数(完全背包的应用)
这里判断要用到的结论是,对于给定的两个互质的数字a和b,他们不能拼凑出来的最大的数字是(a-1)*(b-1)-1,对于n个数字,因为这些数字的取值范围是1~100,所以对于最大的两个互质的数字为99和100,所以最大不能拼凑出来的数字不会超过(100-1)*(99-1)-1,我们粗略记为10000,到了这一步之后我们就要去判断在1~10000这个范围内不能拼凑出来的数字有多少了。这里就不难看出,可以直接套用完全背包的思想,dp[i]表示是否能凑出数字i,如果等于0表示不能凑出,等于1表示能够凑出。原创 2023-05-27 18:10:01 · 247 阅读 · 0 评论 -
Acwing 1214. 波动数列
1、如果第i次我们选择加a,那么通过上述公式我们可以知道,对于第i次的选择di,它最终在总和中一共是加了n-i次,所以此时应该从dp[i-1][((j-(n-i)*a)%n+n)%n]转移得到。最后dp[n-1][(s%n+n)%n]就是答案了,因为只有当所有的d加起来的总和%n=s%n时才能整除n。我们设dp[i][j]表示在第i次选择要加的数(a或-b)后,所选择数字的总和取模n等于j的方案的数量。2、同理,如果选择减b,就应该从dp[i-1][((j+(n-i)*b)%n+n)%n]转移得到。原创 2023-05-27 17:36:51 · 263 阅读 · 0 评论 -
蓝桥杯2022年第十三届决赛真题-搬砖
然后就是排序问题,这是本题最主要的难点了(个人认为)。当前物品的重量w,价值v满足,v>=j时,dp[i][j+w]=max(dp[i][j+w],dp[i-1][j]+v)wj+sum>vi(sum为除了物品i,j之外的所有物品的重量和)首先对于所有的j初始化:dp[i][j]=dp[i-1][j]于是可以得到排序条件是wi+vi原创 2023-05-20 11:31:08 · 404 阅读 · 1 评论 -
蓝桥杯2022年第十三届决赛真题-搬砖
首先我们要将所有齿轮从小到大进行排序,然后对于每一个半径分解因数,如果当前半径r分解出来的因数i在之前出现过,那么倍数r/j就可以存在,同样对于因数i还要看r/i在之前的齿轮中有没有出现过,如果出现过,那么倍数i就可以存在,最终将所有可能出现的倍数记录一下,然后询问的时候直接O(1)查询即可,另外还要特判一下当n=1时,只有q=1才成立,否则不成立。所以现在的问题就变成了,给定一个倍数q,问我们在给定的齿轮半径中是否有两个齿轮的半径存在q倍的关系。原创 2023-05-19 16:41:10 · 238 阅读 · 0 评论 -
2022 icpc澳门站 Laser Trap
首先求出所有激光发射器与原点的连线和x轴正方向的夹角,现在我们要做的是选定一条发射器与原点的连线,然后删除所有与这条连线角度(当前连线与其他发射器和原点连线的夹角)相差小于180°的发射器,因为是要循环一周来选择要删除哪些点,所以要将所有夹角先排个序,然后每个角度加2Π加在原数组的后面,最后利用双指针求出每次需要删除的点的数量。注意:计算角度和pi的时候一定要用long double!原创 2023-01-08 21:48:30 · 268 阅读 · 0 评论 -
Codeforces Round #838 (Div. 2) D. GCD Queries (交互题)
input:output:题目大意:有一个长度为n的序列,其为0~n-1的全排列,但是你并不知道这个排列具体是什么,现在你可以进行询问,每次询问两个数的gcd的值,最多询问2n次,最终你要确定0可能存在的位置以‘!x y’的形式输出,只要x,y的位置上有一个是0就算猜对。解题思路:每次取3个位置上的数x,y,z,然后询问ans1=gcd(x,y),ans2=gcd(y,z)的值,如果gcd(x,y)==gcd(y,z),那么我们可以确定y一定不是0,因为如果y=0,那么gcd(x,y)=x,gc原创 2022-12-25 12:03:05 · 205 阅读 · 0 评论 -
Codeforces Round #837 (Div. 2) D. Hossam and (sub-)palindromic tree(区间DP+LCA)
现在这个题就是把问题放在了一颗树上,那么我们的思路应该是枚举字符串的左右端点,然后利用LCA的思想找到最近公共祖先,这样整个字符串就已经找到了,然后对于这一段在树上的字符串进行DP,具体细节见代码。定义 s(i,j) 表示将 i→j 路径上结点的字符顺次相接形成的字符串,求所有 s(i,j)的最长回文。这里应该是采用区间DP的方法。否则dp[x][y]=max(dp[x+1][y],dp[x][y-1])如果s[x]==s[y],dp[x][y]=dp[x+1][y-1]+2。原创 2022-12-24 17:00:01 · 263 阅读 · 0 评论 -
Codeforces Round #830 (Div. 2) C1. Sheikh (Easy version)(二分)
所以给定的这一整段区间的函数值一定是最大的,现在我们的任务就是找到一段最短的区间,使得这段区间的函数值等于整段区间的函数值。给我们一段区间,让我们求这段区间的一个子段[l1,r1],满足这段区间的f[l1,r1]在所有子段中是最大的,并且在满足函数值最大的前提下,找到长度最短的那段,如果有多段满足条件输出任意一段即可。这里我们就用到了二分,固定左端点后,二分区间长度,如果当前区间满足条件,那么就缩短区间长度,否则增大区间长度,找到满足条件的最短区间长度,然后更新答案即可。原创 2022-12-24 13:30:20 · 75 阅读 · 0 评论 -
Codeforces Round #830 (Div. 2) D1. Balance (Easy version)(暴力+优化)
类型的询问,我们每次从k出发,每次加k,查询当前的数字是否在集合中出现过,如果没有出现过就直接输出,否则就继续加k,直到出现一个没有出现在集合中的数字为止。但显然这样会超时,接下来就是要对暴力的做法进行优化,优化方法如下:对于每一个重复查询的数字x,记录上一次查询的结果,然后当前再查询的时候,从上一次查询的结果开始进行新一轮的查询。估计复杂度的方法如下:对于优化后的做法,最坏的情况是这样的,当前插入了n个数字,分别是x,2x,3x,……,n/n,也就是n+n/2+n/3+⋯+n/n≈nlogn?原创 2022-12-24 13:13:44 · 136 阅读 · 0 评论 -
2020ICPC南京站 F-Fireworks(概率+三分)
题目大意:有一个人正在制作烟花,这个人制作出一个烟花为“完美烟花”的概率为p/10000,这个人每次制作完烟花后可以有两种选择,一种选择是继续制作烟花,一种选择是花费m分钟,将当前制作出来的还没有燃放的烟花全部点燃,以此来验证这批烟花中是否含有“完美烟花”,他每次制作一个烟花的用时为n分钟,当他发现自己制作出一个"完美烟花"后,他就会去休息,问当他采取最优策略的时候,他至少需要花费多长事件才会去休息。前一项表示,我们把制作x个烟花当作一次操作,出现一个“完美烟花”所需要的操作次数。原创 2022-11-17 21:15:42 · 222 阅读 · 0 评论 -
Codeforces Round #826 (Div. 3) D. Masha and a Beautiful Tree(归并排序的应用)
其实观察整个交换过程,我们发现它和归并排序的过程是非常类似的,我们只需要在归并排序中稍加改动就可以求出改动的次数,最后再判断一下改动后的序列是否是严格单调递增的即可。给你一颗满二叉树,可以交换两个节点,问至少交换多少个节点让他们严格递增。原创 2022-10-15 23:00:03 · 318 阅读 · 0 评论 -
Codeforces Round #824 (Div. 2) D. Meta-set
首先我们要确定这个牌堆中有多少个3元组。我们可以枚举两张不相同的牌,然后就可以计算出需要的牌s,并且我们在计算的过程中要记录牌s可以和多少个2元组构成3个好牌,最终的答案就是我们枚举每张牌可以参与构成多少个3元组号牌,从所有的组中选择两组,这样就构成了5张牌,然后计算每张牌的情况加和即可。meta-set:5张牌中有超过一个能够称为好的3张牌。现在给我们n张牌让我们计算有多少个meta-set。3张牌叫做好:这3张牌的每个特征值加起来%3=0.原创 2022-10-13 22:49:04 · 160 阅读 · 0 评论 -
Codeforces Round #825 (Div. 2) D. Equal Binary Subsequences(非常妙的构造思路)
首先我们比较容易就想到如果1/0的个数为奇数个那么这个序列是一定不能拆成两个相同的序列的,然后我们再来看一下如何选定操作子序列,我们每次两个一组进行检查,如果前后两个数字是相同的那么这两个数字就分到两个序列中,如果不相同我们就把它们看成一对,然后记录下它们的下标,操作的时候我们间隔地选择1和0的位置,例如当前这一对我们选择1的位置作为操作序列的一部分,那么下一对我们就选择0的位置作为操作序列的一部分,经过操作之后,每一对都变成了相同的两个数字,这时我们输出答案的时候直接隔一个输出一个下标即可。原创 2022-10-13 22:32:54 · 117 阅读 · 0 评论 -
Codeforces Round #824 (Div. 2) C. Phase Shift
对于每一个没有建立映射的字母,首先判断这个字母和我们当前可以选择的最优的字母是否相同,如果相同,就从优先队列中再取一个,这样就能保证这两个字母是不同的了,然后再判断如果按照当前的联系建立映射是否会使得26个字母提前组成环,如果会的话,再从优先队列中取一个作为当前字母的映射,如果不会就直接取这个字母了。这里判断是否会构成一个环我是用的并查集来判断的。对于每一个字母贪心地选择能组成映射的最小的字母。原创 2022-10-11 23:01:18 · 250 阅读 · 0 评论 -
Codeforces Global Round 22 D. Permutation Addicts
然后我们再来看一下这个序列,通过分析序列b的定义可知,b中一定存在一个数值为0/n+1的数字,那么这些数字对应位置的下标,也就是序列a中的元素,一定是处于a序列中最前面的那一段,而且这一段(除了最后一段外)中最后一个数字也一定会在b序列中出现,所以我们先根据b序列中值为0/n+1的数的下标找到序列a的第一段,然后在第一段中找在b序列中出现的元素,那么xuxu列的最后一个元素,而其他的元素则是可以随意排列,然后再去找下一段,直到找到最后一段,即该段中所有的数字均不会出现在b序列中,最后输出即可。原创 2022-10-08 22:30:27 · 762 阅读 · 0 评论 -
Educational Codeforces Round 136 (Rated for Div. 2) D. Reset K Edges(二分+树的重构)
解题思路:二分能获得的树的高度,如果当前高度可以在k次操作内得到,就继续看更小的高度,如果当前高度不能在k次操作内完成,那么就往高度大的方向二分,下面再来看看二分中的check函数。因为结点i的父节点的编号pi原创 2022-10-04 22:08:51 · 174 阅读 · 0 评论 -
Codeforces Round #823 D. Prefixes and Suffixes
对于s1中的一个位置i,s1[i]和s2[n-i+1]为一个交换对,这是因为无论我们如何执行上面的操作,这两个字符都不会出现在同一个字符串中,并且这两个字符在两个字符串中始终对称,并且还可以在两个字符串中随意交换位置。这个题的大体思路就是找出所有不同交换对的数量,这里还有一个关键点就是交换对的顺序在两个字符串中是可以随意改变的,所以完全不用考虑顺序,那么我们统计出来各种交换对的数量之后,进行下面的判断,设交换对为a,b(a原创 2022-10-04 21:50:20 · 155 阅读 · 0 评论 -
Codeforces Round #822 (Div. 2) D. Slime Escape
题目大意:给我们一个长度为n的数组,并给我们一个数字k,表示我们起始位于a[k]位置,也就是我们初始的健康值为a[k],题目保证a[k]>=0,我们可以向左向右走,但是当走到一个位置的时候我们的健康值要加上当前位置x上的值a[x],注意每个位置上的值只有第一次经过的时候才会加入健康值,当第二次经过的时候就不用加了,问我们能否在健康值始终大于等于0的条件下走出这个数组,也就是说走到a[1]或者是a[n]位置。原创 2022-09-28 21:25:36 · 437 阅读 · 0 评论 -
Codeforces Round #822 (Div. 2) C. Removing Smallest Multiples
题目大意:给我么一个集合s,s中包含1~n所有数字,现在我们要进行一种操作,操作如下:首先选定一个数字k,在集合中存在k的倍数,然后我们可以删除k的最小的倍数,注意k也是自己的倍数,代价为k,现在给我们一个长度为n的01序列,第i个字符为1表示在进行所有操作之后数字i没有被删除,否则为0就是被删除了,问我们将原来的集合变成现在集合所需要的最小花费是多少?原创 2022-09-28 21:03:54 · 171 阅读 · 0 评论 -
Codeforces Round #815 (Div. 2) D1. Xor-Subsequence (easy version)
解题思路:这里我们在看题的时候应该格外注意到ai原创 2022-09-22 22:01:33 · 90 阅读 · 0 评论 -
Educational Codeforces Round 134 (Rated for Div. 2) C. Min-Max Array Transformation
题目大意:给我们两个数组a和b,其中b数组是在a数组的基础上加上一个d数组构成的,即b[j]=a[i]+d[i],其中j可以等于i,也可以不等于i,问我们d数组的每一项最小和最大能取多少。原创 2022-09-20 22:35:41 · 59 阅读 · 0 评论 -
Educational Codeforces Round 134 (Rated for Div. 2) D. Maximum AND(贪心)
解题思路:如果要让n个数字相与后的某一位为1,那么这n个数字的该位都应该是1,而为了让这一位上出现1应该是让0和1进行异或,为了让最终的数字尽可能大,我们可以贪心的从最高位开始枚举,尽可能让一个数字的该位为1,另一个为0,所以一个数字要尽可能大,另一个要尽可能小,所以对于a,b两个数组,一个从大到小排序,一个从小到大排序,从高位开始枚举,如果当前位最终结果为1,那么继续,如果不为1,那么将所有a,b数组中所有数字的该位置成1,然后再排序,置1的目的是排除该位对其他位的影响。原创 2022-09-20 22:20:31 · 94 阅读 · 0 评论 -
Codeforces Round #812 (Div. 2) D. Tournament Countdown
a b”,如果a赢的次数多,输入1,b赢的次数多,输入2,赢的次数一样多,输出0,我们最多进行2/3*2^n次询问,也就是说如果有n个人,我们最多进行2/3*n次询问,问我们最终谁会获得最终的胜利。如果a和b赢的次数一样多,那么有两种情况,一种是在上一次的比赛中a和d都是赢者,一种是都是上一次比赛的输方,通过分析可知,前一种情况是不存在的,因为如果两者都是赢的一方,那么两者肯定又会进行一场比赛,那么两者一定会有一个输,这样他们赢的次数就不相等了,所以只有第2种情况了。我们询问a,c赢的次数。原创 2022-09-16 22:55:51 · 86 阅读 · 0 评论 -
Technocup 2017 - Elimination Round 1 C. Guess the Array(交互题)
解题思路:因为n>=3,所以我们前3个询问可以是"?2 3",根据给出的两元素之和,我们可以分别将a[2]和a[3]用a[1]来表示,然后带入第3个条件中,就可以得到a[1]的值,a[2]和a[3]的值随之就可以计算出来,后面的每次询问就可以是1和任意一个未知元素的下标,每次询问都可以得到一个新元素的值,最后输出即可。题目大意:有一个长度为n的数组,我们总共可以进行n次询问,每次询问我们可以给出两个不同的下标,然后会得到对应下标元素值的和,根据给出的和最终确定数组的每一元素的值,然后输出。原创 2022-09-14 21:39:44 · 90 阅读 · 0 评论 -
CF679A.Bear and Prime 100 (交互题)
题目大意:系统会生成一个2~100之间的数y,每次可以由我们给出一个询问,每个询问包含一个数字x,若该数字x为y的因子,则输出yes,否则输出no,我们最多询问20次,最后我们要根据系统的回答来判断y是否为质数,如果是则输出prime,否则输出composite。原创 2022-09-14 20:00:40 · 210 阅读 · 0 评论 -
Codeforces Round #819 (Div. 1 + Div. 2) and Grimoire of Code Annual Contest 2022 D. Edge Split
解题思路:一看到连通块,而且是让形成的连通块数量最小,我们可以想到最小生成树,对于这个题我们可以先求一下最小生成树,把形成最小生成树的的边(共n-1条边)涂成一种颜色,假设涂成红色,然后我们再看剩下的边,剩下最多3条边,我们下面的任务就是判断这3条边会不会形成一个环,如果形成了一个环,那么我们就可以选择其中一条边涂成红色,然后选择这条边的一个端点,把剩下的边涂成蓝色,因为如果形成一个环之后去掉一条边不会影响连通块的数量,那么与其让它成为一个环,不如将这个环破坏掉,然后再增加几条边,使边得到最大化利用。原创 2022-09-13 21:36:11 · 135 阅读 · 0 评论 -
Codeforces Round #819 (Div. 1 + Div. 2) and Grimoire of Code Annual Contest 2022 C. Jatayu‘s Balan
解题思路:首先所有的一级括号是可以相互连通的,然后在一个一级括号内所有的二级括号是相互连通的,所以我们不难得到这样的一个结论:所有i级括号所能形成的连通块的个数=所有包含i级括号的i-1级括号的个数,所以我们只要统计一下所有级别括号的个数和最深的括号层数maxv,然后将1~maxv-1层所有括号数目加起来就是2~maxv级括号所能形成的连通块的个数,最后加1,表示所有的一级括号形成了一个连通块。原创 2022-09-13 20:57:12 · 126 阅读 · 0 评论 -
Codeforces Round #819 (Div. 1 + Div. 2) and Grimoire of Code Annual Contest 2022 B. Mainak and Inter
解题思路:根据题目要求,我们可以得出这样一个结论:除了最大的元素,其他所有元素一定有偶数个。当n为奇数,m为偶数时,这种情况下是不存在一个序列满足条件的,因为,除了最大数之外,其他所有数的个数都是偶数,所以其他所有数字加起来一定是偶数,n为偶数,偶数-偶数=偶数,所以最大的数字也有偶数个,但是如果是这样的话,m应该也是偶数才对,这样就相互矛盾了,所以这种情况下是无解的。当n为奇数时除了最大数字外其他都填1,当n为偶数时,m也一定为偶数,那么n-2个位置填1,剩下的2个将余下的数字除2分别填入即可。原创 2022-09-13 11:18:27 · 88 阅读 · 0 评论 -
Codeforces Round #819 (Div. 1 + Div. 2) and Grimoire of Code Annual Contest 2022 A. Mainak and Array
(3)、还有就是选择[1,n]作为操作区间,此时1原创 2022-09-13 10:59:02 · 267 阅读 · 0 评论 -
Codeforces Round #818 (Div. 2) D. Madoka and The Corruption Scheme
题目大意:给我们两个数字n和k,表示现在有2^n个人进行比赛,两两比赛,赢的人进入下一轮,输的人淘汰,有两个人,第一个人想让最后赢的人的编号尽可能小,他可以率先决定第一轮比赛中比赛的双方,并且对于所有比赛他都可以决定谁获胜,然后第2个人想让最终获胜的人的编号尽可能大,他有k次机会可以逆转第一个人决定的输赢,也就是说在第一个人做好安排的基础上,第2个人可以选择k场比赛对比赛结果进行逆转,问我们最终获胜的人的最小的编号是多少。原创 2022-09-10 21:53:42 · 408 阅读 · 0 评论 -
Codeforces Round #816 (Div. 2) D. 2+ doors
题目大意:给我们q个提示,每个提示包括3个数组,i,j,x表示,a[i]|a[j]=x,a是一个长度为n的数组,让我们求出满足条件的a中字典序最小的数组a。原创 2022-09-08 20:37:04 · 112 阅读 · 1 评论 -
Codeforces Round #816 (Div. 2) C. Monoblock
题目大意:给出一个长度为n的数组,有m个询问,每次询问给出2个数字,p,x,表示让a[p]=x,然后定义g(l,r)表示a[l]~a[r]这段数组可以分成多少段连续相等的段,例如999111222就可以分成3组连续相等的段分别是999,111,222,对于每一个询问给出所有区间的g(l,r)之和。原创 2022-09-07 22:36:19 · 153 阅读 · 0 评论 -
2019icpc南京 D - Country Meow (三分套三分套三分)
解题思路:三分套三分再套个三分,每次三分选择一个坐标,最终选择出一个(x,y,z),用这个坐标和其他所有点求最大距离即可,至于为什么用三分,我们单看一维,在一维坐标系中选择一个点其最大距离满足一个单峰函数,所以可以用三分。题目大意:给我们n个三维坐标点,要求我们从三维空间中选择一个点,使得这个点到其他所有点的最大距离最小。原创 2022-09-05 15:54:46 · 93 阅读 · 0 评论 -
2019icpc南京 Problem G. Pyramid
解题思路:我们首先暴力打表,发现边长为1,2,3,4,5,6的大三角形中分别存在1,5,15,35,70,126,210个小三角形,然后最难的部分就是观察这个数列,找规律,当时做的时候啥也没看出来,后来看别的大佬写的博客才知道这是一个4阶等差数列,就是我们前后两个数字两两相减,直到出现规律。然后列出四阶等差数列的通项公式an^4 + bn^4 + cn^3 + dn^2 + en + f,然后代入求解得:n^4/24 + n^3/4 + 11*n^2/24 + n/4。也就是再作差1, 1, 1为常数。原创 2022-09-04 21:15:09 · 272 阅读 · 0 评论 -
2019 Nanchang Regional G - Eating Plan
所以我们就可以知道当一个数>=2803的时候,这个数的阶乘%t=0,所以我们只需要预处理处0~2803的阶乘,然后将给定序列中所有阶乘不为0的数字单独拿出来,最多是2803个,然后N^2处理出每种区间长度下所能取到的最大区间和,当给出一个询问的时候直接按区间长度从小到大依次查询即可。(写代码的过程中有2处需要注意的地方在代码中已经标出)分解输出来是461,773 ,2803,这一步是重中之重,如果没有这一步,那这个题就做不出来了。题目大意:一个胖子吃东西,必须吃连续的盘子才行,然后边吃边模上一个t。原创 2022-09-04 10:23:27 · 87 阅读 · 0 评论 -
codeforces 1713 problem C Build Permutation(思维构造+数论)
解题思路:首先我们要知道一个定理,对于一个数字n,区间[n,2n]中一定存在一个平方数,然后我们从后往前看,对于第x1个数,我们找到比它大的最小的一个平方数s,令x2=s-x1,那么我们就只需要将从x2到x1这段数字颠倒即可,这里根据我们之前给出的定理可以知道x2原创 2022-09-02 18:46:46 · 217 阅读 · 0 评论 -
codeforces 1716 C Robot in a Hallway
解题思路:因为每个点只能通过一次,那么我们从起点出发,走遍所有点,且只经过所有点一次,其实只有两种走法,一种是蛇形走法,即先往下或往上走完当前这一列,然后再向右走,知道走到最后一列,或者是在一行中向右走到头,然后到另一行再折返回来,所以,类似一种U形走法,大体走法应该是先蛇形走一段然后再走U形路线,我们用一个b[i][j]表示从第i行第j列开始向右走,走到头后回来到第1-i行第j列最终所用的时间,得到后枚举开始走U形路线的列数,计算出一个最小值即可。做完这个题,写篇博客,一晚上过去了。原创 2022-09-01 23:03:38 · 260 阅读 · 0 评论 -
2022牛客多校 H-Wheel of Fortune
题目大意:两个将领,一个是A,一个是B,每个将领带领若干个小兵,每个将领带的小兵个数最多有七个,每个人物有一个初始血量,然后每秒随机选择一个人物扣10滴血,可能是将领也可能是小兵,如果A将领比B将领先死那么A将领失败,否则获胜。求A将领获胜的概率。原创 2022-08-21 21:13:48 · 108 阅读 · 0 评论 -
2022牛客多校10 I-Yet Another FFT Problem?(鸽巢原理)
最后也是说一点注意事项,前面说到要用数组来模拟map的功能,主要是因为map会比数组要慢,我一开始就是用的map结果超时了,但是改成数组之后就过了。题目大意:给定一个n,m,分别代表a数组和b数组的长度,接下来给出a数组和b数组,问是否存在i,j,k,l满足1原创 2022-08-21 20:56:43 · 254 阅读 · 0 评论 -
杭电多校十 1009-Painting Game
题目大意:给我们n个排成一行的格子,有两个人在玩游戏,在游戏的每一局这个人可以选择一个格子涂黑,前提是把这个格子涂黑之后不能有两个相邻的涂黑的格子,当不能再涂的时候游戏结束,给我们格子的数量以及先手的名字,Alice想要让涂黑的格子尽可能少,Bob想要涂黑的格子尽可能多,问我们当游戏结束的时候涂黑的格子有多少个。综上所述,每7个格子是一个循环,一定会有3个格子被涂成黑色,剩下的就是处理0~6个格子的情况了,同样也是按照我们上面的策略。原创 2022-08-19 18:28:57 · 866 阅读 · 0 评论