Codeforces Round #742 (Div. 2) 个人题解
A. Domino Disaster
2分钟签到
#include <bits/stdc++.h>
#define fors(i, a, b) for(int i = (a); i <= (b); ++i)
#define lson k<<1
#define rson k<<1|1
#define pb push_back
#define lowbit(x) ((x)&(-(x)))
#define mem(a) memset(a, 0, sizeof(a))
#define DDLC_ESCAPE_PLAN_FAILED ios::sync_with_stdio(false), cin.tie(0)
#define int long long
const int inf = 0x3f3f3f3f;
const double dinf = 1e100;
typedef long long ll;
//const ll linf = 9223372036854775807LL;
// const ll linf = 1e18;
using namespace std;signed main()
{DDLC_ESCAPE_PLAN_FAILED;int t;cin >> t;while(t--){int n;cin >> n;string s;cin >> s;for(auto x : s){if(x == 'U') cout << 'D';else if(x == 'D') cout << 'U';else cout << x;}cout << endl;}return 0;
}
B. MEXor Mixup
题意
现在有一个未定数组,它的MexMexMex是aaa, 它所有元素的异或和是bbb,问这个数组最少有几个元素。(0<a≤3e5,0≤b≤5e4)(0<a\leq 3e5,0\leq b\leq 5e4)(0<a≤3e5,0≤b≤5e4).
分析
由于Mex=aMex=aMex=a,故[0,a−1][0,a-1][0,a−1]必定出现。
讨论特殊情况:当a=1,b=0a=1,b=0a=1,b=0,这个数组是{0}\{0\}{0},共一个元素。也就是说若异或和就是bbb,那一共就是aaa个元素。
其余的情况,首先我们对[0,a−1][0,a-1 ][0,a−1]做异或和,得出来一个数xxx。此时我们可以再取一个数yyy,使得x⨁y=bx\bigoplus y = bx⨁y=b. 但是要注意,这个yyy可能就是aaa. 根据异或的性质——x⨁y=z⇔x⨁z=yx\bigoplus y = z \Harr x \bigoplus z = yx⨁y=z⇔x⨁z=y.
故我们可以求出y=x⨁by=x\bigoplus by=x⨁b. 如果求出来的 yyy 和 aaa 不相等,那么我们的数组就是[0,a−1][0,a-1][0,a−1]加上 yyy,共 a+1a + 1a+1 个元素;如果y==ay==ay==a,那么我们不可以直接给数组加上aaa,但一定可以通过另外两个不等于aaa的数作异或得到aaa,故数组共a+2a+2a+2个元素。
由于题目数据限制,每次直接算异或和会超时,记得预处理前缀和。
代码
#include <bits/stdc++.h>
#define fors(i, a, b) for(int i = (a); i <= (b); ++i)
#define lson k<<1
#define rson k<<1|1
#define pb push_back
#define lowbit(x) ((x)&(-(x)))
#define mem(a) memset(a, 0, sizeof(a))
#define DDLC_ESCAPE_PLAN_FAILED ios::sync_with_stdio(false), cin.tie(0)
#define int long long
const int inf = 0x3f3f3f3f;
const double dinf = 1e100;
typedef long long ll;
//const ll linf = 9223372036854775807LL;
// const ll linf = 1e18;
using namespace std;
const int maxn = 3e5 + 10;
int pre[maxn];
signed main()
{DDLC_ESCAPE_PLAN_FAILED;int t;cin >> t;pre[0] = 0;fors(i, 1, maxn - 1) pre[i] = (pre[i - 1] ^ i);while(t--){int a, b;cin >> a >> b;if(a == 1 && b == 0){cout << 1 << endl;}else{int sum = pre[a - 1];if(sum == b) cout << a << endl;else if((sum ^ a) == b) cout << a + 2 << endl;else cout << a + 1 << endl;}}return 0;
}
C. Carring Condrum
题意
作有着错误进位方式的竖式运算,每次遇到进位都会进两位而不是进一位。例如1+91+91+9,进位得到的1会放在百位而不是十位。
现在给出一个数nnn,问有多少对有序数对(a,b)(a,b)(a,b),0<a,b<n0<a,b<n0<a,b<n,在经过这种错误运算方式之后会得到nnn.
分析
因为每次都进两位,故奇数位和偶数位之间互相不影响,可以把它们分开来看。
例如,2021这个数,我们可以拆成22和1.
其中,加和得到22的有序数对共23对(aaa从000到222222),加和得到1的有序数对共2对。把这奇偶的方法合并,那么总共有23×2=4623×2=4623×2=46个数对。
但是,由于2021这个数不能拆成(0,2021)(0,2021)(0,2021)和(2021,0)(2021,0)(2021,0),所以要减去2个,最终答案是44.
所以,若拆分后奇数位数字是xxx,偶数位的是yyy,答案显然是(x+1)(y+1)−2(x+1)(y+1)-2(x+1)(y+1)−2.
代码
#include <bits/stdc++.h>
#define fors(i, a, b) for(int i = (a); i <= (b); ++i)
#define lson k<<1
#define rson k<<1|1
#define pb push_back
#define lowbit(x) ((x)&(-(x)))
#define mem(a) memset(a, 0, sizeof(a))
#define DDLC_ESCAPE_PLAN_FAILED ios::sync_with_stdio(false), cin.tie(0)
#define int long long
const int inf = 0x3f3f3f3f;
const double dinf = 1e100;
typedef long long ll;
//const ll linf = 9223372036854775807LL;
// const ll linf = 1e18;
using namespace std;
const int maxn = 3e5 + 10;
int pre[maxn];
signed main()
{DDLC_ESCAPE_PLAN_FAILED;int t;cin >> t;while(t--){string s;cin >> s;int a = 0, b = 0;for(int i = 0; i < s.size(); ++i){if(i & 1) a = a * 10 + s[i] - '0';else b = b * 10 + s[i] - '0';}a++, b++;cout << a * b - 2 << endl;}return 0;
}
Codeforces Round #742 (Div. 2) 个人题解相关推荐
- Codeforces Round #742 (Div. 2) F. One-Four Overload 构造 + 二分图染色
传送门 文章目录 题意: 思路: 题意: 给你一个n∗mn*mn∗m的矩形,包含...和XXX,你有两种颜色,你需要给...染色使得每个XXX上下左右相邻的...其两种颜色个数相同,输出一种合法方案. ...
- Codeforces Round #686 (Div. 3) A-F题解
Codeforces Round #686 (Div. 3) A-F题解 A. Special Permutation 题意 给定 nnn ,输出一个长度为 nnn 的全排列,每个位置 iii 上的数 ...
- Codeforces Round #693 (Div. 3)部分题解
Codeforces Round #693 (Div. 3) 部分题解 D. Even-Odd Game 思路: 贪心:田忌赛马 (1)先将数组从大到小排序,取数时从大到小取,用一个ans变量记录取数 ...
- Codeforces Round #702 (Div. 3)A-G题解
Codeforces Round #702 (Div. 3)A-G题解 比赛链接:https://codeforces.ml/contest/1490 这场F读错题意白给一发,G二分的if(dp[mi ...
- codeforces Round #645 (Div. 2)D题解
Codeforces Round #645 (Div. 2)--D题解 作为一名菜鸡,理所当然得没有A出来,这道题数据放小就一水题了,可惜数据这块卡的死死的. 本题最重要的一点就是你要推出来一个结论: ...
- Codeforces Round #670 (Div. 2)A-D题解
Codeforces Round #670 (Div. 2)A-D题解 //写于rating值1987/2184 //补档 比赛链接:https://codeforces.ml/contest/140 ...
- Codeforces Round #674 (Div. 3)A-F题解
Codeforces Round #674 (Div. 3)A-F题解 比赛链接:https://codeforces.com/contest/1426 A题 水题不写题解 #include<b ...
- Codeforces Round #742 (Div. 2) B、C 题解
Codeforces Round 742 B. MEXor Mixup 题意 有一个数组,输入两个数a,b,a代表这个数组之外的最小非负整数,b代表这个数组的异或值,问你该数组的最小长度. 思路 首先 ...
- Codeforces Round #807 (Div. 2) A-C题解
Codeforces Round #807 (Div. 2) A.B.C题题解 A - Mark the Photographer 题意:马克要给2n个人照相,分两排,一排站n人,给出每个人的身高,要 ...
最新文章
- Site Group Level Price Maintenance in IS Retail
- 2016阅读总结——我的问题就是读书太少
- PHPExcel进行获取列字母
- 猴子排圈求最后编号问题
- 内涝预测过程的噪音_第七章噪声解析
- 4 初学入门_2020年最新版,如何挑选入门级,进阶级和专业级网球拍(12月更新)...
- 【NOI2019模拟2019.7.4】朝夕相处 (动态规划+BM)
- Python 5 运算符
- 取号机排队取号服务算法(数据结构 队列(Queue))
- easyexcel自定义拦截器,实现自定义单元格样式
- 三相并网逆变器模型预测容错控制-三相四开关TPFS
- python 柱状图折线图共用一个图例_Python数据可视化–折线图–柱状图
- 51单片机流水灯现象1
- 基本类型和包装类型的区别详解
- 华为服务器查询IPMI地址
- 关于经典蓝牙和低功耗蓝牙的区别
- 关于富文本kindeditor中上传本地图片成功后获取到的图片路径是相对路径修改为绝对路径...
- [Other T]我Web上的咚咚~
- ddmmyy日期格式是多少_英语中关于年月日以及数字
- 表情识别/情绪识别:ExpW表情数据集
热门文章
- 2 年前端面试字节跳动、YY、虎牙、BIGO心路历程总结
- 新导智能:智慧养老解决方案_智能养老系统_养老院解决方案
- 阿里云WAF背后的AI智能防御体系
- 深度学习浅析,以及又拍云图片鉴别的实践进阶
- soap 版本可能不匹配: 出现意外的 envelope 命名空间_10M/S!百度网盘偷偷更新,终于实现免费不限速了!...
- 提高软件测试效率的方法探讨
- linux大容量硬盘 克隆到小硬盘_磁盘大小不一样,也能快速实现大磁盘克隆到小磁盘!...
- 有人负责,才有质量:写给集市中的下一代—读后感
- JSON格式化有问题,Jackson替换JSON格式化处理
- 文献管理软件Zotero的安装和使用