codeforces Good Bye 2022
codeforces Good Bye 2022
A. Koxia and Whiteboards
题解
根据提意,每次对a数组最小元素的操作就好了,因为n,m的范围比较小,所以没必要用优先对列。
#include<bits/stdc++.h>
using namespace std;
#define in(n) cin>>n;
#define out(m) cout<<m;
const int maxn = 1e2 + 5;
int a[maxn],b[maxn];
int min(int x, int y)
{if (x < y)return x;return y;
}
int main()
{int t;cin >> t;while (t--){int n, m;cin >> n >> m;for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= m; i++)cin >> b[i];sort(a + 1, a + 1 + n);for (int i = 1; i <=m; i++){a[1] = b[i];sort(a + 1, a + 1 + n);//每次操作后排序一下保证a[1]始终最小}long long sum=0;//计算结果要开long long 因为结果肯定会超过intfor (int i = 1; i <= n; i++)sum += a[i];printf("%lld\n", sum);}return 0;
}
B. Koxia and Permutation
题解
翻译一下题目就是找到长度为n的数组,并且这个数组中所有长度为k连续的一部分的最大值最小值之和又组成了一个数组c,要求c中的最大值尽量小。
举个例子
如果p[10]={1,2,3,4,5,6,7,8,9};
那么
c1=max{1,2,3}+min{1,2,3}
c2=max{2,3,4}+min{2,3,4}
.....
c8=max{8,9,10}+min{8,9,10}
理解了题意,现在就考虑怎么找这个数组,首先题中说到了p中的元素不能重复,那么很容易就可以想到用 1,2,3,4,5,6,7,8,9,10......n 这些是我们知道的最小的正整数,现在的的问题就是如何排列这些数。我们要优先考虑最大的数 n 应该放哪里,并且我们不希望它接触太多的数,所以我们选择将n放到边上,这里我们将它放到最左边,也就是第一组的最左边,然后再把最小的数 1 安排到它附近让值尽量更小,并且我们希望 1 可以接触尽量多的数,所以放在第一组的最右边,同理我们在第一组可以放尽量大的数因为第一组的最大值和最小值都确定了,并且同理大的要靠左,同理我们对接下来没放数的位置进行操作。
这里还是以 10 3 为例,每两个空格之间代表需要填一个数
,10,9,1,8,7,6,2,5,4,3,
代码实现的步骤如下
第一步:10,9, ,8,7, ,6,5, ,4, 把序号为k的倍数的位置先空开 第二步:10,9,1,8,7,2,6,5,3,4,把空位按从小到大的顺序填上
#include<bits/stdc++.h>
using namespace std;
int a[200005];
int main()
{int t;cin >> t;while (t--){int n, k;cin >> n >> k;int count = n;int flag = 1;for (int i = 1; i <= n; i++){if (i % k)a[i] = count--;}int count2 = 1;for (int i = k; i <= n; i += k){a[i] = count2++;}for (int i = 1; i <= n; i++)printf("%d ", a[i]);printf("\n");}return 0;
}
C. Koxia and Number Theory
题解
题意很容易理解,给一组数a,问有没有x使得a中每一个元素加上x后两两互质。
看到这题首先会想到枚举,但是看到这个数据范围就知道枚举模拟行不通,这时候就应该考虑互质、公因数的一些性质。怎样会无论加什么数都不能让a中的元素互质。
首先容易考虑的就是数组中含有相同的元素。如果含有相同的元素直接输出NO
然后就要考虑元素不同怎么办。我们需要从例子中寻找规律,比如,2 4 5 7,我们观察发现这组数是NO,因为你无论加的是奇数还是偶数,都会出现两个偶数。然后扩大一下例子的长度1 3 5 7 9 11,表面上我们很难判断是YES还是NO,我们从上一个例子拓展一下,上个例子为什么会出现这种现象,2 4 5 7 中含有两个偶数,两个奇数,奇数加奇数是偶数,偶数加偶数是偶数,我们能不能吧这个拓展出奇数偶数的范围呢。如果x=1,结合膜的性质,数组变为3 5 6 7这个奇数偶数的变化过程可以被看做(2%2 + x%2)%2 = 1,所以是奇数,(4%2 + x%2)%2 = 1,所以是奇数,(5%2 + 1%2)%2 = 0,所以是偶数,(7%2 + 1%2)%2 = 0,所以是偶数。找到规律要和元素互补就会出现公约数,比如,4 7,这两个数模3都是1,如果给他们加上2,,5,8,11等值为(3*k+2)的数因为相当于4 7和这些数“互补”,补为某个数的倍数,回到1 3 5 7 9 11显然不是所有数都会让1 3 5 7 9 11中的两个及以上数变成2的倍数,那么我们考虑可不可能成为3的倍数,先对这些数取模得到1 0 2 1 0 2,这样就显而易见了,无论我们选任何数都会让其中两个数变成3的倍数。那么4的倍数或5的倍数呢,这些显然不可能,因为数字个数只有6个,无法涵盖a%4出现的所有情况的两倍,会有漏洞,我们将这组数对4取模得到 1 3 1 3 1 3,0 和2没有涵盖到,所以我们枚举时只要枚举小于等于n/2的倍数。
再对1 3 5 7 9 11进行分析,6个数,只需要枚举倍数[2,3]的情况,当倍数为2时,取模得1 1 1 1 1 1,没有涵盖所有情况,当倍数为3时 ,取模得 1 0 2 1 0 2,涵盖了所有情况,无论取什么数都会有两个数变成3的倍数。
代码实现
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e2 + 5;
long long a[maxn];
int b[105];
int main()
{int t;cin >> t;while (t--){memset(a, 0, sizeof a);memset(b, 0, sizeof b);int n;cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];sort(a + 1, a + 1 + n);int flag0 = 0;for (int i = 2; i <= n; i++){if (a[i] == a[i - 1]){printf("NO\n");flag0 = 1;break;}}if (flag0)continue;int flag = 1;int count=1;for (int x = 2; x <= n/2 ; x++){flag = 1;for (int i = 1; i <= n; i++){int c = a[i] % x;b[c]++;}for (int i = 0; i <= x - 1; i++){if (b[i] < 2){flag = 0;}}memset(b, 0, sizeof b);if (flag){count = 0;break;}}if (count)printf("YES\n");else printf("NO\n");}return 0;
}
codeforces Good Bye 2022相关推荐
- Codeforces - Good Bye 2020
Codeforces - Good Bye 2020 前言 A - E 题解 2020的最后一场Codeforces,也算有点纪念意义吧- 赛时差1分钟调出e,一直被1<<i爆int迷惑了 ...
- Codeforces Good Bye 2015 A. New Year and Days 水题
A. New Year and Days 题目连接: http://www.codeforces.com/contest/611/problem/A Description Today is Wedn ...
- Codeforces Good Bye 2015 D. New Year and Ancient Prophecy 后缀数组 树状数组 dp
D. New Year and Ancient Prophecy 题目连接: http://www.codeforces.com/contest/611/problem/C Description L ...
- Good Bye 2022: 2023 is NEAR C. Koxia and Number Theory
原题链接:Problem - C - Codeforces 题意: 给定一个长度为n的数组,请问是否存在一个数 x ,使得任意两个数 与满足 .若是输出 YES ,反之输出 NO . 思路: 我们可以 ...
- Codeforces//Good Bye 2013//A. New Year Candles 水题
第一次在Codeforces上提交题,全是英文,啊.应该是场比赛,WA了两次,丫的.哎,什么时候才能不做水题了呢.Happy New Year!Zhou Ping!努力奋斗! 题目链接:A. New ...
- Codeforces Good Bye 2016 题解
好久没有fst题了...比赛先A了前4题然后发现room里有人已经X完题了没办法只能去打E题,结果差一点点打完...然后C题fst掉了结果就掉rating 了...下面放题解 A. New Year ...
- Good Bye 2022: 2023 is NEAR 题解
Koxia and Whiteboards Statement Kiyora 有nnn块白板,从111 到nnn 编号.初始情况下, 第iii 块白板上写着一个整数aia_iai . Koxia 要 ...
- Codeforces Good Bye 2020 补题记录
系列文章目录 文章目录 系列文章目录 前言 G. Song of the Sirens 前言 我是傻逼 G. Song of the Sirens 给定n和q,字符串s0和t,t的长度为n sis_i ...
- Good Bye 2017 G. New Year and Original Order 数位dp + 按数贡献
传送门 文章目录 题意: 思路: 题意: 定义S(k)S(k)S(k)为将kkk的每一位拿出来从小到大排序后构成的数,比如S(3421)=1234S(3421)=1234S(3421)=1234,求S ...
最新文章
- angularjs-ngModel 控制页面的宽度
- 知识O2O:数字与文明的交汇点?
- Arthas 定位 Dubbo 手动注册 Eureka 异常
- 2019字节跳动秋招笔试
- LwIP应用开发笔记之六:LwIP无操作系统TCP客户端
- 上海 · 百度语义分割Pro沙龙,高性能深度学习实战营
- vue 存储对象 不要监听_Vue源码解析----响应式原理
- 阅读圣经丨筛选上下文与行上下文
- vue设置video图片_vue video和vue-video-player实现视频铺满教程
- 测试基本功WEB测试之输入框测试点总结
- 现在很迷茫,完全不知道自己能干什么
- Python策略模式实例
- lzg_ad:XPE数据库组件
- web h5调用微信分享功能
- Odoo相关资源(持续更新中)
- AI+教育 I 69天流利说APP学习浅谈自适应学习
- Apache Kudu 与 Impala Shell 的结合使用文档(创建表、删、改、查)
- C++的time_t 和 struct tm 类型【s
- Activiti6.0 (三)核心API
- boundary的用法