QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#878770#7895. Graph Partitioning 2duck_pearWA 1519ms14124kbC++142.7kb2025-02-01 17:32:482025-02-01 17:32:50

Judging History

This is the latest submission verdict.

  • [2025-02-01 17:32:50]
  • Judged
  • Verdict: WA
  • Time: 1519ms
  • Memory: 14124kb
  • [2025-02-01 17:32:48]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define TY long long
#define IL inline
#define pb push_back
#define MAXN 100005
#define mod (TY)(998244353)
#define INF (TY)(1e9)
#define For(i,a,b) for(TY i=(a);i<=(b);++i)
#define FOR(i,a,b) for(TY i=(a);i<(b);++i)
#define Rof(i,a,b) for(TY i=(a);i>=(b);--i)
#define ROF(i,a,b) for(TY i=(a);i>(b);--i)
IL TY qr(){
    TY u=0,v=1;char ch=getchar();
    while(ch>'9'||ch<'0')v=(ch=='-'?-1:1),ch=getchar();
    while(ch>='0'&&ch<='9')u=(u*10)+(ch-'0'),ch=getchar();
    return u*v;
}IL void qw(TY now){
    if(now<0){putchar('-');now=-now;}
    if(!now){putchar('0');return;}
    if(now>=10)qw(now/10);putchar(now%10+'0');
}IL void qw(TY now,char ch){qw(now);putchar(ch);}
IL bool ischar(char u){return (u>='a'&&u<='z')||(u>='A'&&u<='Z');}
IL char getc(){
    char u=getchar();
    while(!ischar(u))u=getchar();
    return u;
}IL string qs(){
    string s="";char ch=getchar();
    while(!ischar(ch))ch=getchar();
    while(ischar(ch))s+=ch,ch=getchar();
    return s;
}IL void ws(string s){FOR(i,0,s.size())putchar(s[i]);}
IL TY Pow(TY a,TY b){
    TY ans=1,base=a;
    while(b){
        if(b&1)ans=ans*base%mod;
        base=base*base%mod;b>>=1;
    }return ans;
}IL TY Mod(TY u){return (u>=mod?u-mod:u);}
TY T,n,k,dp[MAXN][355],L[MAXN],R[MAXN],siz[MAXN],tmp[355],ans[MAXN];
vector<TY> e[MAXN];
IL void Pb(TY i,TY j){e[i].pb(j);e[j].pb(i);}
void dfs(TY now,TY fa){
    dp[now][1]=1;
    siz[now]=1;
    FOR(i,0,e[now].size()){
        TY y=e[now][i];
        if(y==fa)continue;
        dfs(y,now);
        TY nxt=siz[now]+siz[y];
        For(j,0,350)tmp[j]=0;
        For(j,L[siz[now]],R[siz[now]])if(L[nxt]<=j&&j<=R[nxt]){
            tmp[j-L[nxt]]=dp[now][j-L[siz[now]]]*ans[y]%mod;
        }For(j,L[siz[now]],R[siz[now]])For(k,L[siz[y]],R[siz[y]])if(L[nxt]<=j+k&&j+k<=R[nxt]){
            tmp[j+k-L[nxt]]=Mod(tmp[j+k-L[nxt]]+dp[now][j-L[siz[now]]]*dp[y][k-L[siz[y]]]%mod);
        }For(j,0,R[nxt]-L[nxt]+1)dp[now][j]=tmp[j];
        siz[now]+=siz[y];
    }if(R[now]>=k)ans[now]=Mod(ans[now]+dp[now][k-L[siz[now]]]);
    if(R[now]>=k+1)ans[now]=Mod(ans[now]+dp[now][k+1-L[siz[now]]]);
}IL void clear(){
    For(i,1,n){
        siz[i]=L[i]=R[i]=ans[i]=0;
        e[i].clear();
        For(j,0,350)dp[i][j]=0;
    }
}int main(){
    T=qr();while(T--){
        n=qr();k=qr();
        FOR(i,1,n){
            TY u=qr(),v=qr();
            Pb(u,v);
        }For(i,1,n){
            if(k<=350)L[i]=0,R[i]=k+1;
            else{
                TY lst=i%k,need=i/k;
                if(need<=lst)L[i]=lst-need,R[i]=lst;
                else L[i]=0,R[i]=350;
            }
        }dfs(1,0);
        qw(ans[1],'\n');
        clear();
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 9384kb

input:

2
8 2
1 2
3 1
4 6
3 5
2 4
8 5
5 7
4 3
1 2
1 3
2 4

output:

2
1

result:

ok 2 lines

Test #2:

score: -100
Wrong Answer
time: 1519ms
memory: 14124kb

input:

5550
13 4
10 3
9 1
10 8
3 11
8 5
10 7
9 6
13 5
9 7
2 7
5 12
4 8
8 2
4 1
3 4
7 8
2 5
6 7
4 8
2 3
11 1
11 10
1 4
9 10
8 4
3 6
5 7
6 1
10 2
11 7
11 1
17 2
14 16
13 15
17 3
15 11
1 6
13 2
13 17
4 8
14 10
8 14
14 5
9 12
14 2
12 17
17 6
15 7
14 6
2 14
2 13
2 4
8 4
3 11
7 3
14 1
11 9
13 3
5 10
6 8
3 10
14 ...

output:

0
3
112
0
1
0
1
0
0
0
1
0
1
0
0
1
0
140
0
0
0
814
1
6
1
1
2
2
0
612
0
1
0
0
0
1
1
0
0
121
4536
0
0
1718
0
0
1
0
444
1
1908
1813
3
74
0
1
0
46
0
0
0
0
0
0
0
0
0
1
0
1
1
1
239
0
0
0
1
0
0
0
1
0
1
0
0
1
1
0
0
0
1
0
0
0
48
0
2
0
0
0
1
364
0
206
0
0
76
0
1
0
0
2
0
1
2
0
0
1
0
0
4
0
1
1
0
0
1
1
1
0
0
1
1
...

result:

wrong answer 5509th lines differ - expected: '1', found: '0'