AtCoder Beginner Contest 192 完整题意+题解

题解

A

给你一个数 \(X\)\(1\le X\le 10^5\)),求最小的 \(Y>X\) 使得 \(Y\)\(100\) 的倍数。

直接判定即可。

B

给一个字符串,判断是否满足奇数位上是小写字母,偶数位上是大写字母。

也可以直接判定。

C

称一次操作为将一个数赋值为这个数的各个数字按照从大到小的排列顺序得到的数,减去从小到大排序得到的数。

给定 \(N\)\(1\le N\le 10^9\)),求 \(K\)\(1\le K\le 10^5\))次操作后的数。

直接暴力模拟 \(O(K\log^2 N)\) 即可。

https://atcoder.jp/contests/abc192/submissions/20296501

D

给定整数 \(X\)\(1\le X\le 10^{60}\))和 \(M\)\(1\le M\le 10^{18}\)),设 \(d\)\(X\) 最大的一位数。

求对于所有的 \(a>d,a\in\mathbb{Z}\)\(a\) 进制数 \(X\) 所代表的数的个数,同时 \((X)_a\le M\)

首先,对于所有 \(len(X)>1\) 的情况,\(a\) 的个数与题意中所求一一对应。而 \(len(x)=1\) 只需特判。

注意到这样的 \(a\) 一定在一个连续区间内,左端点固定,则可以二分右端点求得数量。

同时,long long 相乘可能会爆,要用 __int128(AtCoder 支持) 或龟速乘判。

https://atcoder.jp/contests/abc192/submissions/20318733

E

\(N\)\(1\le N\le 10^5\))个点,\(M\)\(1\le M\le 10^5\))条无向边。设初始时刻为 \(0\),则进入某条边的时刻必须为 \(xK_i\)\(x\in\mathbb{N}\),可以在节点停留),消耗时间为 \(T_i\)\(1\le K_i,T_i\le 10^9\))。求 \(X\)\(Y\) 的最短路,不连通则输出 -1

注意到时间仍然是越短越好,满足 dijkstra 的基本条件,直接跑,改一下松弛条件即可。

https://atcoder.jp/contests/abc192/submissions/20326035

F

\(N\)\(1\le N\le 100\))个数 \(A_i\)\(1\le A_i\le 10^7\)),要求选出若干个数(假设 \(x\) 个,分别为 \(A_{a_1},A_{a_2},\cdots,A_{a_x}\)),要求 \(\sum A_{a_i}\equiv X\pmod{x}\)\(10^9\le X\le 10^{18}\))且 \(\dfrac{X-\sum A_{a_i}}{x}\) 最小,求出最小值。

枚举所有可能的 \(x\),分别进行 DP。

\(f_{i,j,k}\) 为前 \(i\) 个数选了 \(j\) 个,\(\bmod{x}\) 的余数为 \(k\)\(\sum A_{a_i}\) 最大值,则:

\[f_{i,j,k}=\max\{f_{i-1,j,k},f_{i-1,j-1,(k-a_i)\bmod{x}}+a_i\} \]

总复杂度 \(\mathcal{O}(n^4)\)

https://atcoder.jp/contests/abc192/submissions/20345725

评价

可以说是一场比较中规中矩的 abc 了。总体难度不是特别大。

D 是卡得最久的一题,各种边界讨论比较繁琐,但也不是很麻烦。F 是赛时唯一没有 A 的题,赛后发现是初始值和特判的问题。

posted @ 2021-02-20 22:58  5ab  阅读(392)  评论(0编辑  收藏  举报