![](https://img-blog.csdnimg.cn/20210315110305845.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
思维
文章平均质量分 60
思维
林苏泽
很多时候终点看着很远,实际也很远,但只要你不向它跑去,他永远都很远,所以只有你向它跑去,才能更接近它,所以加油,向前奔跑吧,即使最后没有到达所想的终点,但我想也不会差。起码我们已经比别人距终点近了好多。
展开
-
力扣-收集足够苹果的最小花园周长[思维+组合数]
思维+组合数原创 2023-12-25 19:50:28 · 494 阅读 · 1 评论 -
CF1301C Ayoub‘s function (容斥+思维)
链接题意:给出长度为n的一个01串,其中有m个1,让我们找出最大点对[l_i,r_i]符合其中至少有一个′1′'1'′1′.求最大能有多少对。分析:首先我们直接找不好找,我们可以通过容斥来换个思路想,我们定义至少有一个1位f(x),全是0为g(x)那么我们要的是f(x)=sum−g(x)f(x)=sum-g(x)f(x)=sum−g(x),sum=n∗(n+1)2sum=\frac{n*(n+1)}{2}sum=2n∗(n+1)我们要f(x)最大,那么就是让g(x)最小。g(x)如何最小那?原创 2021-11-23 16:26:49 · 862 阅读 · 0 评论 -
The 2019 ICPC Asia-East Continent Final(重现赛) M value (dfs+思维)
链接题意:给出一个集合A{1,2,3,n},我们可以取其子集,然后将aia_iai加入score,同时如果存在ik=ji^k=jik=j(i,j是选出子集的元素)那么我们应该让score剪去bjb_jbj分析:这个其实就是一个考思维的题,就是如果你能把这个复杂度想的差不多,好,你肯定会写出来。这个难也就难道如何分析这个复杂度。首先我们看题,肯定要对每个位置进行讨论看他是不是放入子集中,其次,他放入子集后造成的影响。我们发现2,4,8,16,32,64…这些是一个集合。3,9,27…这是一个原创 2021-11-16 21:01:55 · 480 阅读 · 0 评论 -
CF1420D Rescue Nibel (贪心+思维)
链接题意:有 nnn 条线段 [li,ri][l_i,r_i][li,ri],你需要从中选出 kkk 条令他们的交集不为空,求方案数对 998244353998244353998244353 取模的结果。分析:看完题我们还知道求交集,那么求交集一定是max(li,lj)<=min(ri,rj)max(l_i,l_j)<=min(r_i,r_j)max(li,lj)<=min(ri,rj)这样交集才不为空,所以我们可以先按左节点排序,右节点排序,排序完我们知道左节点一定会原创 2021-11-16 19:28:48 · 307 阅读 · 0 评论 -
CF1422C Bargain (DP+思维+数学)
链接题意:给定整数 n(1≤len(n)<105n(1 \leq len(n) < 10^5n(1≤len(n)<105 ,其中 len(n)len(n)len(n)表示 nnn 的位数)) ,现在规定每一轮Vova可以从中取出一段连续的几位数字,剩余数字即为该轮得分.结果可以拥有前导 000 .特别的,如果Vova取出了所有数字,那么该轮得分为 000 .现在请你求出所有不同取法得分之和对 109+710^9+7109+7取模后的值.特别的,如果有多种不同取法得到了同样的数字,得原创 2021-11-15 09:35:46 · 198 阅读 · 0 评论 -
CF1511D Min Cost String (思维)
链接为了最后的荣光.题意:首先定义如果存在这个s[i]==s[j] && s[i+1]==s[j+1] (i!=j)就会花费1代价,给出字符串长度n和给出你可以选用的字符数量m(从字符a往后数m-1个),让你构造出最小花费的字符串分析:首先是个构造体无疑,其次我们进入正题如何构造出来我们选择构造方式:最优不过不让两个连续的字符在其他地方出现,那么我们可以类似全排列的构造出来,假设是可选字符只有5个那么我们就从a开始,abacadae,然后换b开头bcbdbe,循环到最后我们原创 2021-11-14 22:46:16 · 333 阅读 · 0 评论 -
Codeforces Round #746 (Div. 2) E. Bored Bakry(math+dp)
链接题意:给定一个 n 个数的数组,要求找一个连续子区间,满足该子区间的区间且大于区间异或和。求该子区间的最大长度。分析:首先分析:当长度为奇数时会发生怎样的状况:如果首位是全1那么区间且在改为上是1,区间异或和也是1,如果不是全1那么区间且一定是0,而区间异或和可能是1也可能是0.所以我们得出长度一定是偶数,然后我们分析,只有全是1的时候区间且才比区间异或优,这时区间且是1,区间异或和是0.当我们从最高位分析时,我们判断到i位需要知道前一位是不是两个相等的情况,如果属于相等的情况我们才能往后看原创 2021-11-11 20:34:48 · 246 阅读 · 0 评论 -
Codeforces Round #750 (Div. 2)E. Pchelyonok and Segments (数学+DP)
链接君子,修身齐家,治国平天下。题意:Pchelyonok决定给Mila一件礼物。Pchelyonok已经“买”了一个长度为 n 的数组 a,但他觉得送一个数组太普通了。他决定将这个数组中的一些区间送给Mila!Pchelyonok想让他的礼物更漂亮,因此他决定从数组选择 k 个不相交的区间,满足:第一个区间的长度是 k,第二个区间的长度是 k-1,…,第 k 个区间的长度是 1。对任意i<ji \lt ji<j,第 iii 个区间在第 jjj 个区间左边。(即 ri<lj)r原创 2021-11-11 19:07:14 · 342 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2) C. Three Bag (思维+贪心)
链接题意:这道题的意思其实就是,给你三个背包: 每一次任选两个背包,在这两个背包中分别取出a,ba,ba,b这两个数(不放回),同时用a−ba-ba−b来替换aaa,那么经过数次操作以后,这三个背包中就只剩下一个数字了,请问这个数字的最大值。 输入格式是:第一行分别代表了这三个背包的背包容量,之后的三行分别代表的是这三个背包的全部数字。分析:首先两种方式最优:有一个集合的贡献都是负的,其他的都是正的,这样只用负集合来将整的集合整合也就是(-a-b)这样最后整合到一个负数和一个正数然后在化正有两原创 2021-11-09 15:16:21 · 617 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2) B. Hills And Valleys (思维)
链接题意:定义山峰(两边低中间高)和山谷(两边高中间低)。问最少这两种的和是多少?需要可以操作一个数。分析:首先我们需要先计算出不改变数会有多少种,和为多少?这个东西是好计算出来的,(就从头跑一遍)然后我们看每个数改变会改变多少,当下标为x的数改变时他只影响中间点为(x)和(x-1),(x+1).那我们我们就需要看改变这个数会变成什么,为了减少数量有两种选择,一种是变成前一个数,一种是变成后面的那个数,我们只需要判断出来即可。然后枚举一下改变的数。但是做的时候也不知道在想神马?// Probl原创 2021-11-09 14:48:05 · 132 阅读 · 0 评论 -
CF1423K Lonely Numbers (数学+思维)
链接题意:规定如果有两个数a,b,他俩构成的这三个数gcd(a,b),agcd(a,b),bgcd(a,b)gcd(a,b),\frac{a}{gcd(a,b)},\frac{b}{gcd(a,b)}gcd(a,b),gcd(a,b)a,gcd(a,b)b能组成三角形,那么a,b都不孤单。给出我们n,让我们找出1-n中有几个数孤单。分析:首先我们看到gcd 想到素数(哈哈哈博主习惯性操作),然后我们分析怎样的数会是孤单的,首先当一个区间结尾也就是x为素数,这个x一定孤单,为什么那,因为他与前面原创 2021-11-08 20:12:21 · 283 阅读 · 0 评论 -
CF1426E Rock, Paper, Scissors (思维)
链接题意:A和B进行剪刀石头布的游戏,一共进行n局:A能使用a个石头,b个剪刀,c个布B能使用x个石头,y个剪刀,z个布问A最少和最多可以赢多少局?分析:看完题直接写就好了,先分析A最少赢多少:最少赢那就是说A的石头尽量要和B的石头或者布遇见,那么就直接用a-x-z看剩多少石头,如果还剩说明他肯定会遇上B的剪刀,这样A就赢了。同样看剪刀和布就好了再看A最多赢多少,最多赢就是A的石头尽量遇上B的剪刀,那直接取最大值就行了。void solve(){ cin>原创 2021-11-08 19:36:26 · 2326 阅读 · 0 评论 -
ABC226E - Just one (连通图+思维)
链接题意:给出n个点m条无向边,让你构造出每个节点只有一个出度的图,问有多少种?分析:开始读错题了。读成每个节点可以有大于等于1的出度我们知道正确题意之后,进行解读,要求每个节点只有一个出度得知,在一个连通图中边数一定只能有节点数这么多,这样就有两种选择,所以我们就将问题转化成找合法的连通图,所谓合法就是边与连通图中的节点相等,我选择用并查集维护,并且维护边数点数。/// 欲戴皇冠,必承其重。#include <bits/stdc++.h>using namespace std原创 2021-11-08 14:10:29 · 242 阅读 · 0 评论 -
ABC 225 E - 7 (排序+思维)
链接题意:给出你n个点,然后他会与(xi−1,yi),(xi,yi−1)(x_i-1,y_i),(x_i,y_i-1)(xi−1,yi),(xi,yi−1)构成777然后让你连接(0,0)(0,0)(0,0)与这两个个点,其区间内不会有其他点介入,就算合格。我们可以删除一些点,问最多有多少个合格的。分析:题意证不太明白的话手模下样例就好了。(1,1),(1,2),(2,1)(1,1),(1,2),(2,1)(1,1),(1,2),(2,1)可以看到我们对于(1,2)(1,2)(1,2)原创 2021-11-05 20:08:07 · 224 阅读 · 0 评论 -
2018icpc青岛F . Tournament (构造)
题意:给出n个骑士,进行k次对战,每个骑士只能与另一个骑士对战一次,如果第i回合A对战B,C对战D,那么如果第j回合A对战C(D),那么B一定对战D©。问是否可能构成k场对局。字典序从小到大。分析:我们看最小的字典序,也就是我们想到的最优的不过就是1 2 3 4 5 6 7 8 (然而这个不能用,本人不能跟本人对战)2 1 4 3 6 5 8 7 (那么我们只好选优,肯定12互换,34互换)3 4 1 2 7原创 2021-11-03 20:08:57 · 423 阅读 · 1 评论 -
2018ICPC青岛(D,E)
2021/11/03 19:03:28D . Magic Multiplication题意:给出A,B可以计算出C,计算方式是:A的第一位与B位上的数相乘得到一个数,加入字符串,接着A第二位数,,举个例子就是:23 ×\times× 45=8101215,8=24,10=25,12=34,15=35.然后给出C,然我们求出,A,B,如果有多组符合条件,我们直接输出最小的A即可。分析:首先我们知道这个运算,那么我们就能够得到,如果我们确定了A的第一位,那么就可以通过C前几位确定B的全部位上的数字:原创 2021-11-03 19:28:23 · 284 阅读 · 0 评论 -
2021CCPC女生赛 C. 连锁商店(思维+状压DP)
链接题意:给出N个节点,给出M条边,我们只能从低节点跳到高节点。然后给出N个节点属于的公司,给出第i个公司第一次到给多少奖金。问从节点1开始,分别到达节点(1~n)最大奖金。分析:其实不难想到我们如果当前节点在x,有(a1,a2,a3…)这些节点可以到达节点x,那么我们选取(a1,a2,a3…)所有的状态转移过来就好了,状态表示我们可以用二进制,也可以用字符串数组等等,只要可以表示状态就行。状态转移有两种状态一种是在之前出现过,不用再加奖金了,把这个状态加入x另一种之前没有出现过,加上奖金并原创 2021-11-01 17:13:30 · 1329 阅读 · 0 评论 -
ARC 123 D - Inc, Dec - Decomposition (思维构造+DP)
链接题意:给出A序列,让你构造出B,C序列要求满足:Bi+Ci=AiB_i+C_i=A_iBi+Ci=AiB序列递增C序列递减使得∑∣Bi∣+∣Ci∣\sum |B_i|+|C_i|∑∣Bi∣+∣Ci∣最小化分析:我们要让B递增,C递减,∑\sum∑那么我们肯定要 满足Bi=Bi+1B_i=B_{i+1}Bi=Bi+1或者Ci=Ci+1C_i=C_{i+1}Ci=Ci+1所以一旦我们选择好B1B_1B1也就确定了整个序列。我们看B,C是相反的单调性,不好分析,我们原创 2021-10-29 12:10:31 · 312 阅读 · 0 评论 -
ARC C - 1, 2, 3 - Decomposition(思维)
链接题意:给出一个数n,让你求分成最少个数,使得所有数和为n,并且这些数,每个位都为是(1,2,3)分析:首先其实我们只需要明白我们将每一位都分成(1,2,3)那么我们肯定从最高位看,看最少能分成多少个数,如果比原本之前的答案小(就是原本个数这一位置上都是1,不够用),那么说明我们还借位,从前面借1,然后继续判断即可。ll n, m;string str;ll a[N];void solve(){ cin >> n; for(int i = 0; i <原创 2021-10-27 20:18:53 · 235 阅读 · 1 评论 -
D. Frog Traveler (bfs)
链接题意:给出一个井高度为n,每个点有两个属性,第一个属性是他可以往上调(0,a[i]),第二个属性是他调上去会往下滑(b[i]).问最少多少步跳上去 (0)分析:首先我们默认可以直接BFS直接找,但是因为可能跳的比较远的话会超时。所以我们需要剪枝:怎么剪枝那?我们看如果我们当前在n他可以跳到(n~(n-a[i]))所以他跳完之后这些区间就不用在搜索了,所以下次看搜只需要搜(0 ~ (n-a[i]+1))这些,然后我们每次更新最大值即可。const int maxn = 3e5 + 10;原创 2021-10-25 20:01:05 · 386 阅读 · 0 评论 -
Gym 102394 I. Interesting Permutation(DP)
链接题意:给你一个数字n,然后有一个长度为n的数列,这个数列的第 i 项值时某个数列的前 i 项的最大值减去最小值的到的结果,问你用着n个数字能构造出来多少种长度为n的数列。分析:首先我们考虑一下一定没有答案的方案:如果开头不是0,或者结尾不是n-1一定没有答案如果整个序列不是单调递增一定没有答案如果差值小于序列长度-1,一定没有答案(长度为x,差值最小这x个数分别是1,2…x,这样差值为x-1所以差值不会小于序列长度-1)然后我们分析:我们刚拿到这个问题,不知道如何解决,那么我们得找到原创 2021-10-21 09:38:34 · 153 阅读 · 0 评论 -
CF 1593 F. Red-Black Number (搜索)
链接题意:给出字符串长度n,一个数a,一个数b.然后将字符串拆分成两个数x,y,使得X%a=0,y%b=0分析:我们看数据范围都比较小,我们可以直接枚举每个数的余数,也就是 0~(a-1), 0~{b-1},那么我们就需要拿出两个维度来存放其余数,然后我们对于每一位i多有对应的两个余数,那么在开一维来存放到哪一位了。然后我们如果到达i位,并且连个余数出现过肯定就不用不用往后看了。当然我们还要记录那些位置放了什么。所以再开一维存放状态。string str;ll n,m;ll a,b;ll原创 2021-10-19 23:25:43 · 151 阅读 · 0 评论 -
ABC 223 A~F (C尺取,D拓扑排序,E思维,F分块)
链接A Exact Price对n取余看是否为0,注意特判0.B String Shifting找最小,最大,我们发现他是有个环形的字符串那么我们可以把n个字符串提取出来,排序即可。C - Doukasen我们从两端往中间走,看那一端先到交界处这段就要向前走下一块,速度会变,到了交界处另一端减去当前时间走的即可(速度不变),所以我们只需要比较走过两端最后一块的时间为多长,取小的即可。长度用double用ll是不对的哦ll n,m; struct node{ double a, b原创 2021-10-19 20:39:22 · 287 阅读 · 0 评论 -
ARC 128D - Neq Neq(dp+组合数学+思维)
链接题意:给出你一个长度为n的序列,你可以对其操作使得这个序列发生变化,问一共有多少种?对于连续的i-1,i,i+1,这三个数如果满足 ai−1!=aia_{i-1}!=a_{i}ai−1!=ai并且ai!=ai+1a_{i}!=a_{i+1}ai!=ai+1 那么我们就可以将aia_iai删掉。分析:明显看出利用DP来解决组合数学问题。那么我们认为第iii位置,表示到i有dp[i]种方案数。那么他会从那种状态转移过来那?首先dp[i]是继承dp[i-1],这一点是一定的,其次原创 2021-10-18 19:42:35 · 289 阅读 · 2 评论 -
ARC 128 C - Max Dot (DP+思维)
链接题意:给出你n,m,s, 和n个数a[i],让你构造出一个长度为n的一个序列p,使得∑pi∗ai\sum p_i*a_i∑pi∗ai最大,并且要满足一下条件0<=p1<=p2<=....<=pn<=m0<=p_1<=p_2<=....<=p_n<=m0<=p1<=p2<=....<=pn<=m(∑pi)=s(\sum p_i)=s(∑pi)=s分析:首先我们采用三段分割,至于为什么要三段原创 2021-10-18 15:44:13 · 339 阅读 · 0 评论 -
CF1594F Ideal Farm (思维+数学)
链接题意:给出n,s,kn , s , kn,s,k,求是否所有的长度为nnn且和为sss的正整数序列都有一段和为kkk的区间。分析:可以考虑构造一个序列使得没有和为kkk的区间。转化一下就是前缀和差值没有等于k的构造时,我们肯定想要前缀和越小越好,那么就可以使得前(k-1)个数都为1,那么和为(k-1),在第k个数我们必须选一个大于k的一个数还要最小话,肯定就是k+1。然后后面照样(k-1)个1+1个(k+1).1 2 3 ... k-1 k k+1 k+21 1 1 ...1 k+1 1原创 2021-10-14 19:56:45 · 221 阅读 · 0 评论 -
ABC 221 E - LEQ (树状数组)
链接题意:给出你一个长度为nnn的序列,然后让你从中找出子串要求第一个数比最后一个小,要求找出的子串求方案数?分析:首先我们肯定是要找两个数符合条件的两个数。确定这两个数之后,其中的方案数就是(2j−i2^{j-i}2j−i)方案, 就是从中间选0,1,2,3,…都选,一共这么多方案数。当我们枚举一个数,然后比他小的数有多少个时,我们肯定想到用树状数组来维护。然后剩下的问题,就是如何维护这个方案数2j−i2^{j-i}2j−i我们看 答案应该是∑2j−i=∑2j2i)\sum2^{j-i}=\su原创 2021-10-05 17:54:55 · 208 阅读 · 0 评论 -
ABC 221 D - Online games (思维+离散化)
链接题意:给出你n个人工作的区间,第一个是开始时间,第二个是工作多长时间,问有多少时间有多少人在工作。分析:首先我们如果不看数据范围的话我们肯定想用差分来做,但是现在区间是1e91e91e9所以我们不能直接用差分,看是我们知道一共n个人那么最多有2n个节点,我们把这些节点提取出来不就是另一种差分的方式吗?把2n个点离散化,然后我们知道差分的话要有两个端点,左端点是开始时间,右端点应该是结束时间+1,因为正常差分[l,r],我们是在a[l]++,a[r+1]–;所以我们的右端点应该是结束时间+1,注原创 2021-10-03 20:02:57 · 289 阅读 · 0 评论 -
CF 1250 B. The Feast and the Bus (思维+尺取)
链接题意:某公司的员工们要庆祝今天的第256256256天!该公司有nnn名员工和kkk个团队,每个员工仅属于111个团队,每个团队至少有111名员工。团队编号从111到kkk。现在给出nnn个数字:t1,t2,……tnt_1,t_2,……t_nt1,t2,……tn表示第iii个员工属于第tit_iti 个团队。该公司雇佣了一辆班车,这辆班车将会往返多次承载员工去参加宴会,每一次可以承载111个团队或者222个团队,且每一个团队不能分离,必须在同一次车上。这辆车可以承载sss个员工,sss可以为原创 2021-09-29 22:03:21 · 190 阅读 · 1 评论 -
CF86A Reflection (思维)
链接题意:定义一个数的“Reflecion number”,是用9减去它的每一个数位后,再去掉前导0而形成的数,如192的“Reflecion number”是807(9-1=8,9-9=0,9-2=7)。再定义一个数的“Weight”,它等于这个数自身乘以这个数的“Reflecion number”。输入l和r1<=l<=r<=109{1<=l<=r<=10^9}1<=l<=r<=109,输出l到r的数中"Weight"的最大值。分析:首先原创 2021-09-28 15:19:13 · 126 阅读 · 0 评论 -
E . Tutorial Groupings (DP + 思维)
题意:给出你NNN个数,然后让你分组,每组中最多有sss个元素,并且要求整个序列严格递增,也就是TiT_iTi组最大的元素严格小于Ti+1T_{i+1}Ti+1中最小的元素。并且一个组中极差最大为kkk.问方案数?对1e9+7取模。分析:首先我们看数据范围 n为100001000010000 ,s为100100100,那么我们可以用dp[i][j]dp[i][j]dp[i][j]表示第i个位置,以长度为j为一组结束的方案数。两种情况 :j=1j=1j=1.那么我们可以想到dp[i][1]原创 2021-09-27 19:54:13 · 84 阅读 · 0 评论 -
CF484A Bits (贪心+进制)
链接题意:nnn组询问,每次给出一个区间l,rl, rl,r,你需要输出在这个区间内二进制表示中1的个数最多的数如有多个答案,输出最小的那个(n≤104,0≤l,r≤1018)(n \leq10^4, 0\leq l, r \leq10^{18})(n≤104,0≤l,r≤1018)分析:首先我们知道我们要的结果是 这个数二进制中1最多。那么我们从最小的数开始+1,保证满足条件在[l,r][l,r][l,r]范围内。所以我们只需要保证不让其大于r就行了。接下来就是+1的操作,对二原创 2021-09-23 14:02:10 · 174 阅读 · 0 评论 -
CF988E Divisibility by 25 (思维+字符串)
链接题意:给出一个从1到101810^{18}1018的整数n,但不包含前导零。 在一次移动中,您可以交换给定数字中的任意两个相邻数字,使得结果数字不会包含前导零。 换句话说,在每次移动后,您所拥有的数字都不能包含任何前导零。 获取可被25整除的数字所需的最小移动次数是多少? 如果无法获得可被25整除的数字,则打印-1.分析:因为结果要是25的倍数。所以最后两个一定要是00,25,50,7500,25,50,7500,25,50,75.然后就是考虑移动完前缀0的问题。我们可以对这四种情况分开考虑,原创 2021-09-15 23:02:18 · 125 阅读 · 0 评论 -
CF895B XK Segments (思维)
链接题意:对一个数组a,定义符合条件的二元组(i,j)表示恰好存在k个整数y,满足ai≤y≤aja_i \leq y \leq a_jai≤y≤aj且y为x的倍数,求符合条件的二元组数量。注意二元组(i,j)==(j,i)i, j) == (j, i)i,j)==(j,i)当且仅当i==ji == ji==j。输入数据第一行是n, x, k,接下来一行有n个数字,第i个代表aia_iai分析:首先我们明确一下 肯定不能出现ai>aja_i>a_jai>aj这样是不合原创 2021-09-15 16:55:11 · 108 阅读 · 0 评论 -
CF1472E Correct Placement(排序+思维)
链接题意:Polycarp想要给他的朋友们拍一张照片,他的朋友们都有h(身高)、w(宽度)两个数值,当一个人A的身高比另外一个人B的身高矮,且宽度比他小时,A可以站在B的前面,或者当A身高比B宽度小时,且宽度比B身高小时,A可以躺在B前面(小,意为严格小于)。现在Polycarp想知道每个人是否有对应的人可以站或躺在他的前面,如果有,则输出那个人的编号,若有多个,则输出任意一个,如果没有则输出-1。输入:第一行一个整数t,代表t组数据。接下来一个整数n,代表n个人。随后n行,每行两个整数,代表每原创 2021-09-14 23:56:44 · 192 阅读 · 0 评论 -
CF 747D. Winter Is Coming(思维+数学)
链接题意:你有两种轮胎,雪地胎和普通轮胎。雪地胎可以在任何路况行驶,而普通轮胎只能在不下雪的时候行驶。你现在知道你的雪地胎最多能用k 天。现在告诉你总天数n ,和每天是否下雪。问你,最少要换几次轮胎,才能保证下雪天都在用雪地胎,并且雪地胎使用天数不超过k 天。你初始状态是普通轮胎,结束状态无所谓分析:首先我们看没有解决方案的情况,就是雪地胎不够用,肯定解决不了:够用一定有答案,这就需要减小换胎次数。我们可以这样想:首先我们每次遇到下雪情况都从普通胎换成雪地胎,再从雪地胎换成普通胎,这样是我们统原创 2021-09-14 21:31:59 · 100 阅读 · 0 评论 -
ABC C - LCM of GCDs (数学+思维)
题意:有n个卡包,每个卡包里面有2张卡片,每个卡片有相应的点数,每张卡片都可以选择放在红袋子里,或者蓝袋子,一张卡片放在红,那另一张就要放在蓝,题目要求让你求出红袋子所有卡片点数的最大公约数,和蓝袋子里所有卡片点数的最大公约数(gcd),然后用两个最大公约数求出两数的最小公倍数(lcm)。分析:我们要求最小公倍数的最大值。那么我们就需要求出红蓝两个袋子的最大公约数。最大公约数怎么来那。首先肯定这个数一定是最大公约数的倍数,所以我们提取出来(a[1],b[1])的所有因数,然后枚举其a[1],和b[1]原创 2021-09-14 14:46:51 · 232 阅读 · 0 评论 -
ABC B - XOR Matching 2 (数学+思维)
链接题意:给定两个长度为n的数组a和b,问将b进行排列,是否可以得到每一个b对应这和a进行异或,可以得到相同的x。分析:首先我们可以知道最多是n个符合条件的数(x),我们枚举下,然后让x异或上aia_iai看有没有对应的b[i]b[i]b[i].如果都有对应的数那么就符合条件。最后不要忘了去重。ll n;vector<ll> a,b,c,ans; void solve(){ cin>>n; ll x; for(int i=1;i<=n;i++) {原创 2021-09-14 14:40:27 · 157 阅读 · 0 评论 -
AtCoder Regular Contest 124 A LR Constraints (思维)
链接题意:题目:给定n张卡片,每张卡片都写着一个数字,范围是从1到k。给定k个限制,每个限制包含两个信息,第一个是字符c,第二个是一个小于等于n的数字ti,表示含义为,c = L。第ti个数字是位置ti上写着i,而这个i是第一个出现的i。如果,c = R,第ti个数字是位置ti上泄着i,而这个i是最后一个写i的数字。问,我们有多中书写方案。分析:数据范围为1000所以我们可以直接O(n^2)的枚举每个数有多少种选法。ll n,m;ll a[maxn];ll b[maxn];voi原创 2021-09-14 14:37:03 · 178 阅读 · 2 评论 -
C . Colourful Chameleons(思维+模拟)
#include <bits/stdc++.h>using namespace std;const int maxn=2e5+7;#define ll long long ll a[maxn],n,m,y;int main(){ cin>>n>>m>>y; ll sum=0,num,cnt=0,x; for(int i=1;i<=n;i++){ cin>>x; if(i==原创 2021-09-13 08:48:03 · 103 阅读 · 0 评论