AtCoder Beginner Contest 205 A~E 题解
ABC205 A~E
- [A - kcal](https://atcoder.jp/contests/abc205/tasks/abc205_a)
- 题目大意
- 输入格式
- 输出格式
- 样例
- 分析
- 代码
- [B - Permutation Check](https://atcoder.jp/contests/abc205/tasks/abc205_b)
- 题目大意
- 输入格式
- 输出格式
- 样例
- 样例输入1
- 样例输出1
- 样例输入2
- 样例输出2
- 样例输入3
- 样例输出3
- 样例输入4
- 样例输出4
- 分析
- 代码
- [C - POW](https://atcoder.jp/contests/abc205/tasks/abc205_c)
- 题目大意
- 输入格式
- 输出格式
- 样例
- 分析
- 代码
- [D - Kth Excluded](https://atcoder.jp/contests/abc205/tasks/abc205_d)
- 题目大意
- 输入格式
- 输出格式
- 样例
- 样例输入1
- 样例输出1
- 样例输入2
- 样例输出2
- 分析
- 代码
- [E - White and Black Balls](https://atcoder.jp/contests/abc205/tasks/abc205_e)
- 题目大意
- 输入格式
- 输出格式
- 样例
- 分析
- 代码
A - kcal
题目大意
我们有一种每100100100毫升含有AAA千卡热量的饮料。BBB毫升的这种饮料含有多少千卡热量?
0≤A,B≤10000\le A, B\le 10000≤A,B≤1000
输入格式
ABA~BA B
输出格式
输出BBB毫升这种饮料包含的的千卡数。最大允许浮点数精度误差10−610^{-6}10−6。
样例
AAA | BBB | 输出 |
---|---|---|
454545 | 200200200 | 909090 |
373737 | 450450450 | 166.5166.5166.5 |
000 | 100010001000 | 000 |
505050 | 000 | 000 |
分析
废话不多说,答案就是AB100\frac{AB}{100}100AB~
代码
#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
题目大意
给定长度为NNN的序列A=(A1,A2,…,AN)A=(A_1,A_2,\dots,A_N)A=(A1,A2,…,AN)。
判断AAA是否为(1,2,…,N)(1,2,\dots,N)(1,2,…,N)的一种排列。
1≤Ai≤N≤1031\le A_i\le N\le 10^31≤Ai≤N≤103
输入格式
NNN
A1A2…ANA_1~A_2~\dots~A_NA1 A2 … AN
输出格式
如果AAA是(1,2,…,N)(1,2,\dots,N)(1,2,…,N)的一种排列,输出Yes
;否则,输出No
。
样例
样例输入1
5
3 1 2 4 5
样例输出1
Yes
(3,1,2,4,5)(3,1,2,4,5)(3,1,2,4,5)是(1,2,3,4,5)(1,2,3,4,5)(1,2,3,4,5)的一种排列,所以我们输出Yes
。
样例输入2
6
3 1 4 1 5 2
样例输出2
No
(3,1,4,1,5,2)(3,1,4,1,5,2)(3,1,4,1,5,2)不是(1,2,3,4,5,6)(1,2,3,4,5,6)(1,2,3,4,5,6)的一种排列,所以我们输出No
。
样例输入3
3
1 2 3
样例输出3
Yes
样例输入4
1
1
样例输出4
Yes
分析
由于题目保证1≤Ai≤N1\le A_i\le N1≤Ai≤N,所以(1,2,…,N)(1,2,\dots,N)(1,2,…,N)的一种排列AAA定义如下:
- AAA中111到NNN每个数字不重复出现。
因此,我们可以用数组记录每个数字是否出现,所以总时间复杂度为O(n)\mathcal O(n)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,CA,B,CA,B,C,判断ACA^CAC和BCB^CBC哪个更大。
−109≤A,B≤109-10^9\le A,B\le 10^9−109≤A,B≤109
1≤C≤1091\le C\le 10^91≤C≤109
输入格式
ABCA~B~CA B C
输出格式
本题分如下三种情况输出:
- 如果AC<BCA^C<B^CAC<BC,输出
<
; - 如果AC>BCA^C>B^CAC>BC,输出
>
; - 如果AC=BCA^C=B^CAC=BC,输出
=
。
样例
AAA | BBB | CCC | 输出 |
---|---|---|---|
333 | 222 | 444 |
>
|
−7-7−7 | 777 | 222 |
=
|
−8-8−8 | 666 | 333 |
<
|
分析
首先,由于负负得正,(−a)2=a2(-a)^2=a^2(−a)2=a2。
这样,我们可以根据奇偶性得出,如果nnn为偶数,(−a)n=an(-a)^n=a^n(−a)n=an;但如果nnn为奇数,则(−a)n=−(an)(-a)^n=-(a^n)(−a)n=−(an)。
因此,我们只需判断如果CCC为偶数,将AAA替换为∣A∣|A|∣A∣,再将BBB替换为∣B∣|B|∣B∣。
最后,AAA和BBB的大小关系就是ACA^CAC和BCB^CBC的大小关系。
代码
#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
题目大意
给定长度为NNN的正整数序列A=(A1,A2,…,AN)A=(A_1,A_2,\dots,A_N)A=(A1,A2,…,AN)和QQQ次查询。
在第iii次查询中,给定正整数KiK_iKi,求第KiK_iKi小的不在AAA中的正整数。
1≤N,Q≤1051\le N,Q\le 10^51≤N,Q≤105
1≤A1<A2<⋯<AN≤10181\le A_1<A_2<\dots<A_N\le10^{18}1≤A1<A2<⋯<AN≤1018
1≤Ki≤10181\le K_i\le 10^{18}1≤Ki≤1018
输入格式
NQN~QN Q
A1A2…ANA_1~A_2~\dots~A_NA1 A2 … AN
K1K_1K1
K2K_2K2
⋮\hspace{5pt}\vdots⋮
KNK_NKN
输出格式
输出QQQ行。第iii行应该包含第KiK_iKi小的不在AAA中的正整数。
样例
样例输入1
4 3
3 5 6 7
2
5
3
样例输出1
2
9
4
不在AAA中的正整数有1,2,4,8,9,10,11,…1,2,4,8,9,10,11,\dots1,2,4,8,9,10,11,…,其中有:
- 第222小的222;
- 第555小的999;
- 第333小的444。
因此,我们应该依次输出2
,9
,4
。
样例输入2
5 2
1 2 3 4 5
1
10
样例输出2
6
15
分析
本题我们可以先预处理出AAA中每个元素比它小的元素的数量,再二分查找即可。
代码
#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
题目大意
有多少种排列NNN个白球和MMM个黑球的方法使得下列条件成立?
- 对于每个iii (1≤i≤N+M1\le i\le N+M1≤i≤N+M),设wiw_iwi和bib_ibi分别是最左边iii个球中白球和黑球的数量,wi≤bi+Kw_i\le b_i+Kwi≤bi+K成立。
答案对(109+7)(10^9+7)(109+7)取模。
0≤N,M≤1060\le N,M\le10^60≤N,M≤106
1≤N+M1\le N+M1≤N+M
0≤K≤N0\le K\le N0≤K≤N
输入格式
NMKN~M~KN M K
输出格式
输出答案,对(109+7)(10^9+7)(109+7)取模。
样例
NNN | MMM | KKK | 输出 |
---|---|---|---|
222 | 333 | 111 | 999 |
111 | 000 | 000 | 000 |
100000010000001000000 | 100000010000001000000 | 100000010000001000000 | 192151600192151600192151600 |
分析
首先,本题中合法排列数就是如下符合任意y≤x+Ky\le x+Ky≤x+K的(0,0)→(M,N)(0,0)\to(M,N)(0,0)→(M,N)的最短路径的数量:
由此可见,如果N>M+KN>M+KN>M+K(即终点超出限制),答案一定为000。
我们还可以发现,如果没有y≤x+Ky\le x+Ky≤x+K这个限制,答案为(N+MN)\binom{N + M}{N}(NN+M)。
我们再考虑不合法的路径数,数量为(N+MM+K+1)\binom{N + M}{M + K + 1}(M+K+1N+M)。
因此,答案为(N+MN)−(N+MM+K+1)\binom{N + M}{N}-\binom{N + M}{M + K + 1}(NN+M)−(M+K+1N+M)。
代码
这里用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;
}
AtCoder Beginner Contest 205 A~E 题解相关推荐
- AtCoder Beginner Contest 246 A~E 题解 Bishop 2
AtCoder Beginner Contest 246 A~E 题解 A Four Points 题意 给你矩形的三个顶点,输出剩下那个 思路 把横坐标和纵坐标分开,必会存在两个相同的数,横纵坐标就 ...
- AtCoder Beginner Contest 252 A~G 题解
前言 这是我第一次写7题(A~G)的ABC题解,若有写得不好或者不到位的地方请多多指教,我将万分感激,感谢大家的支持! ABC252 A~G [A - ASCII code](https://atco ...
- AtCoder Beginner Contest 196 A~E题解
ABC196 A~E [A - Difference Max](https://atcoder.jp/contests/abc196/tasks/abc196_a) 题目大意 输入格式 输出格式 样例 ...
- AtCoder Beginner Contest 177 A~D 题解
ABC177 A~D [A - Don't be late](https://atcoder.jp/contests/abc177/tasks/abc177_a) 题目大意 输入格式 输出格式 样例 ...
- AtCoder Beginner Contest 168 C~D题解
ABC168 C&D [C - : (Colon)](https://atcoder.jp/contests/abc168/tasks/abc168_c) 题目大意 输入格式 输出格式 样例 ...
- AtCoder Beginner Contest 242 C~E 题解
ABC242 C~E [C - 1111gal password](https://atcoder.jp/contests/abc242/tasks/abc242_c) 题目大意 输入格式 输出格式 ...
- AtCoder Beginner Contest 250 C~E 题解
ABC250 C~E [C - Adjacent Swaps](https://atcoder.jp/contests/abc250/tasks/abc250_c) 题目大意 输入格式 输出格式 样例 ...
- AtCoder Beginner Contest 192 A~D题解
ABC192 A~D [A - Star](https://atcoder.jp/contests/abc192/tasks/abc192_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B ...
- AtCoder Beginner Contest 254 A~E 题解
ABC254 A~E [A - Last Two Digits](https://atcoder.jp/contests/abc254/tasks/abc254_a) 题目大意 输入格式 输出格式 样 ...
最新文章
- 网站内容优化——什么样的文章可以帮助提升网站优化水平呢?
- JS修改CSS的三种方式
- 安装elasticsearch-analysis-ik中文分词器
- mysql fio测试_MySQL Hardware--FIO压测
- 在Jetty中设置SSL
- pandas 判断是否等于nan_Python之pandas笔记
- 最长高地(51Nod-2509)
- dedeCMS如何进行关键词过滤替换和屏蔽非法词汇?
- 音视频开发(14)---智能视频解决方案
- 回味Python2.7——笔记3
- BAT54C不断电源保护电路
- java ssm 答辩_基于SSM的网上书店商城设计现场答辩记录
- 电脑进入pe时蓝屏_进入PE系统也会蓝屏?运行PE系统蓝屏原因及解决方法
- Ubuntu安装拼音输入法
- 若重新启动ratel,需确定是否还存在僵死进程
- 什么是Linux系统架构?
- 周志华 《机器学习初步》 绪论
- GSM与GPRS区别介绍
- 乐理知识(和弦相关)
- Kafka从入门到精通学习笔记