随笔分类 -  c++

摘要:A 题意 思路 有前导零结果直接为0,出现在第一位的**?贡献为9**,其他地方的**?贡献为10**。 代码 #include<bits/stdc++.h> using namespace std; using ll=long long; char s[10]; int main() { int 阅读全文
posted @ 2023-04-24 19:48 cryingrain 阅读(38) 评论(0) 推荐(0)
摘要:A 题意 两根红蓝方块组成的柱子,可以任意将一根柱子顶端的一个方块移动到另一根柱子顶端,问是否能使得两根柱子均为红蓝交错的颜色。 思路 显然可以转化成一个序列能否从中间分割成两个红蓝交错的序列,也就是判断是否有三个连续的颜色,或者两个颜色连续出现两次以上。 代码 #include<bits/stdc 阅读全文
posted @ 2023-03-02 16:51 cryingrain 阅读(49) 评论(0) 推荐(0)
摘要:Longest Arithmetic 题意 给一个长为n的数组,求其中最长的等差子串长度。 思路 从2开始遍历,维护上一个差,然后判断当前i和i-1的差是否相等。同时记录答案 代码 #include<bits/stdc++.h> using namespace std; const int MAX= 阅读全文
posted @ 2022-11-23 16:41 cryingrain 阅读(48) 评论(0) 推荐(0)
摘要:Countdown 题意 给一个长为n的数组,一个数k,求数组中有多少个子串组成k,k-1,k-2....2,1 思路 扫一遍记录当前期望的值就行了。 代码 #include<bits/stdc++.h> using namespace std; int main() { int T,cas=0; 阅读全文
posted @ 2022-10-13 23:02 cryingrain 阅读(51) 评论(0) 推荐(0)
摘要:A 题意 给一个长为n的数组,每次可以对其中某个数做**+1或-1**的操作。求最小的操作次数,使得可以从数组中选出三个相同的数。 思路 很容易可以想到选三个最接近的数然后操作。也可以很容易证明,对于a<b<c,一定是将a,c操作到b距离最短。 所以排序后遍历中间的b,然后求a与c的差距即可。 代码 阅读全文
posted @ 2022-10-08 22:55 cryingrain 阅读(41) 评论(0) 推荐(0)
摘要:A 题意 一个袋子有n种颜色的球,每种若干个,每次操作可以取出两个不同颜色的球,问最后留下的球可能是什么颜色。 思路 很显然,最后留下的是数量最多的那种颜色。因为可以每次选数量第二多的颜色和其他任意一个颜色取出。直到只剩一种颜色,而此时剩下的那种颜色数量不可能大于原来数量最多的颜色,两两匹配最后一定 阅读全文
posted @ 2022-09-17 23:19 cryingrain 阅读(52) 评论(0) 推荐(0)
摘要:二分搜索框架 int L,R,key; while(L<=R) { int mid=(L+R)>>1; if(a[mid]<key or a[mid]<=key) L=mid+1; else R=mid-1; } return L or R; 问题 二分搜索大家都很熟悉。如果待查区间内只有一个key 阅读全文
posted @ 2021-06-22 22:50 cryingrain 阅读(111) 评论(0) 推荐(0)
摘要:716D 题意 给一个长为n的数列a。对于一个区间的元素,可以把它分为若干个子序列(可以不连续的分)。现在有q次询问,每次询问求一个区间l-r内最少要把区间分成多少个子序列,使得每个子序列出现最多次的元素不超过区间长度的一半(向上取整)。 思路 首先很容易想到,一个子序列只能有一个元素出现次数超过区 阅读全文
posted @ 2021-06-04 12:13 cryingrain 阅读(135) 评论(0) 推荐(0)
摘要:Codeforces Round #722 (Div. 2) A 题意 给一个数组,每次操作可以任意选一个子序列,如何删除其中严格大于子序列平均值的元素。可以操作无数次,求最多可以删除多少元素。 思路 因为可以任选,所以所有大于数组最小值的元素都可以选择与最小值加入一个子序列,所以答案就是大于最小值 阅读全文
posted @ 2021-05-28 12:42 cryingrain 阅读(86) 评论(0) 推荐(0)
摘要:Educational Codeforces Round 109 A 题意 配药,每次操作加一单位水或者配料,求最少需要多少次操作,使得最后配料占比为k%。 思路 容易想到,最差一定可以用100次操作(加k次配料,100-k次水)来完成目标,如果k与100有公因数,则可以优化。因为k是整数,所以化为 阅读全文
posted @ 2021-05-21 23:49 cryingrain 阅读(100) 评论(0) 推荐(0)
摘要:Bike Tour 题意 爬山,有n个检查点,给出检查点的高度,如果一个检查点高于左边的并且高于右边的(最左边和最右边的检查点默认不是),就算作山峰,求山峰的数量。 思路 扫一遍就好了 代码 #include<bits/stdc++.h> using namespace std; const int 阅读全文
posted @ 2020-05-03 23:08 cryingrain 阅读(176) 评论(0) 推荐(0)
摘要:A 题意 用电子屏显示数字, 0 9 一个数字需要若干段,现在总共可以显示 n 段,求最大可以显示的数字 思路 显然位数的贡献必定优于一位的数字大小,所以贪心用需要段数最小的数字( 1 )扩展位数,最后如果剩一段就把第一位变为 7 。 代码 E 题意 给一个 1 n 的排列,每个数有 a[i] 的代 阅读全文
posted @ 2020-04-08 00:08 cryingrain 阅读(138) 评论(0) 推荐(0)
摘要:Allocation 题意 N个房子出售,每个卖Ai刀,现有B刀资金,求最多买多少个。 思路 贪心,排序后从小到大买 代码 #include<bits/stdc++.h> using namespace std; const int MAX=1e5+5; int a[MAX]; int main() 阅读全文
posted @ 2020-03-25 20:41 cryingrain 阅读(197) 评论(0) 推荐(0)
摘要:EduRound 80 A 题意 有一项任务,要求在 n 天内完成,不优化的话需要 d 天,如果用 x 天来优化则可以变成 d/(x+1) (向下取整)天。即总共花 x+d/(x+1) 天,求是否可以按要求完成。 思路 总时间很明显是个凹函数,考虑三分,但是由于存在向下取整,所以不是严格凹函数,所以 阅读全文
posted @ 2020-03-20 22:35 cryingrain 阅读(173) 评论(0) 推荐(0)
摘要:round 613 A 题意 给出一个由 LR 组成的字符串, L 代表向左移动, R 代表向右移动,可能存在任意字符失效,初始位置为 0 ,求有多少种可达的位置。 思路 显然是 n+1 , n 为字符串长度。 代码 阅读全文
posted @ 2020-03-17 23:36 cryingrain 阅读(96) 评论(0) 推荐(0)
摘要:A 题意 找出两个合数使得他们差为某给出的数 n 思路 先指定一个小的合数 a ,则 b=a+n 。若 b 是合数,则直接输出。若 b 是素数,则 b+1 一定不是素数。那么选一个 a 使得 a,a+1 均为合数即可。 代码 c++ include using namespace std; type 阅读全文
posted @ 2020-03-06 23:04 cryingrain 阅读(108) 评论(0) 推荐(0)
摘要:A 题意 水题 思路 水题 代码 B 题意 给一个序列,由 W,B 组成,代表白色和黑色。每次操作可以选择两个相邻的位置,然后把它们的颜色取反(不是交换),可以操作任意次。找出能否使得序列变全黑或全白的操作。 思路 按目标全黑或全白扫一遍即可 代码 c++ include using namespa 阅读全文
posted @ 2020-03-03 22:59 cryingrain 阅读(110) 评论(0) 推荐(0)
摘要:round 607 A 题意 根据后缀判断出自哪种语言 思路 水题 代码 B 题意 给两个字符串 a,b , a 可以交换任意一对字符(只能交换一次),问能否使得 a 字典序小于 b 思路 贪心,越小的字符越前则越好,处理一下后缀 min ,然后从前往后判断能否交换就好了。这样一定是最优的,交换完了 阅读全文
posted @ 2020-02-22 23:41 cryingrain 阅读(99) 评论(0) 推荐(0)
摘要:A 题意 给一个 n ,求范围 [1,n] 内所有数中,所有数位都相等的数的个数,如 111,22,3 等 思路 求出 n 的位数 d ,则数位长度为 [1,n 1] 的数各有 9 个,再考虑数位长度为 n 的数,从高位向低位推,设最高位数字为 k ,如果当前位等于 k ,则继续往下推。否则,若大于 阅读全文
posted @ 2020-02-20 22:02 cryingrain 阅读(83) 评论(0) 推荐(0)
摘要:A 题意 给一个字符串,由 a,b,c 字母和 ? 组成。 ? 可以填成 a,b,c 中的一个。求是否存在一种填法使得:字符串 不存在 任何相邻位置的字母相同。存在则输出填充后的字符串,不存在输出 1 。 思路 对于任何一个位置,只有两个邻居,但是有三种填法,所以说每个问号必定可以合法填充。按规则填 阅读全文
posted @ 2020-02-18 21:21 cryingrain 阅读(102) 评论(0) 推荐(0)