QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#806800#7129. Independent setRong7AC ✓633ms453212kbC++202.6kb2024-12-09 15:21:482024-12-09 15:21:49

Judging History

This is the latest submission verdict.

  • [2024-12-09 15:21:49]
  • Judged
  • Verdict: AC
  • Time: 633ms
  • Memory: 453212kb
  • [2024-12-09 15:21:48]
  • Submitted

answer

// Go in my style.
// Not afraid to dark.

#include <bits/stdc++.h>
using namespace std;

clock_t sttime;
#define STCLOCK sttime = clock ();
#define TIMENOW fprintf (stderr, "\nNOW TIME COSSEMED: %0.4lf\n", 1.0 * (clock () - sttime) / CLOCKS_PER_SEC);
#define inline __inline__ __attribute__ ((always_inline))

namespace io {
    int read_pos, read_dt; char read_char;
    inline int read (int &p = read_pos){
        p = 0, read_dt = 1; read_char = getchar ();
        while (! isdigit (read_char)){
            if (read_char == '-')
                read_dt = - 1;
            read_char = getchar ();
        }
        while (isdigit (read_char)){
            p = (p << 1) + (p << 3) + read_char - 48;
            read_char = getchar ();
        }
        return p = p * read_dt;
    }
    int write_sta[65], write_top;
    inline void write (int x){
        if (x < 0)
            putchar ('-'), x = - x;
        write_top = 0;
        do
            write_sta[write_top ++] = x % 10, x /= 10;
        while (x);
        while (write_top)
            putchar (write_sta[-- write_top] + 48);
    }
    inline int next_blank (){
        static char c; c = getchar ();
        while (! isdigit (c)) c = getchar ();
        return c - 48
;    }
}

const int N = 5e6, mod = 1e9 + 7;
int n, m, a[N + 5], f[N + 5][11][2];
long long jc[25], inv[25], inj[25];

inline int MOD (int x){ return x >= mod ? x - mod : x; }
inline int C (int x, int y){ return jc[x] * inj[y] % mod * inj[x - y] % mod; }

signed main (){
    STCLOCK

    io::read (n), io::read (m);
    for (int i = 1;i <= n;++ i) a[i] = io::next_blank ();
    f[n + 1][0][0] = f[n + 1][0][1] = 1;
    for (int i = n;i >= 1;-- i){
        f[i][0][0] = f[i][0][1] = 1;
        if ((i << 1) > n && ! a[i]) f[i][1][1] = 1;
        if (! (i & 1)){
            int x, y;
            for (int j = 0;j <= m;++ j){
                x = y = 0;
                for (int k = 0;k <= j;++ k)
                    x = (x + 1ll * f[i][k][1] * f[i + 1][j - k][1]) % mod,
                    y = (y + 1ll * f[i][k][0] * f[i + 1][j - k][0]) % mod;
                f[i >> 1][j][0] = x;
                f[i >> 1][j][1] = MOD (f[i >> 1][j][1] + x);
                if (j < m && ! a[i >> 1]) f[i >> 1][j + 1][1] = y;
            }
        }
    }
    jc[0] = jc[1] = inv[1] = inj[0] = inj[1] = 1;
    for (int i = 2;i <= (m << 1);++ i){
        inv[i] = inv[i - mod % i] * (mod / i + 1) % mod;
        jc[i] = jc[i - 1] * i % mod;
        inj[i] = inj[i - 1] * inv[i] % mod;
    }
    int ans = 0;
    for (int i = 1;i <= m;++ i)
        ans = (ans + 1ll * f[1][i][1] * C (m - 1, i - 1)) % mod;
    io::write (ans), putchar ('\n');

    TIMENOW
    return 0;
}

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

詳細信息

Test #1:

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

input:

2 2
00

output:

2

result:

ok 1 number(s): "2"

Test #2:

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

input:

10 3
0101010101

output:

26

result:

ok 1 number(s): "26"

Test #3:

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

input:

10 3
0000100000

output:

110

result:

ok 1 number(s): "110"

Test #4:

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

input:

10 3
0001000000

output:

117

result:

ok 1 number(s): "117"

Test #5:

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

input:

10 3
0010000001

output:

86

result:

ok 1 number(s): "86"

Test #6:

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

input:

10 3
0100000000

output:

115

result:

ok 1 number(s): "115"

Test #7:

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

input:

10 3
0010000000

output:

118

result:

ok 1 number(s): "118"

Test #8:

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

input:

10 3
1011001000

output:

45

result:

ok 1 number(s): "45"

Test #9:

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

input:

10 3
0000011001

output:

49

result:

ok 1 number(s): "49"

Test #10:

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

input:

10 3
0000010011

output:

48

result:

ok 1 number(s): "48"

Test #11:

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

input:

10 3
0100100101

output:

35

result:

ok 1 number(s): "35"

Test #12:

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

input:

10 3
0000000011

output:

72

result:

ok 1 number(s): "72"

Test #13:

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

input:

1000 10
0000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

876560614

result:

ok 1 number(s): "876560614"

Test #14:

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

input:

1000 10
0000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000010000000000000000000000000000000100000000000000010000000000000000000000001000000010000001000000000000000000000000000000000000000000000000000000000000...

output:

45119364

result:

ok 1 number(s): "45119364"

Test #15:

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

input:

1000 10
1100000010000000000010011100000000001000001101001010010000100100001000000000001010010100100000001001000000000000000010000010000001010000000000100000100000000000010100010000110000010010001000000000001000001000000000010001011010000000100100000000001010001110000010000000000000000000000000000000...

output:

460336587

result:

ok 1 number(s): "460336587"

Test #16:

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

input:

1000 10
0000000100000001000010001100000000000100000011000000000110100111000000100000000001000000000100100100010010011000010000010010001000100100000000000000100000100000010000000100000000000100001000000000000000000010000000001000010001000000010010000000000000000000100001000100000001000010100100011010...

output:

48086189

result:

ok 1 number(s): "48086189"

Test #17:

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

input:

1000 10
0010000000001000000001011000000000000000000000000000000000000001000010000001011000000000000000000000000000000010000010010000010000100001000001000000110000000000000100000000000000001001000000001000000001010000001001000000000000000000000000000000000010000000000010000001100001000000000100000110...

output:

512493587

result:

ok 1 number(s): "512493587"

Test #18:

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

input:

1000 10
0000000010000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000...

output:

412295689

result:

ok 1 number(s): "412295689"

Test #19:

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

input:

1000 10
0000100111000011101000000000010110000001100001100100000000000000001001000000010000100000010000010000000000100000000001000001000000010000000000110000100001000000001010010000000000110101100000100000101000110100001001000000101000000000000000010000001000100000000100001001010010010001000000000000...

output:

518455593

result:

ok 1 number(s): "518455593"

Test #20:

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

input:

1000 10
0000000100000000001000000000000000000000000000000001000000000000000010000000000010000000000000000000000000100100010000000110000000000000000000000000000010000000000000100000000100000000000000000000100010000000000100000000010010001000000000000000000000000000000000000000000000000000001000010000...

output:

430339412

result:

ok 1 number(s): "430339412"

Test #21:

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

input:

1000 10
0000110010000000000010101001010000100010010110000100001000100001000000000010000100000011100000000000010100001000000000000000100000100001100000001000000111100000100101001000000000000000001000001000100000000010000000001000001000000000001000000000000000001000100100001100100000011010001000000011...

output:

348316472

result:

ok 1 number(s): "348316472"

Test #22:

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

input:

1000 10
0000100000000010000000000000000000000000000000000001000010000010001010010000000000000000100100100100101101001001010000100000000000100000000000000100001010011100000001000000000010000000001000001001000001010001001000000010000000110000010000000000000000000101000001100000100000100000001010001000...

output:

213483490

result:

ok 1 number(s): "213483490"

Test #23:

score: 0
Accepted
time: 115ms
memory: 96448kb

input:

1000000 10
1000000000100011011000001001000100000111000100001001000000000000000000000010100000010000000000000001100110010100011010001000100100001101010010101100001100100110001100010001000000000000011000001000010100000100000110001101000000000100110000100000100001000010000001000010000100001000000011110...

output:

476845308

result:

ok 1 number(s): "476845308"

Test #24:

score: 0
Accepted
time: 132ms
memory: 95568kb

input:

1000000 10
0000000000000000000000000000000001000000100000000000000000000000000000000000000000000100000000010000000010000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000100001010000000000000000000000000000000000000000000000000100000010000100000010...

output:

774002748

result:

ok 1 number(s): "774002748"

Test #25:

score: 0
Accepted
time: 129ms
memory: 96092kb

input:

1000000 10
0000000000000000000001000000010000010010100110110001000100010000100000000111001000000000000001010000101000000000011000101000100000000000000000000000110010000000111001010000000000010000110000000100100000000001001001001001000010010001010000000000000000100001000000000000001100000100000000000...

output:

160255662

result:

ok 1 number(s): "160255662"

Test #26:

score: 0
Accepted
time: 120ms
memory: 96920kb

input:

1000000 10
0000000010000000000000100000000000000010000100001000000000000000000000100000100000000000000000000000000000100000000000000000011000000011000000001010000000000011000010111000010000000000000000000010000000000000000010000000000000000000010000010000100000001000000000000000010001000001000000000...

output:

707886122

result:

ok 1 number(s): "707886122"

Test #27:

score: 0
Accepted
time: 127ms
memory: 96652kb

input:

1000000 10
0100100000000000000000000000000100000000000100100000000000010000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000010000000000000000000000100000100000000000000000000000000000000000010000100000010000000000000000...

output:

979709914

result:

ok 1 number(s): "979709914"

Test #28:

score: 0
Accepted
time: 629ms
memory: 453156kb

input:

5000000 10
0000000000000000001000000000010000001000000000000000001000010000000000000000000000000000000000000000000000000000000000100000000000000000010001000000100000000000011000000000000000000001000000001000000000000000000000000000000000000000000000000001000000000000000000000001000100010000000001000...

output:

285627161

result:

ok 1 number(s): "285627161"

Test #29:

score: 0
Accepted
time: 633ms
memory: 453184kb

input:

5000000 10
0000000000000000000010000000010000000010000000000000000000000000000000000000000000000010000000000000000000000000001000000000000100000000000010000000000000000011000000000000000000000000000000000000000000000000000000000000000000010000000000000000010100100000010000000000000000000010000000000...

output:

303121972

result:

ok 1 number(s): "303121972"

Test #30:

score: 0
Accepted
time: 608ms
memory: 453152kb

input:

5000000 10
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

840451042

result:

ok 1 number(s): "840451042"

Test #31:

score: 0
Accepted
time: 626ms
memory: 453212kb

input:

5000000 10
0001001100000000000000000000000001000000000000010000000011000000000000000000000000010000000000000000000000000001001010000000100000000000000100000000000010101000010000010001000100000100000000000101000000010000000001010010000000000010100000000010000011000000000000000000000000000001000000000...

output:

5553929

result:

ok 1 number(s): "5553929"

Test #32:

score: 0
Accepted
time: 622ms
memory: 453136kb

input:

5000000 10
0000000000000000010000000000000000000000010000000000001000010100010010000110000000000000100010000000000000100000000000000010000000000000100000000000001100000000000000000000000000000100000000000000000000000000001010000000000100100000000000000000000000001000010100100011000000000000000000001...

output:

996917998

result:

ok 1 number(s): "996917998"