ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#197493 | #3448. 心加心 | shiruiheng | 100 | 452ms | 1596kb | C++11 | 1.5kb | 2023-11-12 12:23:20 | 2023-11-12 13:20:33 |
answer
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n, p, x, ans[5010], vis[5010], a[5010], v[5010], len, m[210] = {1};
#define pi pair<ll, ll>
#define pii pair<ll, p>
#define fi first
#define se second
pi t[5010];
char s[210];
priority_queue<pi, vector<pi>, greater<pi>> q;
void debug(ll a[] = ans){
//system("cls");
for(int i = 0 ; i < p ; i++)
cout << a[i] << " \n"[i == p - 1];
}
signed main()
{
memset(ans, 0x3f, sizeof ans);
scanf("%lld%lld", &n, &p);
for(int i = 1 ; i <= 200 ; i++)
m[i] = m[i - 1] * 10 % p;
for(int i = 1 ; i <= n ; i++){
scanf("%s", s);
a[i] = (len = strlen(s));
for(int t = 0 ; t < len ; t++){
v[i] = (v[i] * 10ll + (s[t] - '0')) % p;
}
//cout << a[i] << " " << v[i] << "\n";
t[i] = {a[i], v[i]};
}
//sort(t + 1, t + n + 1);
for(int i = 1 ; i <= n ; i++){
q.push({t[i].fi, t[i].se});
ans[t[i].se] = min(ans[t[i].se], t[i].fi);
}
int cnt = 0;
while(q.size() && cnt < p){
pi u = q.top();
q.pop();
if(vis[u.se])
continue;
vis[u.se] = true;
cnt++;
//debug(); cout << "-" << u.fi << " " << u.se << "\n";
ans[u.se] = min(ans[u.se], u.fi);
for(int i = 1 ; i <= n ; i++){
if(ans[(u.se * m[a[i]] + v[i]) % p] >= u.fi + a[i])
q.push({u.fi + a[i], (u.se * m[a[i]] + v[i]) % p}), ans[(u.se * m[a[i]] + v[i]) % p] = u.fi + a[i];
}
}
for(int i = 0 ; i < p ; i++)
printf("%d\n", ans[(p - i) % p] == ans[p] ? -1 : ans[(p - i) % p]);
exit(0);
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1368kb
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: 24ms
memory: 1560kb
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: 1364kb
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: 1364kb
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: 1364kb
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: 1364kb
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: 25ms
memory: 1556kb
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: 24ms
memory: 1556kb
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: 189ms
memory: 1596kb
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: 189ms
memory: 1592kb
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