Codeforces Round #653 (Div. 3)
比赛链接:https://codeforces.com/contest/1374
A. Required Remainder
题意
给出 $x, y, n$,找到最大的整数 $0 \le k \le n$,使得 $k\ mod\ x = y$ 。
题解
$k = mx + y$,求得满足条件最大的 $m$ 即可。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
int x, y, n; cin >> x >> y >> n;
int m = n / x;
cout << (m * x + y > n ? (m - 1) * x + y : m * x + y) << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}
B. Multiply by 2, divide by 6
题意
给出一个整数 $n$,每次可以选择乘以 $2$ 或 除以 $6$(如果 $n$ 被 $6$ 整除的话),问 $n$ 最终能否变为 $1$ 以及最少的操作次数。
题解
如果 $n$ 有除 $2,3$ 外的素因子或 $cnt_2 > cnt_3$ 则无解,否则乘以 $cnt_3 - cnt_2$ 个 $2$ 再除以 $cnt_3$ 个 $6$ 即可。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
int n; cin >> n;
int cnt_3 = 0, cnt_2 = 0;
while (n % 3 == 0) n /= 3, ++cnt_3;
while (n % 2 == 0) n /= 2, ++cnt_2;
cout << (n != 1 or cnt_2 > cnt_3 ? -1 : (cnt_3 - cnt_2) + cnt_3) << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}
C. Move Brackets
题意
给出一个长度为偶数 $n$ 的括号序列,序列含有 $\frac{n}{2}$ 个左括号和右括号,每次操作可以把一个括号移至序列首部或尾部,问使得序列合法的最少操作次数。
题解
计算不能被闭合的右括号的个数即可。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
int n; cin >> n;
string s; cin >> s;
int l = 0, r = 0;
for (char c : s) {
if (c == '(') ++l;
else if (l) --l;
else ++r;
}
cout << r << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}
D. Zero Remainder Array
题意
给出一个大小为 $n$ 的数组 $a$,初始时 $x = 0$,每次可以选择一种操作:
- $a_i := a_i + x, x:=x+1$
- $x:=x+1$
一个 $a_i$ 只能操作一次,问使得数组 $a$ 中的每个数都被 $k$ 整除至少要操作多少次。
题解
记录每个不被 $k$ 整除的 $a_i$ 需要补上的余数,不同次数取较大次数,相同次数取较大模数。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
int n, k; cin >> n >> k;
map<int, int> cnt;
int mx = 0, mx_mod = 0;
for (int i = 0; i < n; i++) {
int x; cin >> x;
if (x % k) {
int t = k - x % k;
++cnt[t];
if (cnt[t] > mx) {
mx = cnt[t];
mx_mod = t;
} else if (cnt[t] == mx) {
mx_mod = max(mx_mod, t);
}
}
}
cout << max(0LL, (mx - 1LL) * k + mx_mod + 1) << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}
E1. Reading Books (easy version)
题意
给出 $n$ 本书各自的阅读时长和 Alice 和 Bob 的喜好程度,两个人一起读每本书,问能否每个人都读够 $k$ 本自己喜欢的书以及需要花费的最少时间。
题解
记录二者独自和共同喜好的书,之后取分别阅读二者各自喜欢的书和一起阅读都喜欢的书所用时间的前 $k$ 小即可。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k; cin >> n >> k;
vector<int> Alice, Bob, Both;
for (int i = 0; i < n; i++) {
int t, a, b; cin >> t >> a >> b;
if (a and !b) Alice.push_back(t);
if (!a and b) Bob.push_back(t);
if (a and b) Both.push_back(t);
}
sort(Alice.begin(), Alice.end());
sort(Bob.begin(), Bob.end());
for (int i = 0; i < min(Alice.size(), Bob.size()); i++) {
Both.push_back(Alice[i] + Bob[i]);
}
sort(Both.begin(), Both.end());
cout << (Both.size() < k ? -1 : accumulate(Both.begin(), Both.begin() + k, 0LL));
}
Codeforces Round #653 (Div. 3)的更多相关文章
- Codeforces Round #653 (Div. 3) E1. Reading Books (easy version) (贪心,模拟)
题意:有\(n\)本书,A和B都至少要从喜欢的书里面读\(k\)本书,如果一本书两人都喜欢的话,那么他们就可以一起读来节省时间,问最少多长时间两人都能够读完\(k\)本书. 题解:我们可以分\(3\) ...
- Codeforces Round #653 (Div. 3) D. Zero Remainder Array (数学,模拟)
题意:有一组数,刚开始时\(x=0\),每次可以让\(x\)++或让某一个元素+=\(x\)后\(x\)++,每个元素只能加一次\(x\),问最少操作多少次使得所有元素能被\(k\)整除. 题解:每个 ...
- Codeforces Round #653 (Div. 3) C. Move Brackets
题意/题解:经典括号匹配题目,不多说了. 代码: int t; int n; string s; int cnt; int main() { ios::sync_with_stdio(false);c ...
- Codeforces Round #653 (Div. 3) B. Multiply by 2, divide by 6 (数学)
题意:有一个数\(n\),每次操作可以使\(n*=2\)或\(n/=6\)(如果能被整除),求最少操作次数使得\(n=1\),如果不满足,输出\(-1\). 题解:我们只要看\(n\)的质因子即可,如 ...
- Codeforces Round #653 (Div. 3) A. Required Remainder (数学)
题意:有三个正整数\(x,y,n\),再\(1\)~\(n\)中找一个最大的数\(k\),使得\(k\ mod\ x=y\). 题解:先记\(tmp=n/x\),再判断\(tmp*x+y\)的值是否大 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
随机推荐
- PC个人隐私保护小方法
前言 近期爆出了腾讯读取用户浏览器浏览记录的消息.话不过说直接上图,懂的自然懂. 网上也有详细的分析文章,不管它读取后用来做什么,在你不知情的情况下读取了你的浏览器浏览记录,你说气不气. 虽然在整体大 ...
- 【ORA】ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode 这个问题是rman备份的时候,发现有问题 原因: 数据库没有开启归档 ...
- 【Oracle】修改oracle中SGA区的大小
1.备份数据库: 2.关机,拔下电源和各种连接线,抽出机箱,打开机箱上盖,增加内存: 3.完成后按原样将各个部件及连接线恢复好,电开机,系统正常运行: 4.进入系统查看,发现内存已经顺利安装: 5.修 ...
- 【VNC】vnc远程连接的时候无法显示图像已解决
介绍一个 VNC连接工具:iis7服务器管理工具 IIs7服务器管理工具可以批量连接并管理VNC服务器 作为服务器集成管理器,它最优秀的功能就是批量管理windows与linux系统服务器.vps.能 ...
- 大文件上传FTP
需求 将本地大文件通过浏览器上传到FTP服务器. 原有方法 将本地文件整个上传到浏览器,然后发送到node服务器,最后由node发送到FTP服务器. 存在问题 浏览器缓存有限且上传速率受网速影响,当文 ...
- disfunc绕过
绕过DisFunc的常见小技巧 解析webshell命令不能执行时的三大情况 一是 php.ini 中用 disable_functions 指示器禁用了 system().exec() 等等这类命令 ...
- service自动发现,yaml文件管理内外部端口访问
service服务发现 [root@k8s-master ~]# vim busybox-5d4f595646-dzjv4.yaml apiVersion: v1 kind: Pod metadata ...
- 开发中经常使用到的Xcode快捷键
工欲善其事必先利其器. 有了这些快捷键加持,你写代码不仅很6而且还很好看. 这些快捷键都是平时使用频率非常高的,今天整理出来分享给大家了. 左缩进:Cmd + [ 右缩进:Cmd + ] 代码格式化/ ...
- 2.4V升5V芯片,8uA功耗,低功耗升压电路图
2.4V升5V,可用于USB拔插充电,也可以用于把两节镍氢电池2.4V升压到5V,的固定输出稳压电压值,同时输出电流可达1A,0.5A等 首先是先说下0.5A的这款的话,是比较低功耗的,8uA左右的输 ...
- 知识图谱KnowledgeGraph核心技术培训班 2月03日— 2月06日