cf题解
文章平均质量分 84
Nnnuus
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #676 (Div. 2)题解
Problem - A - Codeforces题目大意:给定数a和b,请你找出一个数x,使得a^x + b^x的值最小,输出最小值.思路:为了使两个数异或之后的和尽可能地小,那么只有当两个数同一位上都是1的时候才会变小,此时x该位上可以为1,如果a,b该位上不相等,那么x为1或者为0都不影响结果.那么可以发现,ax+bx的最小值就是a^b的值.#include<bits/stdc++.h>using namespace std;#define rep(x,y,z) for(i原创 2021-08-15 14:57:20 · 88 阅读 · 0 评论 -
Codeforces Round #737 (Div. 2)题解
Problem - A - Codeforces题目大意:给定你一个长度为n的序列,你可以将该序列划分为两个子序列,请求出两个子序列,使得两个子序列的平均值之和最大.思路:思维题,如果一个数组内最大的数和其他较大的数分为一组,那么该组的平均值一定会小于最大的的数,我们目前只有两个序列,应该保证其中一个拥有最大平均值,那就是最大的数本身,所以该题只需要把最大的数作为一组,其他数作为一组即可.#include<bits/stdc++.h>using namespace std;#d原创 2021-08-10 11:43:37 · 208 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2)题解
Problem - A - Codeforces题目大意,给定一个大于等于5的素数n,请你求出两个不同的数a,b使得n%a = n % b.思路:比较简单的思维题,因为大于2的质数一定是奇数,那么它对于2的余数一定是1,然后对于n,它和n-1互质,与n-1的余数也是1,所以只需要输出2和n-1即可.#include<bits/stdc++.h>using namespace std;#define rep(x,y,z) for(int x = y; x<=z;++x)#原创 2021-08-02 10:13:51 · 189 阅读 · 0 评论 -
Educational Codeforces Round 112 (Rated for Div. 2)题解
Problem - A - Codeforces题目大意:有三种尺寸的披萨,6,8,10,每种披萨分别需要花15, 20, 25块钱,有n个小孩,确保每个小孩至少都能有一块披萨吃,请问至少需要花多少钱.思路:思维题,分类讨论即可.我们可以发现对于6,8,10所有尺寸的披萨,他们的价格都是5/2每块.当n<=6的时候,都至少需要一大小为6的披萨,当n>6之后,如果n是偶数,那么一定可以由6,8,10组合得到,那么只需要将n*(5/2)就可以,如果是奇数,那么将其+1变成偶数,然后运算即可原创 2021-07-31 15:14:29 · 129 阅读 · 0 评论 -
Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2)题解
Problem - A - Codeforces题目大意:我们定义函数S(x) = 数字x每一位上的数字之和,当满足S(x+1) < S(x)时,我们称数x是一个有趣的数,现在给定你一个数n,请你求出从1到n有多少个有趣的数.思路:思维题,当最后一位出现9的时候,那么该数一定是一个有趣的数,有多少个每10个数个位上会出现一次9,那么只需要将n/10即可,需要注意的是,当n的个位上是9的时候,也是有一个有趣的数,所以应该计算(n+1)/10#include<bits/stdc++.h原创 2021-07-23 11:58:17 · 295 阅读 · 0 评论 -
Codeforces Round #722 (Div. 2)题解
Problem - A - Codeforces题目大意:给定一个数组,每次可选该数组的任意个元素求平均值,对于计算的每个元素,如果其数值大于平均值,那么就将其移出该数组.求出给定数组最多可以删除的元素个数.思路:对于给定序列,最终能留下的元素,一定是数组中最小的元素,所以只需要统计最小元素的个数,然后拿数组总个数减去最小元素个数即可.#include<bits/stdc++.h>using namespace std;#define ll long longmap&l原创 2021-07-21 09:59:29 · 197 阅读 · 0 评论 -
Divide by Zero 2021 and Codeforces Round #714 (Div. 2)题解
Problem - A - Codeforces题目大意:给定长度为n的排列,每组排列有山峰数k,请你进行构造使得n的排列恰好有k个山峰.模拟题:首先山峰的最大数量为(n-1)/2,如果超过这个数那必然无法构造出来,然后再根据k的数量,从大到小放置n, n-1, n-2,…就可以了.#include<bits/stdc++.h>using namespace std;#define rep(x,y,z) for(int x = y; x<=z;++x)#define d原创 2021-07-19 23:23:48 · 331 阅读 · 2 评论 -
Codeforces Round #733 (Div. 1 + Div. 2, based on VK Cup 2021 - Elimination (Engine)题解
Problem - A - Codeforces题目大意:现在规定一种只由0和1组成的数字,我们称这种数字为二进制数字,例如10,1010111,给定一个数n,求该数字最少由多少个二进制数字组成.解题思路:每取一个二进制数字,可以使得原数字n上各位都减小1或者0,为了使次数尽可能地小,那么当原数字n上各位不为0的时候都应该-1,那么最小的次数就是各位上最大的数字.#include<bits/stdc++.h>using namespace std;#define ll long lon原创 2021-07-18 16:42:08 · 379 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)题解
Problem - A - Codeforces题目大意:给定一个长度为n的序列,你可以向序列中添加任意个非负数,来使得序列的平均值为1,求最小添加的个数.思路:非三类讨论当前序列中的所有数的和为负数或者是小于长度n,那么只需要添加一项即可.当前序列中的所有数的都等于1,那么则不需要添加任何数,当前序列中的所有数之和大于长度n,那么这时应该只添加0,并且每一次添加都可以使得当前序列长度加一,当添加到该序列长度为所有数之和时即可.#include<bits/stdc++.h>us原创 2021-07-14 17:33:33 · 255 阅读 · 0 评论 -
Codeforces Round #729 (Div. 2)题解
Problem - A - Codeforces题目大意:给定2n个数,每两个数凑成一对,使得一对数的和为奇数,所有2n个数是否可以都凑成对.思路:只有当奇数个数等于偶数个数时才能符合条件.#include<bits/stdc++.h>using namespace std;#define ll long long#define rep(x,y,z) for(int x=y;x<=z;++x)#define dec(x,y,z) for(int x=y;x>=z;--原创 2021-07-13 16:58:56 · 238 阅读 · 0 评论 -
Codeforces Round #713 (Div. 3)题解
Problem - A - Codeforces题目大意:给你一个数组,只由两个数字组成,其中一个数字只出现了一次,求该数字出现的下标位置.思路:直接模拟#include<bits/stdc++.h>using namespace std;#define ll long long#define INF 0x3f3f3f3f#define rep(x,y,z) for(int x=y; x<=z; ++x)#define dec(x,y,z) for(int x=y; x&g原创 2021-07-13 15:46:17 · 220 阅读 · 0 评论 -
Codeforces Round #732 (Div. 2)题解
Problem - A - Codeforces题目大意:给定一个序列,你可以从序列中任取两个数,对前一个数+1,后一个数-1,求通过一定的变换之后如何从序列a成为序列b.如果无法变换,输出-1.思路:模拟题,主要的关键点在于要注意输出顺序,第一个输出的下标对应的数是-1,第二个数是+1.#include<iostream>#include<algorithm>using namespace std;#define ll long long#define rep(x,y原创 2021-07-12 09:35:37 · 212 阅读 · 0 评论 -
Codeforces Round #731 (Div. 3)题解
Problem - A - Codeforces题目大意:给定起点的坐标和终点的坐标,还有一个障碍物的坐标,求出从起点移动到终点的最短距离(只能横向纵向移动).思路:首先最短距离肯定之终点起点的坐标只差的绝对值之和,然后要考虑障碍物的问题 ,如果障碍物和起点终点都在同一条直线上,而且障碍物在起点终点之间,那么就需要绕路,其他的情况都可以直接走过去.#include<bits/stdc++.h>using namespace std;#define rep(x,y,z) for(int原创 2021-07-11 14:08:08 · 176 阅读 · 0 评论 -
Codeforces Round #730 (Div. 2)题解
Problem - A - Codeforces题目大意:给定两个数,你可以对两个数进行两种操作,两个数同时加1或者两个数同时减1,求两个数经过若干次操作后的gcd,并求出最小的操作次数.思路:无论进行多少次操作,两个数的差值都不会改变,那么这个差值就是两个数的gcd,然后只需要使得两个数进行操作后都是差值的倍数就可以了,至于进行多少次操作,只需要求出分别讨论加1和减1的情况,然后取最小值.#include<bits/stdc++.h>using namespace std;#defi原创 2021-07-08 16:46:48 · 321 阅读 · 0 评论 -
Codeforces Round #727 (Div. 2)部分题解
Problem - A - Codeforces题目大意:有若干个运动员,他们参加的比赛持续时间为t,每个运动员在间隔x的时间后会进行参赛,例如有3个运动员,他们的参赛时刻就为0,x,2x,当一个运动员还在比赛的时候,其他运动员进入,会增加他们一点压力值,求最后所有运动员参加完比赛后的压力值之和.思路:首先需要确定在一个运动员参赛过程中可能累计的最大压力值,为t/x向下取整,然后判断有多少个人是处于最大压力区间的,这个区间的大小是运动员总数减去区间内最大压力值,然后除满压力值的,其它每个人的压力值依次递原创 2021-07-01 14:34:26 · 116 阅读 · 0 评论 -
Codeforces Round #725 (Div. 3)题解
Codeforces Round #725 (Div. 3)题解Problem - A - Codeforces题目大意:给定一个数组,你每次可以从左边取一个数字,或者从右边取一个数字,求取得序列中最大值和最小值所需的最小次数.思路:简单模拟就是了,一共有三种取法,从左向右取完,从右向左取完,两边都取,主要用swap来简化过程.#include<bits/stdc++.h>using namespace std;#define ll long longint t, n;int原创 2021-06-27 11:05:10 · 234 阅读 · 0 评论