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

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

  2. Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)

    这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...

  3. [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和)

    [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和) E. Permuta ...

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

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

  6. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  7. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  8. Educational Codeforces Round 59 (Rated for Div. 2) DE题解

    Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...

  9. Educational Codeforces Round 58 (Rated for Div. 2) 题解

    Educational Codeforces Round 58 (Rated for Div. 2)  题目总链接:https://codeforces.com/contest/1101 A. Min ...

  10. Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest

    Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest(dp+线段树) 题目链接 题意: 给定3个人互不相同的多个数字,可以 ...

随机推荐

  1. Promise规范与原理解析

    摘要 Promise对象用于清晰的处理异步任务的完成,返回最终的结果值,本次分享主要介绍Promise的基本属性以及Promise内部的基础实现,能够帮我们更明确使用场景.更快速定位问题. Promi ...

  2. SFX的妙用——如何在不安装软件的情况下打开自定义格式文件?

    前段时间看到群友讨论压缩包能不能运行,想起了N年前用自解压文件SFX实现的一个"需求":在没有安装任何应用软件的Windows(当时还要支持XP)上能双击打开自定义格式的文件.当时 ...

  3. [UOJ216][UNR#2 2A] Jakarta Skyscrapers

    印尼首都雅加达市有 $10^{18}$ 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 $1$ 到 $10^{18}$ .除了这 $10^{18}$ 座摩天楼外,雅加达市没有其他摩天楼. ...

  4. 聊一聊 .NET高级调试 中必知的符号表

    一:背景 1. 讲故事 在高级调试的旅行中,发现有不少人对符号表不是很清楚,其实简而言之符号表中记录着一些程序的生物特征,比如哪个地址是函数(签名信息),哪个地址是全局变量,静态变量,行号是多少,数据 ...

  5. 24、Go语言中的OOP思想

    1.是什么? OOP:面向对象 Go语言的解构体嵌套 1.模拟集成性:is - a type A struct { field } type B struct { A // 匿名字段 } 这种方式就会 ...

  6. 使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案

    前言 在研究了一下午 k8s 文档的时候,正准备开干,万万没想到一个 uuid 的问题卡了我几个小时,一直想在系统中解决,没想到最后在外部使用PowerSheel解决了,分享记录一二 问题描述与尝试解 ...

  7. python获取已安装程序列表

    python获取已安装程序列表 本文主要讲述通过python脚本获取android 设备已安装列表. 首先,Python本身无法直接获取Android设备上已安装的程序列表,所以这里主要借助adb命令 ...

  8. STM32CubeMX教程6 TIM 通用定时器 - 生成PWM波

    1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 逻 ...

  9. Luogu P1298 最接近的分数 做题记录

    算是水紫,不过也学到一些有用的东西. 题意 给定正小数 \(N\).求分子不大于 \(n\),分母不大于 \(m\) 的分数 \(\dfrac{n}{m}\),使得 \(\dfrac{n}{m}\) ...

  10. 袋鼠云数栈UI5.0设计实战|B端表单这样设计,不仅美观还提效

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:大喜 相关文章:袋鼠云出品!数栈UI 5.0全新体验升级, ...