QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#694902#9519. Build a ComputerAI80AC ✓0ms3856kbC++203.8kb2024-10-31 18:54:412024-10-31 18:54:42

Judging History

This is the latest submission verdict.

  • [2024-10-31 18:54:42]
  • Judged
  • Verdict: AC
  • Time: 0ms
  • Memory: 3856kb
  • [2024-10-31 18:54:41]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define lowbit(x) (x & (-x))
#define lc p << 1
#define rc p << 1 | 1
typedef long long ll;
typedef pair<int,int> pii;
mt19937 rnd(time(0));
const int N = 1e6 + 7;
const int mod = 1e9 + 7;
vector<pii> v[205];
void solve() {
    int l , r; cin >> l >> r;
    int ni = 0,nx = 0,now = 1,ans;
    for(int i = 0;i < 24;i++) if((1 << i) & l) ni = i;
    for(int i = 0;i < 24;i++) if((1 << i) & r) nx = i;
    int st = -1;
    for(int i = nx;i >= 0;i--) {
        if(((1 << i) & l && (1 << i) & r) || (!((1 << i) & l) && !((1 << i) & r))) continue; //上下相同
        else {st = i;break;}
    }
    if(st == -1) {
        for(int i = nx;i >= 0;i--) {
            v[now].push_back({now + 1,(bool)((1 << i) & r)});
            now++;
        }
        ans = now;
    }
    else {
        for(int i = nx;i >= 0;i--) {
            v[now].push_back({now + 1,(bool)((1 << i) & r)});
            now++;
        }
        int lst = now,l1 = 2,r1 = now - 1;
        int l2,r2;
        if(l != 1) {
            now++;  //变成第二个开始的点
            l2 = now,r2 = now;
            v[1].push_back({now,(bool)((1 << ni) & l)});
            for(int i = ni - 1;i > 0;i--) { //第二个点开始
                v[now].push_back({now + 1,(bool)((1 << i) & l)});
                now++;
            }
            r2 = now;
            v[r2].push_back({lst,(bool)(1 & l)});
        }
        else {
            v[1].push_back({lst,1});
            l2 = 0,r2 = -1; //后续找主线最高不进循环
        }
        int mx = 0;
        if(ni != nx) {
            for(int i = r1,j = 0;i >= l1;i--,j++) { 
                if(v[i][0].second == 1) { //找每个点的需要的长,直接连上
                    if(j == 0) v[i].push_back({lst,0});
                    else v[i].push_back({now + j,0});
                    mx = max(mx,now + j);
                }
            }
            for(int i = r2,j = 0;i >= l2;i--,j++) {
                if(v[i][0].second == 0) { //同上
                    if(j == 0) v[i].push_back({lst,1});
                    else v[i].push_back({now + j,1});
                    mx = max(mx,now + j);
                }
            }
        }
        else { //如果位数相等,只能在不等之后看
            for(int i = r1,j = 0;i >= l1 && j < st;i--,j++) { 
                if(v[i][0].second == 1) { //找每个点的需要的长,直接连上
                    if(j == 0) v[i].push_back({lst,0});
                    else v[i].push_back({now + j,0});
                    mx = max(mx,now + j);
                }
            }
            for(int i = r2,j = 0;i >= l2 && j < st;i--,j++) {
                if(v[i][0].second == 0) { //同上
                    if(j == 0) v[i].push_back({lst,1});
                    else v[i].push_back({now + j,1});
                    mx = max(mx,now + j);
                }
            }
        }
        for(int i = ni + 1;i < nx;i++) {
            v[1].push_back({now + i,1}); //找1的最高点
            mx = max(mx,now + i);
        }
        for(int i = mx;i > now;i--) { //把最高点到now所有都铺上
            if(i == now + 1) {
                v[i].push_back({lst,0});
                v[i].push_back({lst,1});
                break;
            }
            v[i].push_back({i - 1,1});
            v[i].push_back({i - 1,0});
        }
        ans = max(mx,now); //如果没主线直接就用当前最大即可
    }
    cout << ans << "\n";
    for(int i = 1;i <= ans;i++) {
        cout << v[i].size() << " ";
        for(auto [x,y] : v[i]) cout << x << " " << y << " ";
        cout << "\n";
    }
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t = 1;
    // cin >> t;
    while(t--) solve();
    return 0;
}

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

詳細信息

Test #1:

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

input:

5 7

output:

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

result:

ok ok

Test #2:

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

input:

10 27

output:

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

result:

ok ok

Test #3:

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

input:

5 13

output:

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

result:

ok ok

Test #4:

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

input:

1 1000000

output:

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

result:

ok ok

Test #5:

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

input:

1 1

output:

2
1 2 1 
0 

result:

ok ok

Test #6:

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

input:

7 9

output:

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

result:

ok ok

Test #7:

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

input:

3 7

output:

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

result:

ok ok

Test #8:

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

input:

1 5

output:

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

result:

ok ok

Test #9:

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

input:

1 4

output:

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

result:

ok ok

Test #10:

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

input:

8 9

output:

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

result:

ok ok

Test #11:

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

input:

7 51

output:

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

result:

ok ok

Test #12:

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

input:

51 79

output:

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

result:

ok ok

Test #13:

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

input:

92 99

output:

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

result:

ok ok

Test #14:

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

input:

27 36

output:

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

result:

ok ok

Test #15:

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

input:

55 84

output:

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

result:

ok ok

Test #16:

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

input:

297208 929600

output:

57
2 2 1 22 1 
2 3 1 57 0 
2 4 1 56 0 
1 5 0 
1 6 0 
1 7 0 
2 8 1 52 0 
1 9 0 
2 10 1 50 0 
2 11 1 49 0 
2 12 1 48 0 
2 13 1 47 0 
1 14 0 
2 15 1 45 0 
1 16 0 
1 17 0 
1 18 0 
1 19 0 
1 20 0 
1 21 0 
0 
2 23 0 56 1 
2 24 0 55 1 
1 25 1 
2 26 0 53 1 
2 27 0 52 1 
2 28 0 51 1 
1 29 1 
2 30 0 49 1 
2 3...

result:

ok ok

Test #17:

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

input:

45728 589156

output:

54
5 2 1 22 1 52 1 53 1 54 1 
1 3 0 
1 4 0 
1 5 0 
2 6 1 51 0 
2 7 1 50 0 
2 8 1 49 0 
2 9 1 48 0 
2 10 1 47 0 
2 11 1 46 0 
1 12 0 
2 13 1 44 0 
1 14 0 
2 15 1 42 0 
2 16 1 41 0 
1 17 0 
1 18 0 
2 19 1 38 0 
1 20 0 
1 21 0 
0 
2 23 0 50 1 
1 24 1 
1 25 1 
2 26 0 47 1 
2 27 0 46 1 
1 28 1 
2 29 0 44...

result:

ok ok

Test #18:

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

input:

129152 138000

output:

47
2 2 1 20 1 
1 3 0 
1 4 0 
1 5 0 
1 6 0 
2 7 1 47 0 
2 8 1 46 0 
1 9 0 
2 10 1 44 0 
2 11 1 43 0 
1 12 0 
1 13 0 
1 14 0 
2 15 1 39 0 
1 16 0 
1 17 0 
1 18 0 
1 19 0 
0 
1 21 1 
1 22 1 
1 23 1 
1 24 1 
1 25 1 
2 26 0 45 1 
2 27 0 44 1 
2 28 0 43 1 
1 29 1 
2 30 0 41 1 
2 31 0 40 1 
2 32 0 39 1 
2 ...

result:

ok ok

Test #19:

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

input:

245280 654141

output:

56
3 2 1 22 1 56 1 
1 3 0 
1 4 0 
2 5 1 54 0 
2 6 1 53 0 
2 7 1 52 0 
2 8 1 51 0 
2 9 1 50 0 
2 10 1 49 0 
1 11 0 
2 12 1 47 0 
2 13 1 46 0 
1 14 0 
1 15 0 
2 16 1 43 0 
2 17 1 42 0 
2 18 1 41 0 
2 19 1 40 0 
1 20 0 
2 21 1 21 0 
0 
1 23 1 
1 24 1 
2 25 0 52 1 
1 26 1 
1 27 1 
1 28 1 
1 29 1 
1 30 1...

result:

ok ok

Test #20:

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

input:

202985 296000

output:

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

result:

ok ok

Test #21:

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

input:

438671 951305

output:

57
2 2 1 22 1 
2 3 1 57 0 
2 4 1 56 0 
1 5 0 
2 6 1 54 0 
1 7 0 
1 8 0 
1 9 0 
1 10 0 
2 11 1 49 0 
1 12 0 
1 13 0 
1 14 0 
1 15 0 
1 16 0 
1 17 0 
2 18 1 42 0 
1 19 0 
1 20 0 
2 21 1 21 0 
0 
1 23 1 
2 24 0 55 1 
1 25 1 
2 26 0 53 1 
1 27 1 
1 28 1 
2 29 0 50 1 
2 30 0 49 1 
2 31 0 48 1 
1 32 1 
1 ...

result:

ok ok

Test #22:

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

input:

425249 739633

output:

56
2 2 1 22 1 
1 3 0 
2 4 1 56 0 
2 5 1 55 0 
1 6 0 
2 7 1 53 0 
1 8 0 
1 9 0 
2 10 1 50 0 
1 11 0 
1 12 0 
2 13 1 47 0 
1 14 0 
1 15 0 
2 16 1 44 0 
2 17 1 43 0 
1 18 0 
1 19 0 
1 20 0 
2 21 1 21 0 
0 
1 23 1 
2 24 0 55 1 
2 25 0 54 1 
1 26 1 
1 27 1 
1 28 1 
1 29 1 
1 30 1 
2 31 0 48 1 
1 32 1 
2 ...

result:

ok ok

Test #23:

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

input:

551207 961718

output:

57
2 2 1 22 1 
1 3 1 
2 4 1 57 0 
1 5 0 
2 6 1 55 0 
1 7 0 
2 8 1 53 0 
1 9 0 
2 10 1 51 0 
2 11 1 50 0 
1 12 0 
1 13 0 
2 14 1 47 0 
1 15 0 
2 16 1 45 0 
2 17 1 44 0 
1 18 0 
2 19 1 42 0 
2 20 1 41 0 
1 21 0 
0 
1 23 0 
2 24 0 57 1 
2 25 0 56 1 
2 26 0 55 1 
1 27 1 
1 28 1 
2 29 0 52 1 
1 30 1 
2 3...

result:

ok ok

Test #24:

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

input:

114691 598186

output:

55
4 2 1 22 1 54 1 55 1 
1 3 0 
1 4 0 
2 5 1 53 0 
1 6 0 
1 7 0 
2 8 1 50 0 
1 9 0 
1 10 0 
1 11 0 
1 12 0 
1 13 0 
2 14 1 44 0 
1 15 0 
2 16 1 42 0 
1 17 0 
2 18 1 40 0 
1 19 0 
2 20 1 38 0 
1 21 0 
0 
1 23 1 
1 24 1 
2 25 0 50 1 
2 26 0 49 1 
2 27 0 48 1 
2 28 0 47 1 
2 29 0 46 1 
2 30 0 45 1 
2 3...

result:

ok ok

Test #25:

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

input:

234654 253129

output:

49
2 2 1 20 1 
1 3 1 
1 4 1 
1 5 1 
1 6 0 
2 7 1 48 0 
2 8 1 47 0 
2 9 1 46 0 
1 10 0 
1 11 0 
2 12 1 43 0 
2 13 1 42 0 
1 14 0 
1 15 0 
2 16 1 39 0 
1 17 0 
1 18 0 
2 19 1 19 0 
0 
1 21 1 
1 22 1 
1 23 0 
2 24 0 49 1 
1 25 1 
2 26 0 47 1 
1 27 1 
2 28 0 45 1 
2 29 0 44 1 
1 30 1 
2 31 0 42 1 
2 32 ...

result:

ok ok

Test #26:

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

input:

554090 608599

output:

55
2 2 1 22 1 
1 3 0 
1 4 0 
1 5 1 
1 6 0 
2 7 1 54 0 
1 8 0 
1 9 0 
2 10 1 51 0 
1 11 0 
1 12 0 
2 13 1 48 0 
1 14 0 
2 15 1 46 0 
1 16 0 
2 17 1 44 0 
1 18 0 
2 19 1 42 0 
2 20 1 41 0 
2 21 1 21 0 
0 
1 23 0 
1 24 0 
1 25 0 
2 26 0 55 1 
1 27 1 
1 28 1 
1 29 1 
2 30 0 51 1 
1 31 1 
2 32 0 49 1 
2 ...

result:

ok ok

Extra Test:

score: 0
Extra Test Passed