Codeforces Round #802 (Div. 2)
A Optimal Path
水
代码
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
typedef long long ll;
const int N = 1e6;
void solve()
{
int n, m;
cin >> n >> m;
ll ans = 0;
for (int i = 1; i <= m; i++)
ans += i;
for (int i = 2; i <= n; i++)
ans += (i - 1) * m + m;
cout << ans << endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
B Palindromic Numbers
题意
给一个 n 位数 a ,找一个 n 位数 b ,使得 a+b 为回文数.
思路
a 首位小于9,用 n 位 99...99 减去 a 得到 b.
a 首位等于9,用 n+1位 11...11 减去 a 得到 b.
注意要使用高精度减法.
代码
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
typedef long long ll;
const int N = 1e6;
string s;
void clake()
{
const int MAXN = 1e5 + 4;
char tmp[MAXN] = {};
int a[MAXN] = {};
int b[MAXN] = {};
int c[MAXN] = {};
string s1;
for (int i = 0; i <= s.size(); i++)
s1 += '1';
int lena = s1.size();
int lenb = s.size();
for (int i = 0; i < lena; i++)
a[i] = s1[lena - i - 1] - '0'; for (int i = 0; i < lenb; i++)
b[i] = s[lenb - i - 1] - '0'; for (int i = 0; i < lena; i++)
{
if (a[i] < b[i])
{
a[i + 1]--;
a[i] += 10;
}
c[i] = a[i] - b[i];
} for (int i = lena - 1; i >= 0; i--)
{ if (0 == c[i] && lena > 1)
{
lena--;
}
else
{ break;
}
} for (int i = lena - 1; i >= 0; i--)
cout << c[i];
}
void solve()
{
int n; cin >> n >> s;
if (s[0] != '9')
{
for (int i = 0; i < n; i++)
cout << 9 - (s[i] - '0');
}
else
clake();
cout << "\n";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
D River Locks
题意
有连续地一系列水池,每个水池上面都有一个进水管,进水速率均为1升/秒,每个水池的容积为 vi , 进水时 ,水池满后会流向下一个水池,
进行q次询问,每次询问在 ti 时间内使得全部水池变满所开水管的数量的最小值
思路
首先对于一个水槽,其能被填满的最小时间(就假设前面都注水)为 ,其中
为前缀和。那么处理出
我们就知道无解的界。
然后因为你总要填满所有的水槽,即水的体积一定是 ,所以对于有解的情况答案一定为
。
代码
#include <bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
// typedef long long ll;
const int N = 1e6;
int s[N], d[N], n;
void solve()
{
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int mas = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> s[i];
s[i] = s[i] + s[i - 1];
mas = max(mas, s[i] / i + (s[i] % i == 0 ? 0 : 1));
}
int q;
cin >> q;
while (q--)
{
int a;
cin >> a;
if (a < mas)
cout << "-1\n";
else
cout << s[n] / a + (s[n] % a == 0 ? 0 : 1) << endl;
} return 0;
}
C Helping the Nature
题意
给定一个长度为n的数组,定义如下操作
1.选择 i() ,使
到
的每一个数字都减一
2.选择 i () ,使
到
的每一个数字都减一
3.使全部数字都加1
问使得全部数字变为0的最小操作数
思路
使得全部数都变为0等价于使差分数组全变为0,
用差分的操作来转换以上操作
1.b[1] -= 1,b[i + 1] += 1
2.b[i] -= 1
3.b[1] += 1
代码
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
typedef long long ll;
const int N = 1e3 + 233; void solve()
{
int n;
cin >> n;
ll s[n + 10] = {};
ll d[n + 10] = {};
for (int i = 1; i <= n; i++)
{
cin >> s[i];
d[i] = s[i] - s[i - 1];
}
ll ans = 0;
for (int i = 2; i <= n; i++)
{
if (d[i] < 0)
{
d[1] += d[i];
ans -= d[i];
}
else
{
ans += d[i];
}
}
cout << ans + abs(d[1]) << endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
Codeforces Round #802 (Div. 2)的更多相关文章
- Codeforces Round #802 (Div. 2)C. Helping the Nature(差分)
题目链接 题目大意: 给你一个有n个元素的数组a,你可以通过一下三种操作使数组的每一个值都为0: 选择一个下标i,然后让a[1],a[2]....a[ i ] 都减一; 选择一个下标i,然后让a[i] ...
- 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 ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- 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 ...
- 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 ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- C# 11 的这个新特性,我愿称之最强!
前言 在日常开发中我们经常会将JSON.XML.HTML.SQL.Regex等字符串拷贝粘贴到我们的代码中,而这些字符串往往包含很多的引号",我们就必须将所有引号逐个添加转义符\进行转义.这 ...
- 聊聊如何在华为云IoT平台进行产品开发
摘要:华为云物联网平台承载着南北向数据互通的功能职责. 本文分享自华为云社区<如何基于华为云IoT物联网平台进行产品开发>,作者: Super.雯 . 华为云物联网平台承载着南北向数据互通 ...
- FreeRTOS --(16)资源管理之临界区
转载自 https://blog.csdn.net/zhoutaopower/article/details/107387427 临界区的概念在任何的 SoC 都存在,比如,针对一个寄存器,基本操作为 ...
- Unreal 输入系统 解析
前言 输入系统,输入某个键,响应到GamePlay层做对应的事.例如 点击鼠标,前进还是开枪之类,是如何响应的.这里只说应用层逻辑,硬件层逻辑不讲述. 详解 1.问题来源 先看下面一个例子:跳跃的事件 ...
- mysql5.6 innodb_large_prefix引起的一个异常
phenomenon: Specified key was too long; max key length is 3072 bytes 在修改一个数据库字段时,字段容量被限制为了表前缀的大小而不是本 ...
- wait 和async,await一起使用引发的死锁问题
在某个项目开发过程中,偶然间发现在UI线程中async,await,wait三者一起使用会引发一个必然性的死锁问题. 一个简单的实例,代码很简单,在界面上放置一个Button,并在Button的cli ...
- VMware 虚拟机图文安装和配置 Rocky Linux 8.5 教程
前言 2020 年,CentOS 宣布:计划未来将重心从 CentOS Linux 转移到 CentOS Stream.CentOS 8 的生命周期已于 2021 年 12 月 31 日终止,而 Ce ...
- vmware 安装的虚拟机没有网络
前提:需要先将 vmware 软件里的所有虚拟机关机 查看以下两个服务是否启动 如果以上两个服务未启动,就全部启动起来,如果某一个在启动时报错,就打开 vmware 软件,执行以下操作 编辑 > ...
- C# 给Word中的字符添加强调符号(着重号)
在Word中添加着重号,即强调符号,可以在选中字符后,鼠标右键点击,选择"字体",在窗口中可直接选择"着重号"添加到文字,用以对重要文字内容起加强提醒的目的,如 ...
- docker 快速上手
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口 安装 docker 设置仓库 $ sudo yum install -y yum-utils $ sudo yum-conf ...