ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#197409 | #3448. 心加心 | FAT | 100 | 659ms | 216712kb | C++11 | 1.3kb | 2023-11-12 08:55:31 | 2023-11-12 13:11:49 |
answer
#include <bits/stdc++.h>
#define PB push_back
#define EB emplace_back
using namespace std;
const int maxn = 5000, maxl = 200;
char str[maxl + 5];
int pw10[maxl + 5];
int len[maxn + 5], V[maxn + 5];
struct edge {
int v, w;
bool operator<(const edge& b) const { return w > b.w; }
};
vector<edge> g[maxn + 5];
int dis[maxn + 5];
bool vis[maxn + 5];
void dijkstra(int s) {
priority_queue<edge> q;
memset(dis, 127, sizeof(dis));
dis[s] = 0, q.push({s, 0});
while (!q.empty()) {
int u = q.top().v; q.pop();
if (vis[u]) continue;
vis[u] = 1;
for (const auto& e : g[u])
if (dis[e.v] > dis[u] + e.w) {
dis[e.v] = dis[u] + e.w;
q.push((edge){e.v, dis[e.v]});
}
}
}
int main() {
int n, p;
scanf("%d%d", &n, &p);
pw10[0] = 1;
for (int i = 1; i <= maxl; i++) pw10[i] = 10 * pw10[i - 1] % p;
for (int i = 1; i <= n; i++) {
scanf("%s", str + 1);
len[i] = strlen(str + 1);
for (int j = 1; j <= len[i]; j++) V[i] = (V[i] * 10 + str[j] - '0') % p;
}
for (int i = 0; i < p; i++)
for (int j = 1; j <= n; j++) g[i].PB({(i * pw10[len[j]] + V[j]) % p, len[j]});
dijkstra(0);
int d0 = 1E9;
for (int i = 0; i < p; i++)
for (const auto& e : g[i])
if (!e.v) d0 = min(d0, dis[i] + e.w);
printf("%d\n", d0 >= 1E9 ? -1 : d0);
for (int i = p - 1; i; i--) printf("%d\n", dis[i] >= 1E9 ? -1 : dis[i]);
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1408kb
input:
10 98 0 1 2 3 4 5 6 7 8 9
output:
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 98 numbers
Test #2:
score: 10
Accepted
time: 20ms
memory: 5624kb
input:
5000 99 14781892056687055378359451878122218601921996058131918743098670380384485452067769009096639454...
output:
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 99 numbers
Test #3:
score: 10
Accepted
time: 0ms
memory: 1392kb
input:
3 99 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5 0 4 5...
output:
1 4 7 7 4 4 5 5 8 4 4 4 8 8 4 4 8 9 8 4 8 8 8 8 8 8 8 9 7 7 7 7 7 6 5 5 5 5 6 3 3 3 7 6 2 2 5 5 6 2 ...
result:
ok 99 numbers
Test #4:
score: 10
Accepted
time: 1ms
memory: 1400kb
input:
6 95 0 2 3 5 6 9 0 2 3 5 6 9 0 2 3 5 6 9 0 2 3 5 6 9 0 2 3 5 6 9 0 2 3 5 6 9 0 2 3 5 6 9 0 2 3 5 6 9...
output:
1 3 2 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 2 2 3 2 2 3 2 2 3 3 2 2 3 2 2 3 2 3 3 3 3 ...
result:
ok 95 numbers
Test #5:
score: 10
Accepted
time: 0ms
memory: 1392kb
input:
5 3 412 986 7687 79583 8318
output:
6 3 3
result:
ok 3 number(s): "6 3 3"
Test #6:
score: 10
Accepted
time: 0ms
memory: 1388kb
input:
5 3 5387 39817 6 6804 1
output:
1 2 1
result:
ok 3 number(s): "1 2 1"
Test #7:
score: 10
Accepted
time: 23ms
memory: 5628kb
input:
5000 100 4662215847345417996058539422385909140989122582319939315897492645456767910985172332639303829...
output:
180 180 180 180 180 180 180 180 180 180 180 181 180 180 180 181 180 180 180 181 181 180 180 181 180 ...
result:
ok 100 numbers
Test #8:
score: 10
Accepted
time: 25ms
memory: 5628kb
input:
5000 100 6017404839398900982117908052227697611177103082938397805192623914538500903540418343249962031...
output:
180 180 180 181 182 180 180 181 180 181 180 180 180 180 180 180 180 180 180 180 180 181 180 180 180 ...
result:
ok 100 numbers
Test #9:
score: 10
Accepted
time: 316ms
memory: 216708kb
input:
5000 5000 173577890992330520159895384217403731027027923558584792233344058149389687419038746812531024...
output:
196 184 183 192 192 195 -1 181 194 199 180 -1 180 -1 -1 -1 190 194 -1 185 182 -1 -1 -1 188 184 -1 19...
result:
ok 5000 numbers
Test #10:
score: 10
Accepted
time: 274ms
memory: 216712kb
input:
5000 5000 109684703722761599523811752824414002980896386859466348397242225190298237477285061568577404...
output:
184 180 191 185 195 195 -1 182 181 183 199 -1 192 -1 -1 -1 181 182 -1 185 -1 188 189 190 -1 190 188 ...
result:
ok 5000 numbers
Extra Test:
score: 0
Extra Test Passed