随笔分类 -  OJ_codefoces

摘要:CF1429A 思维 题意: 给定一个长度$n$序列,两个人可以轮流取,alice取奇数位,bob取偶数位,若最后留下的数是奇数则alice胜,否则bob胜 题解: 可以知道最终留下的数是奇数位/偶数位,那么尽量留下奇数/偶数即可 #include<iostream> #include<cstdio 阅读全文
posted @ 2020-10-23 16:09 worcher 阅读(148) 评论(0) 推荐(0)
摘要:题意: 给定一个置换 \(p\) ,求置换的最小 \(k\) 次幂,满足 \(\exists i,c[i]=c[p^k[i]]=c[p^k[p^k[i]]]=...\) 题解: 先将置换写成若干轮换乘积的形式,那么每个轮换都是一个模x剩余加法群 题目式子可以简化为 \(\exists i,c[i]= 阅读全文
posted @ 2020-10-23 15:52 worcher 阅读(129) 评论(0) 推荐(0)
摘要:CF1426A 数学 题意: 第一层$2$间房间,之后每层$x$间房间,编号依次递增,求第$n$号房间在第几层 题解: $$1+\lfloor\frac{max((n-2),0)}\rfloor+(max((n-2),0)%m>0)$$ #include<iostream> #include<cst 阅读全文
posted @ 2020-10-20 09:16 worcher 阅读(172) 评论(0) 推荐(0)
摘要:题面: 思路: 首先所有操作对于总和都是 $+2$ ,因此总和的奇偶性质是不变的 那么考虑最终情况,假设为 $x$ ,只要这个 $\sum x$ 的奇偶情况和初始一样,就一定存在方案达到这个结果 方案就是只需要每次选相邻 $+1+1$ 直到 $x$ ,或者选择单独的 $+2$ ,实际上选择单独的 $ 阅读全文
posted @ 2020-04-01 15:14 worcher 阅读(348) 评论(0) 推荐(0)
摘要:题面: 题意: 给定$n$,求$0~10^n 1$中总共的连续相同长度块分别有多少个,例00032,有1个长度为3的连续块,2个长度为1的连续块 思路: 一个长度为k的块我们可以看作长度为$1$的块,其价值为$k$ 设$f[n]=9^{n 1} 10$表示连续$n$个长度为$1$的块的方案数 则$a 阅读全文
posted @ 2020-03-24 11:07 worcher 阅读(205) 评论(0) 推荐(0)
摘要:A. Two Rabbits【思维】 题意:两只兔子同时往中间有规律地跳,问是否可以同时跳到同一点 题解:算一下距离是否是每回合缩短距离的倍数即可 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #i 阅读全文
posted @ 2020-02-16 12:46 worcher 阅读(252) 评论(0) 推荐(0)
摘要:A. Three Strings【思维】 题意:给你三个串a,b,c,对于串的每一个字符i,必须进行以下操作:swap(a_i,c_i)或者swap(b_i,c_i),问是否存在操作方案使得操作完之后使得ab串相等 题解:判断是否存在a_i,b_i同时不等于c_i的情况 #include<iostr 阅读全文
posted @ 2020-02-14 17:17 worcher 阅读(266) 评论(0) 推荐(0)
摘要:题意:给你两个数组a,b,求是否存在操作使得a变成b,操作为选取一段子区间[l,r],选一个正整数k,使得ai+=k,i∈[l,r],只能操作一次 题解:模拟即可 #include<iostream> #include<cstdio> #include<cstdlib> using namespac 阅读全文
posted @ 2019-11-22 10:20 worcher 阅读(395) 评论(0) 推荐(0)
摘要:题意:给定长度为n的方块,要求染色,需要满足:当|j-i|>1且n%|j-i|==0时,两格颜色相同,求做多可以染多少种颜色 题解:求出n的所有质因子 1、若只有一种质因子,则答案为该质因子 2、若有两种以上的质因子,则答案为1 只有一种质因子时,相当于每隔若干个放同种颜色,则可以放p种颜色 有两种 阅读全文
posted @ 2019-11-20 22:01 worcher 阅读(277) 评论(0) 推荐(0)
摘要:题意:给定两个字符串,问是否存在交换方案使得两个字符串相同,方案为交换次数小于等于2n,且每次只交换s1与s2中的一个字符 题解:考虑从前往后枚举,当第i位不同时,考虑找后边的第j位,若存在这样的第j位,则存在方案 1、存在aj==ai且j>i,那么交换aj,bi 2、存在bj==ai且j>i,那么 阅读全文
posted @ 2019-11-20 21:56 worcher 阅读(301) 评论(0) 推荐(0)
摘要:题意:给你两个字符串,问是否存在交换方案使得两个字符串变成一样的,方案为只交换一次且只交换s1与s2里的一个字符 题解:若一开始就相同,则存在交换方案 若一开始不同的位置为1个或大于2个,则不存在方案 若一开始不同的位置为2个,则看ai==aj 或 bi==bj,只要满足其中一个就存在方案,否则不存 阅读全文
posted @ 2019-11-20 21:52 worcher 阅读(285) 评论(0) 推荐(0)
摘要:题意:给你n个长度为ai的木板,求最大能拼成的矩形为多大 题解:显然贪心每次选最大的进去拼,那么剧需要枚举矩形长度x,看最长的k个能够拼出长度为x的矩形即可 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorith 阅读全文
posted @ 2019-11-20 21:39 worcher 阅读(222) 评论(0) 推荐(0)
摘要:题意:给定n个数,让你给出一个数,使得n个数与给出的数异或后得到的数的二进制表示中1的数量相同 题解:考虑暴搜2^30去找答案,显然不可接受 显然可以发现,这是一个经典的meet in the middle模型,直接套用然后hash一下即可 设前15位异或完之后1的个数为ai,那么差分一下得 a1 阅读全文
posted @ 2019-11-18 11:01 worcher 阅读(224) 评论(0) 推荐(0)
摘要:题意:给定三个序列abc,问最少操作几次使得满足a<b<c 题解:将三个序列合并起来,设cnt[i][1/2/3]表示前i个数有几个是来自序列1/2/3的。 枚举第一个序列要到i,此时对于第一个序列的操作次数就是cnt[i][2]+cnt[i][3]+cnt[n][1]-cnt[i][1] 对于第二 阅读全文
posted @ 2019-11-15 11:20 worcher 阅读(260) 评论(0) 推荐(0)
摘要:题意:给定一些怪物,每天可以选一个勇士进去打怪,每个勇士每天只能打不超过si个怪物,每个勇士只能打能力值≤pi的怪物,问最少多少天打完所有怪物 题解:贪心,每天尽可能多的去打怪,那么存一个对于长度为i的怪物可以用的最大的能力值是多少,每天枚举长度,尽可能长的去打怪即可 代码: #include<io 阅读全文
posted @ 2019-11-15 11:12 worcher 阅读(434) 评论(0) 推荐(0)
摘要:题意:给定一个数组,求最小的字数组使得数组里存在至少一对重复元素 题解:每个点求出他的后继在哪,然后每次贪心就这个点到他的后继为一个子数组,求出最小的就是答案 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring 阅读全文
posted @ 2019-11-15 11:09 worcher 阅读(287) 评论(0) 推荐(0)
摘要:题意:每次可以对a进行两种操作,1:如果是偶数,则变成3*a/2;2:变成a-1 显然当a=1时,b只能为1 a=2或3时,b只能为123 a>3时,b可以为任意数 代码: #include<iostream> #include<cstdio> #include<cstdlib> #define l 阅读全文
posted @ 2019-11-15 11:06 worcher 阅读(229) 评论(0) 推荐(0)
摘要:题意:给你n个人和两个尖子生a,b,你可以操作k次,每次操作交换相邻两个人的位置,求问操作k次以内使得ab两人距离最远是多少 题解:贪心尽可能的将两人往两边移动,总结一下就是min(n-1,|a-b|+x) 代码: #include<iostream> #include<cstdio> #inclu 阅读全文
posted @ 2019-11-15 11:02 worcher 阅读(204) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1256 A:Payment Without Change【思维】 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价值为s 题解:min(s/n,a)*n+b>=s?YES:NO #include<iostream> 阅读全文
posted @ 2019-11-05 08:43 worcher 阅读(687) 评论(0) 推荐(0)