比赛链接: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. [从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier

    [从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 0x00 摘要 0x01 ...

  2. 微信扫码支付Native方式二以及支付回调

    官方API文档https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 1.使用jar包 1 <!--微信支付 --> 2 ...

  3. Head First 设计模式 —— 10. 迭代器 (Iterator) 模式

    思考题 public void printMenu() { PancakeHouseMenu pancakeHouseMenu = new PancakeHouseMenu(); ArrayList ...

  4. readhat6.5下安装weblogic10.3.6

    转载自:http://www.mianhuage.com/752.html 1.安装前准备 1.1.准备安装包generic.jar1.2.创建weblogic用户及用户组创建组命令:groupadd ...

  5. LeetCode1337矩阵中最弱的K行

    题目 给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示. 请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序. 如果第 i 行的军人数量少于第 ...

  6. ubuntu 上搭建 go的开发环境 vscode

    原文链接: https://astaxie.gitbooks.io/build-web-application-with-golang/zh/01.4.html 原本我是在windows下进行go的环 ...

  7. 创建一个简单MyBatis程序

    文章目录 MyBatis基础 MyBatis 简介 创建一个MyBatis程序 1. 创建Java项目 2. 加载MyBatis包 3. 编写POJO类和映射文件 4.创建mybatis-config ...

  8. .NET 云原生架构师训练营(模块二 基础巩固 Scrum 团队)--学习笔记

    2.7.3 Scrum 团队 理想的环境 团队章程 如何组建 Scrum 团队 产品待办事项列表 用户故事 敏捷开发流程 理想的环境 5-9人 100% 跨职能 在一起 自组织 自组织 目标 授权 沟 ...

  9. PAT练习num3-跟奥巴马一起学编程

    美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝"计算机科学教育周"正式启动,奥巴马编写了很简单的计算机 ...

  10. 安装jdk-windows系统

    1. 明确需要安装的jdk版本,注意jdk存在小版本号,例如jdk1.7_51,如果不清楚小版本号的话建议安装最新版本的jdk: 2. 打开cmd命令窗口,输入java -version查看本机是否安 ...