Codeforces Round #733 (Div. 1 + Div. 2)
比赛链接:Here
1530A. Binary Decimal
现在规定一种只由0和1组成的数字,我们称这种数字为二进制数字,例如10,1010111,给定一个数n,求该数字最少由多少个二进制数字组成.
水题,
每取一个二进制数字,可以使得原数字n上各位都减小1或者0,为了使次数尽可能地小,那么当原数字n上各位不为0的时候都应该-1,那么最小的次数就是各位上最大的数字
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
string s; cin >> s;
int cnt = s[0] - '0';
for (int i = 1; i < s.size(); ++i)cnt = max(s[i] - '0', cnt);
cout << cnt << "\n";
}
}
1530B. Putting Plates
给定一个高为h,宽为w的网格,你可以在网格的四个边缘处,放置一个盘子,每个盘子的四周都不能有别的盘子(四周指的是最近的8个格子),请输出一个种安排方式.
构造模拟题,首先为了使个数尽可能多,那么一定是从第一个开始放置,然后检测后面是否合法,如果合法就放下盘子,如果不合法就跳过.
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n, m;
cin >> n >> m;
vector<std::string> s(n, string(m, '0'));
for (int i = 0; i < m; i += 2) {
s[0][i] = '1';
}
for (int i = 1; i < n; i++) {
if (s[i - 1][m - 1] != '1' && s[i - 1][m - 2] != '1') {
s[i][m - 1] = '1';
}
}
for (int i = m - 2; i >= 0; i--) {
if (s[n - 1][i + 1] != '1' && s[n - 2][i + 1] != '1') {
s[n - 1][i] = '1';
}
}
for (int i = n - 2; i > 1; i--) {
if (s[i + 1][0] != '1' && s[i + 1][1] != '1') {
s[i][0] = '1';
}
}
for (int i = 0; i < n; i++) {
cout << s[i] << "\n";
}
}
}
1530C. Pursuit
二分,
给t组样例
每组样例给n个数
a[1] , a[2] , a[3] ...... a[n]
b[1] , b[2] , b[3] ...... b[n]
数据保证(0 <= a[i] , b[i] <= 100 , t组样例n的总和小于1e5)
a[i]表示第一个人在i这个阶段的分数
b[i]表示第二个人在i这个阶段的分数
现在只给了n个阶段每个人的分数
后面若干个阶段的分数值0到100之间都有可能
现在定义一个人在i这个阶段的得分为
从i个分数中取出 i - i / 4 个最大的分数相加即为
在i阶段的分数
问在n这个阶段是否第一个人的得分大于第二个人的得分
如果可以输出0
如果不行输出最少加几个阶段
使得第一个人的得分大于等于第二个人的得分
const int N = 1e6 + 10;
int a[N], b[N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n;
cin >> n;
for (int i = 1; i <= n; ++i)cin >> a[i];
for (int i = 1; i <= n; ++i)cin >> b[i];
sort(a + 1, a + 1 + n);
sort(b + 1, b + 1 + n);
auto check = [&](int k) {
int m = n + k, rm = m - m / 4;
int A = 0, B = 0;
for (int i = 1; i <= k; ++i) a[n + i] = 100;
for (int i = m; i > m - rm; --i)A += a[i];
for (int i = n; i > max(0, n - rm); --i)B += b[i];
return A >= B;
};
if (check(0))cout << "0\n";
else {
int l = 0, r = n;
while (r - l > 1) {
ll mid = (l + r) >> 1;
if (check(mid))r = mid;
else l = mid;
}
cout << r << "\n";
}
}
}
当然既然要让a的分数要大于等于b的分数
那么a[n+1] , a[n+2] , a[n+3] ......都应该是100
b[n+1] , b[n+2] , b[n+3] ....... 都应该是0
所以从大到小排序之后 用前缀和优化到 \(\mathcal{O}(n)\) 也是可以做的
1530D. Secret Santa
图论,
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// jiangly TQL
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n;
cin >> n;
int ans = 0;
vector<int> a(n), b(n, -1), c(n, -1);
for (int i = 0; i < n; i++) {
cin >> a[i];
a[i]--;
if (c[a[i]] < 0) {
b[i] = a[i];
c[a[i]] = i;
ans++;
}
}
vector<int> u, v;
for (int i = 0; i < n; i++) {
if (c[i] >= 0) continue;
int j = i;
while (b[j] >= 0) j = b[j];
u.push_back(i);
v.push_back(j);
}
if (!u.empty()) {
if (u.size() > 1 || u[0] != v[0]) {
for (int i = 0; i < int(u.size()); i++)
b[v[i]] = u[(i + 1) % u.size()];
} else {
int x = u[0];
int y = a[x];
b[x] = y;
b[c[y]] = x;
}
}
cout << ans << "\n";
for (int i = 0; i < n; i++)
cout << b[i] + 1 << " \n"[i == n - 1];
}
}
Codeforces Round #733 (Div. 1 + Div. 2)的更多相关文章
- Educational Codeforces Round 37 (Rated for Div. 2)C. Swap Adjacent Elements (思维,前缀和)
Educational Codeforces Round 37 (Rated for Div. 2)C. Swap Adjacent Elements time limit per test 1 se ...
- Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)
这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...
- [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和)
[Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和) E. Permuta ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- Educational Codeforces Round 59 (Rated for Div. 2) DE题解
Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...
- Educational Codeforces Round 58 (Rated for Div. 2) 题解
Educational Codeforces Round 58 (Rated for Div. 2) 题目总链接:https://codeforces.com/contest/1101 A. Min ...
- Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest
Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest(dp+线段树) 题目链接 题意: 给定3个人互不相同的多个数字,可以 ...
随机推荐
- 聊聊分布式 SQL 数据库Doris(六)
负载均衡 此处的负载均衡指的是FE层的负载均衡. 当部署多个 FE 节点时,用户可以在多个 FE 之上部署负载均衡层来实现 Doris 的高可用.官方文档描述: 负载均衡 . 实现方式 实现方式有多种 ...
- 洛谷P2579 [ZJOI2005]沼泽鳄鱼(矩阵快速幂,周期)
例题:现在豆豆已经选好了两座石墩Start和End,他想从Start出发,经过K个单位时间后恰好站在石墩End上.假设石墩可以重复经过(包括Start和End),他想请你帮忙算算,这样的路线共有多少种 ...
- MySQL8.0 安装教程
一.下载 1.官网地址 MySQL :: Download MySQL Community Server 2.选择安装包安装方式 3.选择安装版本 4.开始下载 5.下载成功 二.安装 1.双击安装包 ...
- Cplex学术版申请及Python API环境配置
当使用Cplex时弹出下面错误: CPLEX Error 1016: Community Edition. Problem size limits exceeded. Purchase at http ...
- Java使用线程池和缓存提高接口QPS
1.什么是QPS? QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒可以相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标 ...
- 2023 年最后一波工具安利「GitHub 热点速览」
2023 年还有两周就要接近尾声了,2023 年的热点速览还有一波工具好安利:比如上周推荐之后上了热榜的远程调试工具 page-spy-web,让调试像呼吸一般自然方便:还有轻量级的搜索引擎 oram ...
- 为什么许多数字孪生产品开始了GIS融合的尝试?
随着数字孪生技术的发展,越来越多的产品意识到要实现数字孪生的最大价值,需要考虑多个维度的数据,包括空间信息.地理位置.环境条件等.因此,许多数字孪生产品开始了与GIS系统的融合尝试,以进一步提升其功能 ...
- 文件不落地上线sliver
接着二开sliver,给他添加一个生成powershell payload上线的功能,生成并复制到剪切板. 准备 首先,先开启监听,不多说直接mtls默认的就行,sliver可以生成配置文件来实现 ...
- MS17-010(永恒之蓝)漏洞分析与复现
一.漏洞简介1.永恒之蓝介绍:永恒之蓝漏洞(MS17-010),它的爆发源于 WannaCry 勒索病毒的诞生,该病毒是不法分子利用NSA(National Security Agency,美国国家安 ...
- CSS3学习笔记-文字特效
CSS3中提供了许多有趣和实用的文字特效,可以让我们的文本内容更加生动有趣,下面介绍一些常用的文字特效. 文本阴影 使用text-shadow属性可以为文本添加阴影效果,语法如下: text-shad ...