QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#690081#9519. Build a ComputerFiatiustitiaAC ✓0ms3852kbC++204.6kb2024-10-30 20:12:012024-10-30 20:12:03

Judging History

This is the latest submission verdict.

  • [2024-10-30 20:12:03]
  • Judged
  • Verdict: AC
  • Time: 0ms
  • Memory: 3852kb
  • [2024-10-30 20:12:01]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
const int mask = (1 << 20) - 1;
void solve()
{
    int l, r;
    cin >> l >> r;
    using P = pair<int, int>;
    if (l == r)
    {
        vector g(101,vector<P>());
        int pre = 1,tot = 2;
        for(int i = 19;i != -1;i--)
        {
            if ((1 << i) > r)
                continue;
            auto m = l >> i & 1;
            g[pre].push_back(P(tot,m));
            pre = tot;
            tot++;
        }
        cout << tot - 1 << '\n';
        for(int i = 1;i < tot;i++)
        {
            cout << g[i].size() << ' ';
            for(auto [l,r] : g[i])
                cout << l << ' ' << r << ' ';
            cout << '\n';
        }
        return ;
    }
    using u32 = int;
    u32 rl = 0, lr = 0,pref = 0;
    for (u32 i = 19; i != -1; i--)
    {
        auto ml = l >> i & 1, mr = r >> i & 1;
        if ((1 << i) > r || (ml == mr))
        {
            pref |= ml << i;
            continue;
        }
        rl = (1 << i);
        lr = (1 << i) - 1;
        rl |= pref;
        lr |= pref;
        break;
    }
    
    
    vector g(101, vector<P>());
    int term = -1;
    // [rl,r]
    u32 s = 1;
    int tot = 2;
    {
        u32 pre = s;
        bool fuck = 0;
        auto ptot = tot;
        for (u32 i = 19; i != -1; i--)
        {
            if ((1 << i) > r)
                continue;
            auto m0 = r >> i & 1;
            auto m1 = rl >> i & 1;
            g[pre].push_back(P(i ? tot : term, m1));
            if (fuck)
                g[pre].push_back(P(i ? tot : term, 1));
            if (m0 != m1)
                fuck = 1;
            pre = tot;
            tot++;
        }
        tot--;
        // [ptot,tot)
        auto xx = ptot;
        pre = s;
        fuck = 0;
        for (u32 i = 19; i != -1; i--)
        {
            if ((1 << i) > r)
                continue;
            auto m0 = r >> i & 1;
            auto m1 = rl >> i & 1;
            if (m0 != m1)
                fuck = 1;
            if (fuck)
            {
                g[pre].push_back(P(i ? tot : term, m0));
                if (m0)
                    g[pre].push_back(P(i ? xx : term, 0));
                pre = tot;
                tot++;
            }
            else if (m0 == m1)
                pre = xx;
            xx++;
        }
        tot -= fuck;
    }
    // [l,lr]
    {
        u32 pre = s;
        auto ptot = tot;
        bool fuck = 0;
        for (u32 i = 19; i != -1; i--)
        {
            if ((1 << i) > lr)
                continue;
            auto m0 = lr >> i & 1;
            auto m1 = l >> i & 1;
            g[pre].push_back(P(i ? tot : term, m0));
            if (fuck)
                g[pre].push_back(P(i ? tot : term, 0));
            if (m0 != m1)
                fuck = 1;
            pre = tot;
            tot++;
        }
        tot--;
        auto xx = ptot;
        pre = s;
        fuck = 0;
        bool fff = false;
        for (u32 i = 19; i != -1; i--)
        {
            if ((1 << i) > lr)
                continue;
            auto m0 = lr >> i & 1;
            auto m1 = l >> i & 1;
            if (m0 != m1)
                fuck = 1;
            fff |= m1;
            if (fuck)
            {
                if (!fff)
                {
                    g[pre].push_back(P(xx,1));
                }
                else
                {
                    g[pre].push_back(P(i ? tot : term, m1));
                    if (m1 == 0)
                        g[pre].push_back(P(i ? xx : term, 1));
                    pre = tot;
                    tot++;
                }
            }
            else if (!fuck || !fff)
                pre = xx;
            xx++;
        }
        tot -= fuck;
    }
    for(int i = 1;i < tot;i++)
    {
        for(auto &[p,w] : g[i])
        {
            if (p == -1)
                p = tot;
        }
    }
    tot++;
    cout << tot - 1 << '\n';
    for(int i = 1;i < tot;i++)
    {
        sort(g[i].begin(),g[i].end());
        g[i].resize(unique(g[i].begin(),g[i].end()) - g[i].begin());
        cout << g[i].size() << ' ';
        for(auto [p,w] : g[i])
            cout << p << ' ' << w << ' ';
        cout << '\n';
    }
}

int main()
{
#ifdef LOCAL
    freopen("data.in", "r", stdin);
    freopen("data.out", "w", stdout);
    auto _ = clock();
#endif
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
#ifdef LOCAL
    cerr << clock() - _ << '\n';
#endif
    return 0;
}

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

詳細信息

Test #1:

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

input:

5 7

output:

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

result:

ok ok

Test #2:

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

input:

10 27

output:

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

result:

ok ok

Test #3:

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

input:

5 13

output:

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

result:

ok ok

Test #4:

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

input:

1 1000000

output:

57
20 2 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 
2 3 0 21 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 ...

result:

ok ok

Test #5:

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

input:

1 1

output:

2
1 2 1 
0 

result:

ok ok

Test #6:

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

input:

7 9

output:

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

result:

ok ok

Test #7:

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

input:

3 7

output:

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

result:

ok ok

Test #8:

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

input:

1 5

output:

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

result:

ok ok

Test #9:

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

input:

1 4

output:

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

result:

ok ok

Test #10:

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

input:

8 9

output:

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

result:

ok ok

Test #11:

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

input:

7 51

output:

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

result:

ok ok

Test #12:

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

input:

51 79

output:

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

result:

ok ok

Test #13:

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

input:

92 99

output:

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

result:

ok ok

Test #14:

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

input:

27 36

output:

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

result:

ok ok

Test #15:

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

input:

55 84

output:

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

result:

ok ok

Test #16:

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

input:

297208 929600

output:

74
2 2 1 39 1 
2 3 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 74 0 74 1 
2 4 0 22 1 
1 23 0 
1 24 0 
1 25 0 
2 8 0 26 1 
1 2...

result:

ok ok

Test #17:

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

input:

45728 589156

output:

69
5 2 1 36 1 37 1 38 1 54 1 
1 3 0 
1 4 0 
1 5 0 
2 6 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 69 0 69 1 
2 7 0 22 1 
2 8 0 23 1 
2 9 0 24 1 
2 10 0 25 1 ...

result:

ok ok

Test #18:

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

input:

129152 138000

output:

57
2 2 1 31 1 
1 3 0 
1 4 0 
1 5 0 
1 6 0 
2 7 0 19 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 
2 57 0 57 1 
2 8 0 20 1 
1 21 0 
2 10 0 22 1 
2 11 0 23 1 
1 24 0 
1 25 0 
1 26 0 
2 15 0 27 1 
1 28 0 
1 ...

result:

ok ok

Test #19:

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

input:

245280 654141

output:

72
3 2 1 37 1 55 1 
1 3 0 
1 4 0 
2 5 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 72 0 72 1 
2 6 0 22 1 
2 7 0 23 1 
2 8 0 24 1 
2 9 0 25 1 
2 10 0...

result:

ok ok

Test #20:

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

input:

202985 296000

output:

67
2 2 1 35 1 
1 3 0 
1 4 0 
2 5 0 20 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 
2 19 0 19 1 
2 67 0 67 1 
1 21 0 
1 22 0 
1 23 0 
1 24 0 
2 10 0 25 1 
1 26 0 
1 27 0 
1 28 0 
2 1...

result:

ok ok

Test #21:

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

input:

438671 951305

output:

73
2 2 1 39 1 
2 3 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 73 0 73 1 
2 4 0 22 1 
1 23 0 
2 6 0 24 1 
1 25 0 
1 26 0 
1 2...

result:

ok ok

Test #22:

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

input:

425249 739633

output:

72
2 2 1 38 1 
1 3 0 
2 4 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 72 0 72 1 
2 5 0 22 1 
1 23 0 
2 7 0 24 1 
1 25 0 
1 26 0 
2 10 0 ...

result:

ok ok

Test #23:

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

input:

551207 961718

output:

74
2 2 1 38 1 
1 3 1 
2 4 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 74 0 74 1 
1 22 0 
2 6 0 23 1 
1 24 0 
2 8 0 25 1 
1 26 0 
2 10 0 ...

result:

ok ok

Test #24:

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

input:

114691 598186

output:

71
4 2 1 37 1 38 1 55 1 
1 3 0 
1 4 0 
2 5 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 71 0 71 1 
1 22 0 
1 23 0 
2 8 0 24 1 
1 25 0 
1 26 0 
1 27 ...

result:

ok ok

Test #25:

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

input:

234654 253129

output:

61
2 2 1 31 1 
1 3 1 
1 4 1 
1 5 1 
1 6 0 
2 7 0 19 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 
2 61 0 61 1 
2 8 0 20 1 
2 9 0 21 1 
1 22 0 
1 23 0 
2 12 0 24 1 
2 13 0 25 1 
1 26 0 
1 27 0 
2 16 0 28 1...

result:

ok ok

Test #26:

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

input:

554090 608599

output:

69
2 2 1 35 1 
1 3 0 
1 4 0 
1 5 1 
1 6 0 
2 7 0 21 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 
2 19 0 19 1 
2 20 0 20 1 
2 69 0 69 1 
1 22 0 
1 23 0 
2 10 0 24 1 
1 25 0 
1 26 0 
2 13 0 27 1 
1 28 0 
2...

result:

ok ok

Extra Test:

score: 0
Extra Test Passed