题集链接

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)的更多相关文章

  1. Codeforces Round #802 (Div. 2)C. Helping the Nature(差分)

    题目链接 题目大意: 给你一个有n个元素的数组a,你可以通过一下三种操作使数组的每一个值都为0: 选择一个下标i,然后让a[1],a[2]....a[ i ] 都减一; 选择一个下标i,然后让a[i] ...

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

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

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

  4. Codeforces Round #368 (Div. 2)

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

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

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

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

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

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

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

  9. Codeforces Round #371 (Div. 1)

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

随机推荐

  1. iOS全埋点解决方案-手势采集

    前言 ​ 随着科技以及业务的发展,手势的应用也越来越普及,因此对于数据采集,我们要考虑如果通过全埋点来实现手势的采集. 一.手势识别器 ​ 苹果为了降低开发者在手势事件处理方面的开发难度,定义了一个抽 ...

  2. FileNotFoundError: [Errno 2] No such file or directory: 'image/1.jpg'问题解决

    FileNotFoundError: [Errno 2] No such file or directory: 'image/1.jpg'问题 最近在学习爬虫,想爬一些图片并保存到本地,但是在下载图片 ...

  3. [报告] Microsoft :Application of deep learning methods in speech enhancement

    Application of deep learning methods in speech enhancement 语音增强中的深度学习应用 按: 本文是DNS,AEC,PLC等国际级语音竞赛的主办 ...

  4. ValidForm5.3.2 忽略表单项校验详解

    ValidForm 官方文档 项目的需求是这样的:一个checkbox,一个input,选中checkbox的时候,需要校验input,取消选中的时候,不要校验input. <input typ ...

  5. XCTF练习题---MISC---Hidden-Message

    XCTF练习题---MISC---Hidden-Message flag:Heisenberg 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现是一个数据包格式,打开看一下 3.查看UDP流,并 ...

  6. VMware安装Ubuntu20(图文教程,超详细)

    VMware安装Ubuntu20(图文教程,超详细) 此文讲述使用 VMware 工具安装 Ubuntu 系列虚拟机,不同位数和不同版本的 Ubuntu 安装过程相差无几,这里以 Ubuntu20 6 ...

  7. Vulnhub-DC-4靶机实战

    前言 靶机下载地址:https://www.vulnhub.com/entry/dc-4,313/ KALI地址:192.168.75.108 靶机地址:192.168.75.207 一.信息发现 1 ...

  8. Focal and Global Knowledge Distillation for Detectors

    一. 概述 论文地址:链接 代码地址:链接 论文简介: 此篇论文是在CGNet上增加部分限制loss而来 核心部分是将gt框变为mask进行蒸馏 注释:仅为阅读论文和代码,未进行试验,如有漏错请不吝指 ...

  9. git 撤销远程 commit

    参考: https://blog.csdn.net/xs20691718/article/details/51901161 https://www.cnblogs.com/lfxiao/p/93787 ...

  10. 循环中的scanf处理了换行符怎么破

    这种情况一般在循环中要求输入一个字符时容易出现问题. 问题在于缓冲区,缓冲区中存留了换行符,所以... 运行下面代码: int main(void){ char a=0; while(1){ scan ...