UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#197402#3448. 心加心Lynkcat100987ms99068kbC++111.5kb2023-11-12 08:52:072023-11-12 13:11:16

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));
        int val=x;
        for (int j=0;j<m;j++)
        {
            f[j][val]=min(f[j][val],sz(st));
            val=(val+y);
            if (val>=m) val-=m;
        }
    }
    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;
        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();
    }
}

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 1ms
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: 7ms
memory: 1708kb

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: 1ms
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: 1692kb

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: 1712kb

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: 1716kb

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: 479ms
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: 473ms
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