比赛链接:https://codeforces.com/contest/1352

A - Sum of Round Numbers

题意

将一个十进制数的每一个非零位分离出来。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
string s; cin >> s;
int n = s.size();
vector<string> ans;
for (int i = n - 1; i >= 0; i--) {
if (s[i] != '0') {
ans.push_back(s[i] + string(n - 1 - i, '0'));
}
}
cout << ans.size() << "\n";
for (auto i : ans) cout << i << ' ';
cout << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

B - Same Parity Summands

题意

将整数 n 分解为 k 个奇偶性相同的数。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
int n, k; cin >> n >> k;
int n1 = n - (k - 1), n2 = n - (k - 1) * 2;
if (n1 > 0 and n1 % 2 == 1) {
cout << "YES\n";
for (int i = 0; i < k - 1; i++) cout << "1 ";
cout << n1 << "\n";
} else if (n2 > 0 and n2 % 2 == 0) {
cout << "YES\n";
for (int i = 0; i < k - 1; i++) cout << "2 ";
cout << n2 << "\n";
} else {
cout << "NO" << "\n";
}
} int main() {
int t; cin >> t;
while (t--) solve();
}

C - K-th Not Divisible by n

题意

输出第 k 个不能被 n 整除的数。

题解

两个 n 之间有 n - 1 个不能被 n 整除的数,找出 k 中有多少个完整的 n - 1 区间,再对 n - 1 取余即可。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
long long n, k; cin >> n >> k;
if (k % (n - 1) == 0)
cout << k / (n - 1) * n - 1 << "\n";
else
cout << k / (n - 1) * n + k % (n - 1) << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

D - Alice, Bob and Candies

题意

n 堆糖果排成一排,Alice 只能从左边取,Bob 只能从右边取,每次一人取得的糖果数需多于另一人上一次取得的糖果数,问所有糖果取完时二人共取了多少次,以及各自取得的糖果个数。

题解

模拟即可。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
int n; cin >> n;
int a[n] = {}; for (auto &i : a) cin >> i;
int l = 0, r = n - 1;
int ans_l = 0, ans_r = 0;
int pre_l = 0, pre_r = 0;
int i;
for (i = 0; l <= r; i++) {
int sum = 0;
if (i % 2 == 0) {
while (l <= r and sum <= pre_r) {
sum += a[l];
++l;
}
ans_l += sum;
pre_l = sum;
} else {
while (r >= l and sum <= pre_l) {
sum += a[r];
--r;
}
ans_r += sum;
pre_r = sum;
}
}
cout << i << ' ' << ans_l << ' ' << ans_r << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

E - Special Elements

题意

统计数组 a 中有多少元素可以被连续子数组加和求得。

题解

数据范围较小,$O_{(n^2)}$ 枚举即可。

代码

#include <bits/stdc++.h>
using namespace std; const int M = 8100;
int n, a[M], cnt[M]; void solve() {
fill(cnt, cnt + M, 0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i], ++cnt[a[i]];
}
int ans = 0;
for (int i = 0; i < n; i++) {
int sum = a[i];
for (int j = i + 1; j < n; j++) {
sum += a[j];
if (sum < M and cnt[sum]) {
ans += cnt[sum];
cnt[sum] = 0;
}
}
}
cout << ans << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

F - Binary String Reconstruction

题意

构造一个 01 串,要求:

  • 00 的个数为 n0 个
  • 01 的个数为 n1 个
  • 11 的个数为 n2 个

题解

依次构造 11,10,00 即可。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
int n0, n1, n2; cin >> n0 >> n1 >> n2;
vector<int> ans;
if (n1 or n2) ans.push_back(1);
for (int i = 0; i < n2; i++) ans.push_back(1);
for (int i = 0; i < n1 / 2; i++) {
ans.push_back(0);
ans.push_back(1);
}
if (n1 & 1) {
ans.push_back(0);
for (int i = 0; i < n0; i++) ans.push_back(0);
} else {
if (ans.size()) {
ans.pop_back();
for (int i = 0; i < n0; i++) ans.push_back(0);
ans.push_back(1);
} else {
for (int i = 0; i < n0 + 1; i++) ans.push_back(0);
}
}
for (auto i : ans) cout << i;
cout << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

G - Special Permutation

题意

构造数 n 的一个排列,使得相邻两数相差在 [2, 4] 之间。

题解

顺着 3 1 4 2 构造即可。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
int n; cin >> n;
if (n <= 3) {
cout << -1 << "\n";
return;
} else {
for (int i = n - (n % 2 == 0); i >= 5; i -= 2) cout << i << ' ';
cout << "3 1 4 2 ";
for (int i = 6; i <= n - (n % 2 == 1); i += 2) cout << i << ' ';
cout << "\n";
}
} int main() {
int t; cin >> t;
while (t--) solve();
}

Codeforces Round #640 (Div. 4)的更多相关文章

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

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

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

  3. Codeforces Round #368 (Div. 2)

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

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

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

  5. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  6. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  7. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  8. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  9. Codeforces Round #268 (Div. 2) ABCD

    CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...

随机推荐

  1. AndroidStuidio安装

    前言 端午小长假,安卓入门走起 正文 下载AndroidStudio 这里给出google的官网 https://developer.android.com/studio 注意,因404原因,如果你无 ...

  2. CentOS 6安装Gitlab

    1. 保证CentOS 6能连接网络 . 2.安装依赖: sudo yum install -y curl policycoreutils-python openssh-server cronie s ...

  3. 号称能将STW干掉1ms的Java垃圾收集器ZGC到底是个什么东西?

    ZGC介绍 ZGC(The Z Garbage Collector)是JDK 11中推出的一款追求极致低延迟的实验性质的垃圾收集器,它曾经设计目标包括: 停顿时间不超过10ms: 停顿时间不会随着堆的 ...

  4. NAS基础知识

    一.什么是NAS 1.NAS的定义 NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为"网络存储器&qu ...

  5. leetcode 1593. 拆分字符串使唯一子字符串的数目最大(DFS,剪枝)

    题目链接 leetcode 1593. 拆分字符串使唯一子字符串的数目最大 题意: 给你一个字符串 s ,请你拆分该字符串,并返回拆分后唯一子字符串的最大数目. 字符串 s 拆分后可以得到若干 非空子 ...

  6. 处理Promise.reject()

    一般处理Promise.reject()都是catch住错误,然后进行错误处理,一般都是再次发起请求或者直接打印. 直接打印的情况用console.error()就可以了,而再次发起请求呢? 最好是先 ...

  7. pycharm工具的使用

    一.Pycharm常用快捷键 快捷键 作用 备注  ctrl + win + 空格  自动提示并导包  连按两次  ctrl + alt + 空格  自动提示并导包  连按两次  Alt + Ente ...

  8. 天天用SpringBoot居然还不知道它的自动装配的原理?

    引言 最近有个读者在面试,面试中被问到了这样一个问题"看你项目中用到了springboot,你说下springboot的自动配置是怎么实现的?"这应该是一个springboot里面 ...

  9. js模仿京东首页的倒计时功能

    模仿京东首页的倒计时 我们学习了定时器,可以用定时器做一个倒计时,于是我模仿了京东首页倒计时. 先看看京东首页的倒计时. 思路: 如何倒计时? 给一个未来的时间.然后计算未来时间到现在的时间戳. 用定 ...

  10. JDK的各个版本

    Java的各个版本 从上图我们看出,Java的版本名最开始以JDK开头,后来以j2se开头,最后到现在以Java开头,所以这些名字我们都可以说,但人们说的更多的是JDK多少,或者Java多少