QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#681364#9519. Build a Computerucup-team1134#AC ✓1ms3848kbC++233.3kb2024-10-27 05:53:552024-10-27 05:53:56

Judging History

This is the latest submission verdict.

  • [2024-10-27 05:53:56]
  • Judged
  • Verdict: AC
  • Time: 1ms
  • Memory: 3848kb
  • [2024-10-27 05:53:55]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
#define vi vector<int>
#define vl vector<ll>
#define vii vector<pair<int,int>>
#define vll vector<pair<ll,ll>>
#define vvi vector<vector<int>>
#define vvl vector<vector<ll>>
#define vvii vector<vector<pair<int,int>>>
#define vvll vector<vector<pair<ll,ll>>>
#define vst vector<string>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define mkunique(x) sort(all(x));(x).erase(unique(all(x)),(x).end())
#define fi first
#define se second
#define mp make_pair
#define si(x) int(x.size())
const int mod=998244353,MAX=300005,INF=15<<26;

vi A[111],B[111];
vi G[111],rG[111];

void add_edge(int a,int b,int f){
    if(f==0){
        A[a].pb(b);
    }else{
        B[a].pb(b);
    }
    G[a].pb(b);
    rG[b].pb(a);
}

bool ca[111],cb[111];

int main(){
    
    std::ifstream in("text.txt");
    std::cin.rdbuf(in.rdbuf());
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    int L,R;cin>>L>>R;R++;
    
    for(int s=20;s>=1;s--){
        add_edge(s,s-1,0);
        add_edge(s,s-1,1);
    }
    
    int st=-1;
    
    for(int s=0;s<=20;s++){
        if((1<<s)>L){
            st=21+s;
            break;
        }
        if(L&(1<<s)){
            add_edge(21+s+1,21+s,1);
        }else{
            add_edge(21+s+1,21+s,0);
        }
    }
    
    for(int q=0;q<=20;q++){
        if(L&(1<<q)){
            if((L+(1<<q))<=R){
                add_edge(min(st,21+q+1),q,1);
                L+=(1<<q);
            }else{
                break;
            }
        }
    }
    
    {
        int z=-1;
        bool f=false;
        for(int s=21;s>=0;s--){
            if(L&(1<<s)){
                z=s;
                break;
            }
        }
        int now;
        for(int s=z;s>=0;s--){
            if(s==z){
                add_edge(st,70-s,1);
                now=70-s;
            }else{
                if(L+(1<<s)<=R){
                    add_edge(now,s,0);
                    add_edge(now,now+1,1);
                    L+=(1<<s);
                    now++;
                }else{
                    if(L&(1<<s)) add_edge(now,now+1,1);
                    else add_edge(now,now+1,0);
                    now++;
                }
            }
        }
        
    }
    
    ca[st]=1;
    cb[0]=1;
    
    for(int t=0;t<111;t++){
        for(int i=0;i<111;i++){
            for(int to:G[i]){
                ca[to]|=ca[i];
            }
            for(int to:rG[i]){
                cb[to]|=cb[i];
            }
        }
    }
    vi use;
    for(int i=0;i<111;i++){
        if(ca[i]&&cb[i]) use.pb(i);
    }
    
    cout<<si(use)<<"\n";
    for(int x:use){
        vii X;
        for(int a:A[x]){
            if(binary_search(all(use),a)) X.pb(mp(lower_bound(all(use),a)-use.begin()+1,0));
        }
        for(int a:B[x]){
            if(binary_search(all(use),a)) X.pb(mp(lower_bound(all(use),a)-use.begin()+1,1));
        }
        cout<<si(X);
        for(auto [a,b]:X) cout<<" "<<a<<" "<<b;
        cout<<endl;
    }
}



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

详细

Test #1:

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

input:

5 7

output:

5
0
2 1 0 1 1
1 1 1
2 3 0 2 1
1 4 1

result:

ok ok

Test #2:

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

input:

10 27

output:

9
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
1 2 1
2 5 0 3 1
2 6 1 8 1
2 4 0 9 1
1 3 0

result:

ok ok

Test #3:

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

input:

5 13

output:

8
0
2 1 0 1 1
2 2 0 2 1
1 1 1
2 4 0 2 1
2 5 1 7 1
2 3 0 8 1
1 2 0

result:

ok ok

Test #4:

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

input:

1 1000000

output:

39
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
2 18 0 18 1
20 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 21 1
2 1...

result:

ok ok

Test #5:

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

input:

1 1

output:

2
0
1 1 1

result:

ok ok

Test #6:

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

input:

7 9

output:

7
0
2 1 0 1 1
1 1 1
1 3 1
2 4 1 6 1
1 7 0
1 2 0

result:

ok ok

Test #7:

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

input:

3 7

output:

5
0
2 1 0 1 1
2 2 0 2 1
1 1 1
2 4 1 3 1

result:

ok ok

Test #8:

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

input:

1 5

output:

4
0
2 1 0 1 1
3 1 1 2 1 4 1
1 2 0

result:

ok ok

Test #9:

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

input:

1 4

output:

5
0
2 1 0 1 1
3 1 1 2 1 4 1
1 5 0
1 1 0

result:

ok ok

Test #10:

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

input:

8 9

output:

5
0
2 1 0 1 1
1 4 1
1 5 0
1 2 0

result:

ok ok

Test #11:

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

input:

7 51

output:

11
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
1 1 1
1 6 1
4 7 1 4 1 5 1 9 1
2 5 0 10 1
1 11 0
1 3 0

result:

ok ok

Test #12:

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

input:

51 79

output:

13
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
1 1 1
1 6 1
2 7 0 3 1
2 8 0 4 1
1 9 1
2 10 1 12 1
1 13 0
1 5 0

result:

ok ok

Test #13:

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

input:

92 99

output:

12
0
2 1 0 1 1
2 2 0 2 1
1 3 1
1 4 1
1 5 1
1 6 0
2 7 1 9 1
1 10 1
1 11 0
1 12 0
1 3 0

result:

ok ok

Test #14:

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

input:

27 36

output:

13
0
2 1 0 1 1
2 2 0 2 1
1 1 1
1 4 1
2 5 0 3 1
1 6 1
2 7 1 9 1
1 10 0
1 11 0
2 3 0 12 1
1 13 0
1 1 0

result:

ok ok

Test #15:

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

input:

55 84

output:

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

result:

ok ok

Test #16:

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

input:

297208 929600

output:

54
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
2 18 0 18 1
1 4 1
1 20 1
1 21 1
1 22 1
1 23 1
2 24 0 9 1
2 25 0 10 1
2 26 0 11 1
1 27 1
2 28 0 13 1
2 29 0 14...

result:

ok ok

Test #17:

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

input:

45728 589156

output:

49
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
2 18 0 18 1
1 6 1
2 20 0 7 1
1 21 1
2 22 0 9 1
1 23 1
2 24 0 11 1
2 25 0 12 1
1 26 1
1 27 1
2 28 0 15 1
5 29 ...

result:

ok ok

Test #18:

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

input:

129152 138000

output:

40
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
1 8 1
2 14 0 9 1
2 15 0 10 1
2 16 0 11 1
1 17 1
1 18 1
1 19 1
1 20 1
1 21 1
2 22 1 24 1
1 25 0
1 26 0
1 27 0
1 28 0
2 13 0 29 1
2 12 0 30 1
1 31 0
2 10 0 32 1
2 9 0 33 1...

result:

ok ok

Test #19:

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

input:

245280 654141

output:

50
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
2 18 0 18 1
1 6 1
2 20 0 7 1
2 21 0 8 1
2 22 0 9 1
1 23 1
1 24 1
1 25 1
1 26 1
1 27 1
2 28 0 15 1
1 29 1
1 30...

result:

ok ok

Test #20:

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

input:

202985 296000

output:

52
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
1 1 1
2 17 0 2 1
2 18 0 3 1
1 19 1
2 20 0 5 1
1 21 1
1 22 1
1 23 1
2 24 0 9 1
2 25 0 10 1
2 26 0 11 1
1 27 1
1 28 1
2 29 0 14 1
2 30 ...

result:

ok ok

Test #21:

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

input:

438671 951305

output:

56
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
2 18 0 18 1
1 1 1
1 20 1
1 21 1
1 22 1
2 23 0 5 1
2 24 0 6 1
2 25 0 7 1
1 26 1
1 27 1
2 28 0 10 1
2 29 0 11 1...

result:

ok ok

Test #22:

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

input:

425249 739633

output:

55
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
1 1 1
2 19 0 2 1
2 20 0 3 1
2 21 0 4 1
2 22 0 5 1
1 23 1
2 24 0 7 1
2 25 0 8 1
1 26 1
2 27 0 10 1
1 28 1
1 29...

result:

ok ok

Test #23:

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

input:

551207 961718

output:

57
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
1 1 1
1 19 1
1 20 1
2 21 0 4 1
2 22 0 5 1
1 23 1
2 24 0 7 1
2 25 0 8 1
1 26 1
2 27 0 10 1
2 28 0 11 1
1 29 1
...

result:

ok ok

Test #24:

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

input:

114691 598186

output:

55
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1
2 18 0 18 1
1 1 1
1 20 1
2 21 0 3 1
2 22 0 4 1
2 23 0 5 1
2 24 0 6 1
2 25 0 7 1
2 26 0 8 1
2 27 0 9 1
2 28 0 ...

result:

ok ok

Test #25:

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

input:

234654 253129

output:

47
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
1 2 1
1 15 1
1 16 1
1 17 1
2 18 0 6 1
2 19 0 7 1
1 20 1
2 21 0 9 1
2 22 0 10 1
1 23 1
2 24 0 12 1
1 25 1
2 26 0 14 1
1 27 0
1 28 1
1 29 1
2 30 1 32 1
1 33 1
...

result:

ok ok

Test #26:

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

input:

554090 608599

output:

51
0
2 1 0 1 1
2 2 0 2 1
2 3 0 3 1
2 4 0 4 1
2 5 0 5 1
2 6 0 6 1
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1
2 10 0 10 1
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1
2 14 0 14 1
2 15 0 15 1
1 2 1
2 17 0 3 1
1 18 1
2 19 0 5 1
1 20 1
1 21 1
2 22 0 8 1
2 23 0 9 1
2 24 0 10 1
1 25 1
2 26 0 12 1
1 27 1
1 28 1
1 29 1
2 30 0 16 ...

result:

ok ok

Extra Test:

score: 0
Extra Test Passed