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。

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

样例输入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 题解相关推荐

  1. AtCoder Beginner Contest 246 A~E 题解 Bishop 2

    AtCoder Beginner Contest 246 A~E 题解 A Four Points 题意 给你矩形的三个顶点,输出剩下那个 思路 把横坐标和纵坐标分开,必会存在两个相同的数,横纵坐标就 ...

  2. AtCoder Beginner Contest 252 A~G 题解

    前言 这是我第一次写7题(A~G)的ABC题解,若有写得不好或者不到位的地方请多多指教,我将万分感激,感谢大家的支持! ABC252 A~G [A - ASCII code](https://atco ...

  3. AtCoder Beginner Contest 196 A~E题解

    ABC196 A~E [A - Difference Max](https://atcoder.jp/contests/abc196/tasks/abc196_a) 题目大意 输入格式 输出格式 样例 ...

  4. AtCoder Beginner Contest 177 A~D 题解

    ABC177 A~D [A - Don't be late](https://atcoder.jp/contests/abc177/tasks/abc177_a) 题目大意 输入格式 输出格式 样例 ...

  5. AtCoder Beginner Contest 168 C~D题解

    ABC168 C&D [C - : (Colon)](https://atcoder.jp/contests/abc168/tasks/abc168_c) 题目大意 输入格式 输出格式 样例 ...

  6. AtCoder Beginner Contest 242 C~E 题解

    ABC242 C~E [C - 1111gal password](https://atcoder.jp/contests/abc242/tasks/abc242_c) 题目大意 输入格式 输出格式 ...

  7. AtCoder Beginner Contest 250 C~E 题解

    ABC250 C~E [C - Adjacent Swaps](https://atcoder.jp/contests/abc250/tasks/abc250_c) 题目大意 输入格式 输出格式 样例 ...

  8. AtCoder Beginner Contest 192 A~D题解

    ABC192 A~D [A - Star](https://atcoder.jp/contests/abc192/tasks/abc192_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B ...

  9. AtCoder Beginner Contest 254 A~E 题解

    ABC254 A~E [A - Last Two Digits](https://atcoder.jp/contests/abc254/tasks/abc254_a) 题目大意 输入格式 输出格式 样 ...

最新文章

  1. 网站内容优化——什么样的文章可以帮助提升网站优化水平呢?
  2. JS修改CSS的三种方式
  3. 安装elasticsearch-analysis-ik中文分词器
  4. mysql fio测试_MySQL Hardware--FIO压测
  5. 在Jetty中设置SSL
  6. pandas 判断是否等于nan_Python之pandas笔记
  7. 最长高地(51Nod-2509)
  8. dedeCMS如何进行关键词过滤替换和屏蔽非法词汇?
  9. 音视频开发(14)---智能视频解决方案
  10. 回味Python2.7——笔记3
  11. BAT54C不断电源保护电路
  12. java ssm 答辩_基于SSM的网上书店商城设计现场答辩记录
  13. 电脑进入pe时蓝屏_进入PE系统也会蓝屏?运行PE系统蓝屏原因及解决方法
  14. Ubuntu安装拼音输入法
  15. 若重新启动ratel,需确定是否还存在僵死进程
  16. 什么是Linux系统架构?
  17. 周志华 《机器学习初步》 绪论
  18. GSM与GPRS区别介绍
  19. 乐理知识(和弦相关)
  20. Kafka从入门到精通学习笔记

热门文章

  1. 有关C语言中字符串入栈的理解
  2. C语言回顾--C语言实现栈的入栈和出栈
  3. 使用jspdf将网页转化成pdf(解决滚动条以外变成黑色问题及缺少echarts图表问题)
  4. 深入理解——字节、字符/字符串、Unicode 字符集
  5. 《云数据中心网络架构与技术》读书笔记 | 第5章 构建数据中心的物理网络(Underlay网络)
  6. Invalid keystore format 报错解决
  7. 一个手游外行怎样杀出万分之一创新血路(上篇)
  8. MSN登陆不上去的解决方法
  9. 换道超车 区块链是你的捷径
  10. Mac小技巧之mac系统如何隐藏dock栏