QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#279713#6818. Barrel Theorybachbeo2007AC ✓10ms3564kbC++234.0kb2023-12-08 23:35:162023-12-08 23:35:16

Judging History

你现在查看的是最新测评结果

  • [2023-12-08 23:35:16]
  • 评测
  • 测评结果:AC
  • 用时:10ms
  • 内存:3564kb
  • [2023-12-08 23:35:16]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
pii cal2(int m){
    for(int i=2;i<=m/2;i++){
        if((i^(m-i))<min(i,m-i)) return {i,m-i};
    }
    return {-1,-1};
}
vector<int> cal(int m,int n,int k){
    vector<int> ans(n);
    for(int i=0;i<n;i++) ans[i]=k;
    ans[0]=ans[1]=(m-k*n)/2+k;
    return ans;
}
vector<int> cal3(int m){
    int x=0,y=0,z=0,cnt=0;
    if(m%2==0){
        for(int i=0;i<30;i++){
            if(m&(1<<i)){
                if(m==(1<<i)){
                    if(m<=8) return{};
                    else return {3,(1<<(i-1))-1,(1<<(i-1))-2};
                }
                if(cnt) x^=(1<<(i-1));
                else z^=(1<<(i-1));
                cnt++;y^=(1<<(i-1));
            }
        }
        return {x,y,z};
    }
    else{
        if(m%4==1){
            x^=1;
            for(int i=1;i<30;i++){
                if(m&(1<<i)){
                    if(m==((1<<i)|1)){
                        if(m<=17) return {};
                        else return {6,m/2-1,m/2-4};
                    }
                    if(cnt) x^=(1<<(i-1));
                    else z^=(1<<(i-1));
                    cnt++;y^=(1<<(i-1));
                }
            }
        }
        else{
            x^=1;y^=1;z^=1;
            for(int i=2;i<30;i++){
                if(m&(1<<i)){
                    if(m==((1<<i)+3)){
                        if(m<=19) return {};
                        return {7,(1<<(i-1))-1,(1<<(i-1))-3};
                    }
                    if(cnt) x^=(1<<(i-1));
                    else z^=(1<<(i-1));
                    cnt++;y^=(1<<(i-1));
                }
            }
        }
        if(min(x,min(y,z))<2) return {};
        return {x,y,z};
    }

}
int num=0;
void solve(){
    int n,m;cin >> n >> m;
    /*
    num++;
    if(num==1415){
        cout <<  n << ' ' << m << '\n';
        return;
    }
    else if(num>10) return;
    */
    if(n==1){
        cout << "NO\n";
        return;
    }
    if(m%2==0){
        if(n%2==0){
            vector<int> ans=cal(m,n,1);
            cout << "YES\n";
            for(int v:ans) cout << v << ' ';
            cout << '\n';
        }
        else{
            if(n==3){
                vector<int> ans=cal3(m);
                if(ans.empty()) cout << "NO\n";
                else{
                    cout << "YES\n";
                    for(int v:ans) cout << v << ' ';
                    cout << '\n';
                }
            }
            else{
                if(m==n+1){cout << "NO\n";return;}
                vector<int> ans=cal(m-6,n-3,1);
                cout << "YES\n1 2 3 ";
                for(int v:ans) cout << v << ' ';
                cout << '\n';
            }
        }
    }
    else{
        if(m<=2*n){cout << "NO\n";return;}
        if(n%2==0){
            if(n==2){
                pii x=cal2(m);
                if(x.first==-1) cout << "NO\n";
                else{
                    cout << "YES\n";
                    cout << x.first << ' ' << x.second << '\n';
                }
            }
            else{
                vector<int> ans=cal(m-5,n-2,2);
                cout << "YES\n2 3 ";
                for(int v:ans) cout << v << ' ';
                cout << '\n';
            }
        }
        else{
            if(n==3){
                vector<int> ans=cal3(m);
                if(ans.empty()) cout << "NO\n";
                else{
                    cout << "YES\n";
                    for(int v:ans) cout << v << ' ';
                    cout << '\n';
                }
            }
            else{
                if(m<2*n+7){cout << "NO\n";return;}
                cout << "YES\n2 4 7 ";
                vector<int> ans=cal(m-13,n-3,2);
                for(int v:ans) cout << v << ' ';
                cout << '\n';
            }
        }
    }
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    int t;cin >> t;
    while(t--) solve();
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3492kb

input:

3
6 7
5 17
4 4

output:

NO
YES
2 4 7 2 2 
YES
1 1 1 1 

result:

ok T=3 (3 test cases)

Test #2:

score: 0
Accepted
time: 2ms
memory: 3528kb

input:

4194
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61...

output:

NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
...

result:

ok T=4194 (4194 test cases)

Test #3:

score: 0
Accepted
time: 1ms
memory: 3492kb

input:

1
2 10000000

output:

YES
5000000 5000000 

result:

ok T=1 (1 test case)

Test #4:

score: 0
Accepted
time: 1ms
memory: 3436kb

input:

1
3 9999999

output:

YES
4999997 4999999 3 

result:

ok T=1 (1 test case)

Test #5:

score: 0
Accepted
time: 0ms
memory: 3516kb

input:

1
5 9999999

output:

YES
2 4 7 4999993 4999993 

result:

ok T=1 (1 test case)

Test #6:

score: 0
Accepted
time: 1ms
memory: 3428kb

input:

1
6 9999999

output:

YES
2 3 4999995 4999995 2 2 

result:

ok T=1 (1 test case)

Test #7:

score: 0
Accepted
time: 1ms
memory: 3496kb

input:

1
6 10000000

output:

YES
4999998 4999998 1 1 1 1 

result:

ok T=1 (1 test case)

Test #8:

score: 0
Accepted
time: 7ms
memory: 3564kb

input:

20
42 500000
18468 500000
6335 500000
6501 500000
19170 500000
15725 500000
11479 500000
9359 500000
6963 500000
4465 500000
5706 500000
8146 500000
3282 500000
16828 500000
9962 500000
492 500000
2996 500000
11943 500000
4828 500000
5437 500000

output:

YES
249980 249980 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
YES
240767 240767 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

ok T=20 (20 test cases)

Test #9:

score: 0
Accepted
time: 8ms
memory: 3564kb

input:

20
46 500000
9217 500000
4199 500000
17796 500000
9485 500000
19651 500000
14591 500000
6432 500000
10706 500000
18317 500000
5558 500000
8190 500000
12653 500000
607 500000
12154 500000
17830 500000
9814 500000
10368 500000
6659 500000
8962 500000

output:

YES
249978 249978 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
YES
1 2 3 245391 245391 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

ok T=20 (20 test cases)

Test #10:

score: 0
Accepted
time: 3ms
memory: 3500kb

input:

5104
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
2 11
2 12
2 13
2 14
2 15
2 16
2 17
2 18
2 19
2 20
2 21
2 22
2 23
2 24
2 25
2 26
2 27
2 28
2 29
2 30
2 31
2 32
2 33
2 34
2 35
2 36
2 37
2 38
2 39
2 40
2 41
2 42
2 43
2 44
2 45
2 46
2 47
2 48
2 49
2 50
2 51
2 52
2 53
2 54
2 55
2 56
2 57
2 58
2 59
2 60
2 61
2 6...

output:

YES
1 1 
NO
YES
2 2 
YES
2 3
YES
3 3 
NO
YES
4 4 
YES
4 5
YES
5 5 
YES
4 7
YES
6 6 
YES
6 7
YES
7 7 
NO
YES
8 8 
YES
8 9
YES
9 9 
YES
8 11
YES
10 10 
YES
8 13
YES
11 11 
YES
8 15
YES
12 12 
YES
10 15
YES
13 13 
YES
12 15
YES
14 14 
YES
14 15
YES
15 15 
NO
YES
16 16 
YES
16 17
YES
17 17 
YES
16 19
YE...

result:

ok T=5104 (5104 test cases)

Test #11:

score: 0
Accepted
time: 10ms
memory: 3500kb

input:

33333
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
...

output:

YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
YES
148 150 2 
...

result:

ok T=33333 (33333 test cases)