比赛链接: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)的更多相关文章

  1. Codeforces Round #653 (Div. 3) E1. Reading Books (easy version) (贪心,模拟)

    题意:有\(n\)本书,A和B都至少要从喜欢的书里面读\(k\)本书,如果一本书两人都喜欢的话,那么他们就可以一起读来节省时间,问最少多长时间两人都能够读完\(k\)本书. 题解:我们可以分\(3\) ...

  2. Codeforces Round #653 (Div. 3) D. Zero Remainder Array (数学,模拟)

    题意:有一组数,刚开始时\(x=0\),每次可以让\(x\)++或让某一个元素+=\(x\)后\(x\)++,每个元素只能加一次\(x\),问最少操作多少次使得所有元素能被\(k\)整除. 题解:每个 ...

  3. Codeforces Round #653 (Div. 3) C. Move Brackets

    题意/题解:经典括号匹配题目,不多说了. 代码: int t; int n; string s; int cnt; int main() { ios::sync_with_stdio(false);c ...

  4. Codeforces Round #653 (Div. 3) B. Multiply by 2, divide by 6 (数学)

    题意:有一个数\(n\),每次操作可以使\(n*=2\)或\(n/=6\)(如果能被整除),求最少操作次数使得\(n=1\),如果不满足,输出\(-1\). 题解:我们只要看\(n\)的质因子即可,如 ...

  5. Codeforces Round #653 (Div. 3) A. Required Remainder (数学)

    题意:有三个正整数\(x,y,n\),再\(1\)~\(n\)中找一个最大的数\(k\),使得\(k\ mod\ x=y\). 题解:先记\(tmp=n/x\),再判断\(tmp*x+y\)的值是否大 ...

  6. 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 ...

  7. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  8. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  9. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

随机推荐

  1. keycloak集群化的思考

    目录 简介 keycloak中的集群 load balancing负载均衡 暴露客户端IP地址 sticky sessions 和 非sticky sessions shared databases ...

  2. Java向指定Excel写入读取数据

    今天在开发中遇到用户列表导入导出的功能实现,这里了解到使用POI函数库可以完成此任务!特此记录一下 POI Apache POI是Apache软件基金会开放的源码函数库,POI提供API给Java程序 ...

  3. maven依赖与传递性依赖

    目录 依赖范围 传递性依赖 依赖调节 可选依赖 本文主要是针对<maven实战>书中关键知识点的学习记录,未免有纰漏或描述不到之处,建议购买阅读原书 首先贴出一个pom常见的一些元素释义 ...

  4. 【Linux】if中的逻辑运算符怎么在linux的帮助中看到

    今天在写shell的时候,突然想查看下if相关的一些逻辑运算的,像-f -d之类的这种 于是man if  或者if --help 可是返回的信息却都无济于事,一点帮助都没有 回想一下,if中调的判断 ...

  5. 【IMP】IMP导入表的时候,如果表存在怎么办

    在imp导入的时候,如果表存在的话,会追加数据在表中, 所以如果不想追加在表中的话,需要将想导入的表truncate掉后,在imp SQL: truncate table TEST1; imp tes ...

  6. SpringBoot Logback无法获取配置中心属性

    SpringBoot Logback无法获取配置中心属性 前言 最近在做项目中,需要把项目中的日志信息通过RabbitMQ将规定格式的消息发送到消息队列中,然后ELK系统通过消息队列拿日志并且保存起来 ...

  7. leetcode 1240. 铺瓷砖(回溯,DFS)

    题目链接 https://leetcode-cn.com/problems/tiling-a-rectangle-with-the-fewest-squares/ 题意: 用尽可能少的正方形瓷砖来铺地 ...

  8. CS远控

    Cobaltstrike 一.基础使用 ./teamserver 192.168.43.224 123456 启动服务器端 在windows下的链接 双击bat文件即可 在linux下 ./start ...

  9. 【老孟Flutter】如何提高Flutter应用程序的性能

    首先 Flutter 是一个非常高性能的框架,因此大多时候不需要开发者做出特殊的处理,只需要避免常见的性能问题即可获得高性能的应用程序. 重建最小化原则 在调用 setState() 方法重建组件时, ...

  10. Hadoop 专栏 - MapReduce 入门

    MapReduce的基本思想 先举一个简单的例子: 打个比方我们有三个人斗地主, 要数数牌够不够, 一种最简单的方法可以找一个人数数是不是有54张(传统单机计算); 还可以三个人各分一摞牌数各自的(M ...