ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#197399 | #3448. 心加心 | Lynkcat | 100 | 1077ms | 99068kb | C++11 | 1.5kb | 2023-11-12 08:49:04 | 2023-11-12 13:11:04 |
answer
#include<bits/stdc++.h>
#define poly vector<int>
#define IOS ios::sync_with_stdio(false)
#define ll long long
#define mp make_pair
#define mt make_tuple
#define pa pair < int,int >
#define fi first
#define se second
#define inf 1e9
#define mod 998244353
#define sz(x) (int)((x).size())
//#define int ll
//#define N
using namespace std;
const int N=5005;
int n,m;
int f[N][N],ans[N],vis[N];
void BellaKira()
{
cin>>n>>m;
for (int i=0;i<m;i++) ans[i]=inf;
for (int i=0;i<m;i++)
{
for (int j=0;j<m;j++)
f[i][j]=inf;
f[i][i]=0;
}
for (int i=1;i<=n;i++)
{
string st;
cin>>st;
int x,y;
y=1;
x=0;
for (auto u:st) x=(x*10+u-'0')%m,y=(y*10)%m;
ans[x]=min(ans[x],sz(st));
for (int j=0;j<m;j++)
{
int val=(j*y+x)%m;
f[j][val]=min(f[j][val],sz(st));
}
}
// return;
while (1)
{
int s=-1;
for (int i=0;i<m;i++)
if (!vis[i])
{
if (s==-1||ans[i]<ans[s]) s=i;
}
if (s==-1) break;
// cout<<s<<endl;
vis[s]=1;
for (int i=0;i<m;i++)
ans[i]=min(ans[i],ans[s]+f[s][i]);
}
for (int i=0;i<m;i++)
if (ans[(m-i)%m]>=1e9) cout<<-1<<'\n';
else cout<<ans[(m-i)%m]<<'\n';
}
signed main()
{
IOS;
cin.tie(0);
int T=1;
while (T--)
{
BellaKira();
}
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1696kb
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: 11ms
memory: 1712kb
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: 1708kb
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: 0ms
memory: 1688kb
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: 1284kb
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: 1284kb
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: 13ms
memory: 1716kb
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: 13ms
memory: 1712kb
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: 509ms
memory: 99068kb
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: 531ms
memory: 99064kb
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