Codeforces Round #682 (Div. 2)
文章目录
- Codeforces Round #682 (Div. 2)
- A. Specific Tastes of Andre
- B. Valerii Against Everyone
- C. Engineer Artem
- D. Powerful Ksenia
- E. Yurii Can Do Everything
- F. Olha and Igor
Codeforces Round #682 (Div. 2)
A. Specific Tastes of Andre
题意: 要求构造一个长度为n的perfect数组
题解: 全部输出1即可
代码:
#include <bits/stdc++.h>using namespace std;int const N = 2e5 + 10;
typedef long long LL;
typedef pair<int, int> PII;int n, m, T;int main() {// freopen("in.txt", "r", stdin);cin >> T;while(T--) {cin >> n;for (int i = 1; i <= n; ++i) cout << 1 << " ";cout << endl;}return 0;
}
B. Valerii Against Everyone
题意: 给定b数组,ai=2bia_i = 2 ^ {bi}ai=2bi,问是否存在两段a数组相同
题解: 因为a数组是b数组的2进制形式,因此a数组的每个元素其实都是100000的形式,要想使得两段a数组相同,必须存在两个相同的元素,否则无论多少个11111都凑不出10000
代码:
#include <bits/stdc++.h>using namespace std;int const N = 2e5 + 10;
typedef long long LL;
typedef pair<int, int> PII;int n, m, T, a[N];
unordered_map<int, int> mp;int main() {// freopen("in.txt", "r", stdin);cin >> T;while(T--) {mp.clear();cin >> n;for (int i = 1; i <= n; ++i) {scanf("%d", a+ i);mp[a[i]]++;}int flg = 0;for (int i = 1; i <= n; ++i) {if (mp[a[i]] >= 2) flg = 1;}if (!flg )cout << "NO\n";else cout << "YES\n";}return 0;
}
C. Engineer Artem
题意: 对于一个矩阵,每个元素可以选择加一或者不加一。要求找出一种构造方式使得任意2个相邻的元素奇偶性不相同。
题解: 对于一个棋盘,可以把位置(i, j)且i + j为偶数的地方都变成偶数,为奇数的地方都变成奇数,那么就可以使得任意两个相邻的元素奇偶性不同
代码:
#include <bits/stdc++.h>using namespace std;int const N = 2e5 + 10;
typedef long long LL;
typedef pair<int, int> PII;int n, m, T, a[110][110];int main() {// freopen("in.txt", "r", stdin);cin >> T;while(T--) {cin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {scanf("%d", &a[i][j]);if ((i + j) & 1) {if (a[i][j] % 2 == 0) a[i][j] ++;}else {if (a[i][j] % 2) a[i][j]++;}}}for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cout << a[i][j] << " ";}cout << endl;}}return 0;
}
D. Powerful Ksenia
题意: 给定一个数组,每次可以选择3个元素,然后把这3个元素的值,都以他们的异或值代替。问是否能够通过n次操作使得整个数组变成同一个数字
题解: 我们知道如果a,b,b异或,那么3个数字都会变成a,因此我们需要尽可能地构造出这样的情况,使得数组变为2个相同,一个不相同,即aabbccddeefff,这样我们就可以从eef开始往前替代,最后全部都变为f。这样的操作次数最多为n-1次。那么什么时候无解呢?我们知道偶数最后会留下一个小尾巴,因此如果最后一个小尾巴和前面异或得到的数字不同,那么就是no
代码:
#include <bits/stdc++.h>using namespace std;int const N = 2e5 + 10;
typedef long long LL;
typedef pair<int, int> PII;int n, m, T, a[N], b[N];int main() {cin >> n;int ans=0,cnt=0;for (int i = 1; i <= n; ++i){cin >> a[i],ans^=a[i];}if(n%2==0&&ans){puts("NO");return 0;}cnt = n;if(cnt%2==0) cnt-=1;puts("YES");cout<<cnt-2<<endl;for(LL i=1;i<=cnt-2;i+=2) cout<<i<<" "<<i+1<<" "<<i+2<<endl;for(LL i=cnt-2;i>=3;i-=2) cout<<i<<" "<<i-1<<" "<<i-2<<endl;return 0;
}
E. Yurii Can Do Everything
题意: 求一个数组中有多少子串满足: a[l]xora[r]=∑i=l+1r−1a[i]a[l]\ xor\ a[r] = \sum_{i = l+1}^{r - 1}a[i]a[l] xor a[r]=∑i=l+1r−1a[i]
题解: 对于a[l]和a[r],即k1和k2分别为他们最高位的k的位置。那么上述式子必然满足:2max(k1,k2)+1>∑i=l+1r−1a[i]2^{max(k1,k2) + 1} > \sum_{i = l+1}^{r - 1}a[i]2max(k1,k2)+1>∑i=l+1r−1a[i]。而问发现满足这个式子的情况其实很少,平摊下来其实对于当前的位置i,其实只会向后扫描logn次,因此我们可以正向扫描一次,然后反向扫描一次即可,每次扫描的时候需要判断下重
代码:
#include <bits/stdc++.h>using namespace std;int const N = 2e5 + 10;
typedef long long LL;
typedef pair<int, int> PII;int n, m, T, a[N];
set<PII> mp;
int res = 0;void solve(bool op) {for(int i=1;i+2<=n;i++) {LL s=a[i+1];int k=0;for(int j=0;j<=29;j++) if(a[i]>>j&1) k=j;for (int j = i + 2; j <= n; ++j) {if (s == (a[i] ^ a[j])) {if (!op) mp.insert({n-j+1,n-i+1}), res++;else if (!mp.count({i,j})) res++;}s += a[j];if(s>=(1<<k+1)) break;}}
}int main() {cin >> n;for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);solve(0);reverse(a + 1, a + 1 + n);solve(1);cout << res << endl;return 0;
}
F. Olha and Igor
题意: 交互题,不写了
题解:
代码:
Codeforces Round #682 (Div. 2)相关推荐
- Codeforces Round #682 (Div. 2)D Powerful Ksenia ///思维
cf地址 题目大意:Ksenia has an array a consisting of n positive integers a1,a2,-,an. In one operation she c ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...
最新文章
- 1-flutter 安装步骤
- html css 极简模板,极简主义作品展示HTML模板
- brackets如何自动生成html,Brackets编辑器怎样自动格式化HTML代..._网络编辑_帮考网...
- 【安全系类之设计】应用安全相关
- python 内置方法 BUILT-IN METHODS
- 单独编译使用WebRTC的音频处理模块 - android
- HDU2022 海选女主角【入门】
- linux系统 设置网卡ping通主机连上外网
- 数据结构--二叉搜索树
- ztree 使用教程
- 【老生谈算法】matlab实现Retinex算法视频增强——Retinex算法
- 7大排序时间复杂度对比、以及优化
- Mstar 光机遥控器适配
- 创新BMW X7 与你一路前行
- ECCV2022细粒度图像检索SEMICON学习记录
- 土星环年龄很轻?卡西尼号探测船坠毁前传送珍贵数据
- 三十七、缓存注解@Cacheable、@CacheEvict、@CachePut详解
- IE浏览器JSON未定义
- uniapp手机验证码功能实现
- 渗透测试入门19之渗透测试工具2
热门文章
- 华为p20pro关闭HTML查看,华为p20如何调出息屏时钟 每天定时开启灭屏显示功能
- 3D打印机模型设备设计 毕业设计(论文)开题报告
- MathEmatics11.3下开发第二讲之:加载wrl模型源码详解
- 2018山东计算机录取分数,【分数线】2018山东省公费师范生分数线汇总
- 阜阳计算机学校招生,阜阳计算机学校2021年招生简介
- 提前还贷 别忘退税退保
- Ubuntu新装系统必装软件
- uniapp、hbuilderx做微信小程序,获取当前城市定位(省份国家街道等)
- 用pycharm写python_在PyCharm中使用VPython
- 香港汇丰取消个人账户最低存款要求及月费