AtCoder Beginner Contest 205 A~E 题解

A - kcal

题目大意

我们有一种每\(100\)毫升含有\(A\)千卡热量的饮料。\(B\)毫升的这种饮料含有多少千卡热量?

\(0\le A, B\le 1000\)

输入格式

\(A~B\)

输出格式

输出\(B\)毫升这种饮料包含的的千卡数。最大允许浮点数精度误差\(10^{-6}\)

样例

\(A\) \(B\) 输出
\(45\) \(200\) \(90\)
\(37\) \(450\) \(166.5\)
\(0\) \(1000\) \(0\)
\(50\) \(0\) \(0\)

分析

废话不多说,答案就是\(\frac{AB}{100}\)~

代码

#include <cstdio>
using namespace std;int main()
{int a, b;scanf("%d%d", &a, &b);a *= b;printf("%d.%d\n", a / 100, a % 100);return 0;
}

B - Permutation Check

题目大意

给定长度为\(N\)的序列\(A=(A_1,A_2,\dots,A_N)\)
判断\(A\)是否为\((1,2,\dots,N)\)的一种排列。

\(1\le A_i\le N\le 10^3\)

输入格式

\(N\)
\(A_1~A_2~\dots~A_N\)

输出格式

如果\(A\)\((1,2,\dots,N)\)的一种排列,输出Yes;否则,输出No

样例

样例输入1

5
3 1 2 4 5

样例输出1

Yes

\((3,1,2,4,5)\)\((1,2,3,4,5)\)的一种排列,所以我们输出Yes

样例输入2

6
3 1 4 1 5 2

样例输出2

No

\((3,1,4,1,5,2)\)不是\((1,2,3,4,5,6)\)的一种排列,所以我们输出No

样例输入3

3
1 2 3

样例输出3

Yes

样例输入4

1
1

样例输出4

Yes

分析

由于题目保证\(1\le A_i\le N\),所以\((1,2,\dots,N)\)的一种排列\(A\)定义如下:

  • \(A\)\(1\)\(N\)每个数字不重复出现。

因此,我们可以用数组记录每个数字是否出现,所以总时间复杂度为\(\mathcal O(n)\)

代码

#include <cstdio>
#define maxn 1005
using namespace std;bool used[maxn];int main()
{int n;scanf("%d", &n);for(int i=0; i<n; i++){int a;scanf("%d", &a);if(used[a]){puts("No");return 0;}used[a] = true;}puts("Yes");return 0;
}

C - POW

题目大意

给定三个整数\(A,B,C\),判断\(A^C\)\(B^C\)哪个更大。

\(-10^9\le A,B\le 10^9\)
\(1\le C\le 10^9\)

输入格式

\(A~B~C\)

输出格式

本题分如下三种情况输出:

  • 如果\(A^C<B^C\),输出<
  • 如果\(A^C>B^C\),输出>
  • 如果\(A^C=B^C\),输出=

样例

\(A\) \(B\) \(C\) 输出
\(3\) \(2\) \(4\) >
\(-7\) \(7\) \(2\) =
\(-8\) \(6\) \(3\) <

分析

首先,由于负负得正\((-a)^2=a^2\)
这样,我们可以根据奇偶性得出,如果\(n\)为偶数,\((-a)^n=a^n\);但如果\(n\)为奇数,则\((-a)^n=-(a^n)\)
因此,我们只需判断如果\(C\)为偶数,将\(A\)替换为\(|A|\),再将\(B\)替换为\(|B|\)
最后,\(A\)\(B\)的大小关系就是\(A^C\)\(B^C\)的大小关系。

代码

#include <cstdio>
using namespace std;int main()
{int a, b, c;scanf("%d%d%d", &a, &b, &c);if(!(c & 1)){if(a < 0) a = -a;if(b < 0) b = -b;}puts(a < b? "<": a > b? ">": "=");return 0;
}

D - Kth Excluded

题目大意

给定长度为\(N\)的正整数序列\(A=(A_1,A_2,\dots,A_N)\)\(Q\)次查询。
在第\(i\)次查询中,给定正整数\(K_i\),求第\(K_i\)小的不在\(A\)中的正整数。

\(1\le N,Q\le 10^5\)
\(1\le A_1<A_2<\dots<A_N\le10^{18}\)
\(1\le K_i\le 10^{18}\)

输入格式

\(N~Q\)
\(A_1~A_2~\dots~A_N\)
\(K_1\)
\(K_2\)
\(\hspace{5pt}\vdots\)
\(K_N\)

输出格式

输出\(Q\)行。第\(i\)行应该包含第\(K_i\)小的不在\(A\)中的正整数。

样例

样例输入1

4 3
3 5 6 7
2
5
3

样例输出1

2
9
4

不在\(A\)中的正整数有\(1,2,4,8,9,10,11,\dots\),其中有:

  • \(2\)小的\(2\)
  • \(5\)小的\(9\)
  • \(3\)小的\(4\)

因此,我们应该依次输出294

样例输入2

5 2
1 2 3 4 5
1
10

样例输出2

6
15

分析

本题我们可以先预处理出\(A\)中每个元素比它小的元素的数量,再二分查找即可。

代码

#include <cstdio>
#include <algorithm>
#define maxn 100005
using namespace std;using LL = long long;
LL a[maxn];int main()
{int n, q;scanf("%d%d", &n, &q);for(int i=0; i<n; i++){scanf("%lld", a + i);a[i] -= i;}while(q--){LL k;scanf("%lld", &k);printf("%lld\n", k + (upper_bound(a, a + n, k) - a));}return 0;
}

E - White and Black Balls

题目大意

有多少种排列\(N\)个白球和\(M\)个黑球的方法使得下列条件成立?

  • 对于每个\(i\) (\(1\le i\le N+M\)),设\(w_i\)\(b_i\)分别是最左边\(i\)个球中白球和黑球的数量,\(w_i\le b_i+K\)成立。

答案对\((10^9+7)\)取模。

\(0\le N,M\le10^6\)
\(1\le N+M\)
\(0\le K\le N\)

输入格式

\(N~M~K\)

输出格式

输出答案,对\((10^9+7)\)取模。

样例

\(N\) \(M\) \(K\) 输出
\(2\) \(3\) \(1\) \(9\)
\(1\) \(0\) \(0\) \(0\)
\(1000000\) \(1000000\) \(1000000\) \(192151600\)

分析

首先,本题中合法排列数就是如下符合任意\(y\le x+K\)\((0,0)\to(M,N)\)最短路径的数量:
路径解释图

由此可见,如果\(N>M+K\)(即终点超出限制),答案一定为\(0\)
我们还可以发现,如果没有\(y\le x+K\)这个限制,答案为\(\binom{N + M}{N}\)
我们再考虑不合法的路径数,数量为\(\binom{N + M}{M + K + 1}\)
因此,答案为\(\binom{N + M}{N}-\binom{N + M}{M + K + 1}\)

代码

这里用AtCoder Library好像比较方便唉~

#include <iostream>
#include <atcoder/modint>
using namespace std;using modint = atcoder::modint1000000007;modint f(int n, int m)
{if(n < 0 || m < 0)return 0;modint ret = 1;for(int i=1; i<=m; i++)ret = ret * (n + i) / i;return ret;
}int main()
{int n, m, k;scanf("%d%d%d", &n, &m, &k);if(n > m + k) puts("0");else printf("%d\n", (f(n, m) - f(n - k - 1, m + k + 1)).val());return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794186.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 196 A~E 题解

A - Difference Max 题目大意 给定四个整数\(a,b,c\)和\(d\)。 我们要选择两个整数\(x\)和\(y\)(\(a\le x\le b\);\(c\le y\le d\))。输出最大的\(x-y\)。 \(-100\le a\le b\le 100\) \(-100\le c\le d\le 100\) 输入格式 \(a~~b\) \(c~~d\) 输出格式 输出最大的\(x-y\)。 样…

AtCoder Beginner Contest 173 A~D 题解

A - Payment 题目大意 如果使用价值\(1000\)元的纸币(假设有)支付\(N\)元,服务员会找多少钱? \(1\le N\le 10000\) 输入格式 \(N\) 输出格式 一行,即服务员找的钱数。 样例输入 输出1900 1003000 0分析 特判: 如果\(N\)除以\(1000\)能整除,那么不需要找钱,输出\(0\); …

AtCoder Beginner Contest 188 A~D 题解

A - Three-Point Shot 题目大意 有两个球队,分别得到\(X\)分和\(Y\)分,问得分较少的球队能否在获得三分后超越对方。 \(0\le X,Y\le 100\) \(X \ne Y\) \(X\)和\(Y\)都是整数。 输入格式 \(X~Y\) 输出格式 如果能,输出Yes;否则,输出No。 样例X Y 输出3 5 Yes分析 这个不用…

Eclipse安装包下载慢解决方法

最近开始学习Java,使用经典的Eclipse IDE,结果发现下载太慢……问题分析Eclipse的下载依赖于其他镜像,(在我这里)默认为朝鲜的镜像(可能在不同电脑中默认不同):点击Select Another Mirror:选择中国的镜像:

程序无法启动,因为您的计算机缺少msvcr71.dll。

背景 打开CrystalTile2这个软件出现此提示。 解决 有很多解决办法,最简单粗暴也是见效最快的就是直接从网上下载dll文件放到对应位置。 下载 https://msvcr71.dll-box.com/zh/自己存了一份,以免网址失效(虽然按道理来说一般不会失效)。 https://www.123pan.com/s/EhW3jv-IW…

Panasonic Programming Contest 2020 C (Sqrt Inequality) 题解

题目大意 输入三个整数\(a\),\(b\),\(c\),如果 \(\sqrt a + \sqrt b < \sqrt c\) 成立,输出Yes,否则输出No。 样例 输入 #1 2 3 9输出 #1 No\(\sqrt 2 + \sqrt 3 < \sqrt 9\) 不成立。 输入 #2 2 3 10输出 #2 Yes\(\sqrt 2 + \sqrt 3 < \sqrt 10\) 成立。 分析 错…

CodeForces Round #621 ABC (1307A+1307B+1307C) 题解

A. Cow and Haybales 题面 The USA Construction Operation (USACO) recently ordered Farmer John to arrange a row of n haybale piles on the farm. The \(i\)-th pile contains \(a_i\) haybales. However, Farmer John has just left for vacation, leaving Bessie all o…

Python函数之*[参数名]和**[参数名]的用处

一、*[参数名] 调用 合法调用 普通调用 *参数名一般写成*args, 如: def func(*args):print(args)可以试着调用func: >>> func(1) (1,) >>> func() () >>> func(1, 2, 3) (1, 2, 3) >>> func(dict(), set(), str(), int()) ({}, set(), ,…

discuz3.4文件包含漏洞

首先查看修复:可以看到新增代码preg_match("/^[\w-]+\.php$/i", $parse[path])) 来验证path是否为php文件,这个应该是修复路径遍历导致的文件读取漏洞。还有require ./.$_ENV[curapp]..php;这里应该是另外一个漏洞,因为$parse[path]和$_ENV[curapp]没有关联。 然后…

河道漂浮物识别检测系统

河道漂浮物识别检测系统依据智能视频分析,视频图像信息内容自动分析和识别,不用人工操纵;检测漂浮物(塑料泡沫、包装袋、堤岸漂浮植物种类等)生物群落等),精确提交检测结果,储存有关信息,便捷查验管理。河道漂浮物识别检测系统实时监控河面状况,对违法行为开展警报、…

厨师帽厨师服口罩穿戴人脸识别-智慧食安监督系统

厨师帽厨师服口罩穿戴人脸识别就是指在监管前提下提早设定查验区域,当规定区域有不戴厨师帽不穿戴厨师服或者口罩,系统自动会警报。厨师帽厨师服口罩穿戴人脸识别-智慧食安监督系统根据视频智能分析商品,在数据分析系统优化计算方法服务中,扩展了非厨房工作人员 进入后厨以…

web 开发(4)- 数据库sql

sql创建数据库sudo mysql 进入 mysql> create database book_01安装 mysqlclient sudo apt-get install libmysqlclient-dev sudo apt-get update 远程控制SQL得到远程密码 sudo cat /etc/mysql/debian.cnf 获取IP地址 ifconfig sudo mysql 问题一,不允许远程控制 先进入本…