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连试试水的深浅..... ...
随机推荐
- 十八般武艺玩转GaussDB(DWS)性能调优:路径干预
摘要:路径生成是表关联方式确定的主要阶段,本文介绍了几个影响路径生成的要素:cost_param, scan方式,join方式,stream方式,并从原理上分析如何干预路径的生成. 一.cost模型选 ...
- swoole中websoket创建在线聊天室(php)
swoole中websoket创建在线聊天室(php) swoole现仅支持Linix,macos 创建websocket服务器 首先现在服务器创建一个websocket服务器 <?php // ...
- HBASE Shell基本命令
定义 HBASE是一种分布式.可扩展.支持海量数据存储的NoSQL数据库. HBASE数据模型 逻辑上,HBASE的数据模型同关系型数据库类似,数据存储到一张表中,有行有列,但是从HBASE的底层物理 ...
- 行业动态 | 利用Cassandra数据库揭开家族祖先的秘密
FamilySearch选择了基于Apache Cassandra的DataStax Enterprise (DSE)来加速用户增长,并通过更快的反应时间.高可用性以及零数据库宕机来提供强大的 ...
- (十六)re模块
正则表达式并不是Python的一部分,本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言.正则表达式是用于处理字符串的强大工具,很多编程语言都支持正则表达式的语法. 字符匹配分为普通字 ...
- CentOS6.8安装及各种坑
实现目的:用U盘安装CentOS 6.2 32位系统 所需工具: 一.UltraISO(用来制作U盘启动) 下载地址:http://www.newhua.com/soft/614.htm 二.Cent ...
- Linux下安装配置rocketmq (单个Master、双Master)
一.环境: centos7(2台虚拟机):192.168.64.123:192.168.64.125 apache-maven-3.2.5(官网要求maven版本是3.2.x,版本不同,编译rocke ...
- Nginx基础环境搭建
1.下载docker toolbox https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 2.选择好安装目录 一路nex ...
- 【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
问题定义 使用Azure应用服务(App Service),部署Java应用,使用Tomcat容器,如何自定义错误页面呢?同时禁用DELETE, PUT方法 解决办法 如何自定义错误页面呢?需要在 J ...
- 单台服务器-利用docker搭建Redis哨兵集群模式
前言:只有一台华为云服务器,所以打算创建三个容器来模拟三个服务器了. 一:拉取redis镜像 二:拉取redis.conf文件 放在自定义的目录下:wget -c http://download.re ...