Educational Codeforces Round 116 ABCE 题解 (Java/C++)

A. AB Balance

题解

显然,如果开头的字母和结尾的字母是同样的字母则AB(s)必然等于BA(s)。

代码

Java

Submission #133671054 - Codeforces
Codeforces. Programming competitions and contests, programming community

C++

Submission #133671450 - Codeforces
Codeforces. Programming competitions and contests, programming community

B. Update Files

题解

在用尽k条网线之前,有多少电脑有文件就复制多少。如果已有文件的电脑超过k台,就每次复制k个文件即可。

代码

Java

Submission #133684991 - Codeforces
Codeforces. Programming competitions and contests, programming community

C++

Submission #133685049 - Codeforces
Codeforces. Programming competitions and contests, programming community

C. Banknotes

题解

很明显,我们希望尽可能多的实用较低位的值。因此我们根据a[i]和a[i+1]的值计算对应的available[i]:$available[i]=10^{a[i+1]-a[i]}-1$。
以a[2]=3, a[3]=5为例,那么1000最多可以用99张。一旦用到100张,就可以用一张100000替换。
只是对于a[1]来说,虽然available[i]=999。但是因为要不能凑出来,所以对于i=1最多只能使用available[1]-1张。

另外如果available[1]本身就比k大了,那么直接用k张1即可。

代码

Java

Submission #133687987 - Codeforces
Codeforces. Programming competitions and contests, programming community

C++

Submission #133688406 - Codeforces
Codeforces. Programming competitions and contests, programming community

E. Arena

这个题目可以根据其数据规模直接推测出最终的时间复杂度,于是就能很自然的想到解法。

Educational Codeforces Round 116 Arena 题解 (Java/C++)
题解根据数据规模,我们几乎可以推断最终的复杂度应该就是$n\cdot x$。因此我们根据复杂度给出这样的定义:dp[i][j]表示总共打出j点伤害后剩下n个活着的英雄的可能数。显然dp[n][0]=1。
点击上面链接查看详细题解