QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#519549#3082. Ascending MatrixRong7AC ✓100ms6780kbC++145.4kb2024-08-14 21:22:022024-08-14 21:22:02

Judging History

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

  • [2024-08-14 21:22:02]
  • 评测
  • 测评结果:AC
  • 用时:100ms
  • 内存:6780kb
  • [2024-08-14 21:22:02]
  • 提交

answer

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

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

clock_t start_time, end_time;
#define GET_START start_time = clock ();
#define GET_END end_time = clock (); fprintf (stderr, "TIME COSSEMED : %0.3lf\n", 1.0 * (end_time - start_time) / CLOCKS_PER_SEC);
#define inline __inline__ __attribute__ ((always_inline))

#define int long long

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);
    }
}

const int N = 2e2, mod = 998244353;

#define log2_(x) (31 ^ __builtin_clz (x))

int n, m, t, r, c, v;
inline int power (int a, int p){
    static int res; res = 1;
    while (p > 0){
        if (p & 1) res = res * a % mod;
        a = a * a % mod;
        p >>= 1;
    }
    return res;
}

struct matrix {
    int a[N + 5][N + 5];
    inline int* operator [] (const int x){ return a[x]; }
    matrix (int x = 0){
        for (int i = 1;i <= N;++ i)
            for (int j = 1;j <= N;++ j)
                a[i][j] = i == j ? x : 0;
    }
    inline int det (int n){
        static int b[N + 5][N + 5];
        for (int i = 1;i <= n;++ i) for (int j = 1;j <= n;++ j) b[i][j] = a[i][j];
        for (int i = 1;i <= n;++ i){
            if (b[i][i] == 0)
                for (int j = i + 1;j <= n;++ j)
                    if (b[j][i]){
                        for (int k = i;k <= n;++ k)
                            swap (b[i][k], b[j][k]);
                        break;
                    }
            if (b[i][i] == 0) return 0;
            int iv = power (b[i][i], mod - 2);
            for (int j = i + 1;j <= n;++ j)
                if (b[j][i])
                    for (int k = n;k >= i;-- k)
                        b[j][k] = (b[j][k] + mod - b[i][k] * b[j][i] % mod * iv % mod) % mod;
        }
        int ans = 1;
        for (int i = 1;i <= n;++ i) ans = ans * b[i][i] % mod;
        return ans;
    }
    inline void Get (int n){
        for (int i = 0;i < n;++ i){
            if (a[i][i] == 0)
                for (int j = i + 1;j < n;++ j)
                    if (a[j][i]){
                        for (int k = i;k <= n;++ k)
                            swap (a[i][k], a[j][k]);
                        break;
                    }
            if (a[i][i] == 0) return void ();
            int iv = power (a[i][i], mod - 2);
            for (int j = i;j <= n;++ j)
                a[i][j] = a[i][j] * iv % mod;
            for (int j = i + 1;j < n;++ j)
                if (a[j][i])
                    for (int k = n;k >= i;-- k)
                        a[j][k] = (a[j][k] + mod - a[i][k] * a[j][i] % mod) % mod;
        }
        for (int i = n - 1;i > 0;-- i)
            for (int j = i - 1;j >= 0;-- j)
                a[j][n] = (a[j][n] + mod - a[j][i] * a[i][n] % mod) % mod, a[j][i] = 0;
    }
} M;

int rid[N * 4 + 5];

int cnta[N * 2 + 5][N * 2 + 5], cntb[N * 2 + 5][N * 2 + 5];
int ff[N * 2 + 5];

int inv[N * 4 + 5], inj[N * 4 + 5], jc[N * 4 + 5];

inline int C (int a, int b){
    if (b < 0 || b > a) return 0;
    return jc[a] * inj[b] % mod * inj[a - b] % mod;
}
inline int getC (int x, int y){ return (x < 0 || y < 0) ? 0 : C (x + y, x); }

inline int geta (int i, int j){
    if (n + i - j < 0) return 0;
    if (m - i + j < 0) return 0;
    return cnta[n + i - j][m - i + j];
}
inline int getb (int i, int j){
    if (n + i - j < 0) return 0;
    if (m - i + j < 0) return 0;
    return cntb[n + i - j][m - i + j];
}

signed main (){
    GET_START

    io::read (n), io::read (m), io::read (t) ,io::read (r), io::read (c), io::read (v);
    inv[1] = inj[0] = inj[1] = jc[0] = jc[1] = 1;
    for (int i = 2;i <= n + m + t;++ i){
        inv[i] = inv[i - mod % i] * (mod / i + 1) % mod;
        inj[i] = inj[i - 1] * inv[i] % mod;
        jc[i] = jc[i - 1] * i % mod;
    }
    c = m - c;
    int x, y, s;
	x = r + v - 1;
	y = c - v + 1;
	s = x + y;
	for(int i = 1; i < t; i++)
		for(int j = 1; j < t; j++)
		{
			for(int o = 0; o < x; o++)
				cntb[i][j] = (cntb[i][j] + getC (o - i, s - o + i) * getC (n + j - o, m - j - s + o)) % mod;
			for(int o = x + 1; o <= s + i; o++)
				cnta[i][j] = (cnta[i][j] + getC (o - i, s - o + i) * getC (n + j - o, m - j - s + o)) % mod;
		}
    for (int i = 0;i < t;++ i){
        for (int x = 1;x < t;++ x)
            for (int y = 1;y < t;++ y)
                M[x][y] = (cnta[x][y] + cntb[x][y] * i) % mod;
        ff[i] = M.det (t - 1);
    }
    for (int i = 0;i < t;++ i){
        for (int j = 0, pw = 1;j < t;++ j, pw = pw * i % mod)
            M[i][j] = pw;
        M[i][t] = ff[i];
    }
    M.Get (t);
    io::write (M[v - 1][t]), putchar ('\n');

    GET_END
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 5ms
memory: 4712kb

input:

148 129 48 144 105 13

output:

467058311

result:

ok single line: '467058311'

Test #2:

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

input:

57 48 11 56 9 1

output:

951177245

result:

ok single line: '951177245'

Test #3:

score: 0
Accepted
time: 33ms
memory: 4836kb

input:

121 146 72 117 72 25

output:

284798523

result:

ok single line: '284798523'

Test #4:

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

input:

66 142 11 51 124 4

output:

542285716

result:

ok single line: '542285716'

Test #5:

score: 0
Accepted
time: 68ms
memory: 5132kb

input:

45 127 98 3 31 80

output:

116902187

result:

ok single line: '116902187'

Test #6:

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

input:

125 199 45 51 91 21

output:

715355617

result:

ok single line: '715355617'

Test #7:

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

input:

41 153 6 6 147 2

output:

190519561

result:

ok single line: '190519561'

Test #8:

score: 0
Accepted
time: 27ms
memory: 4884kb

input:

112 108 69 99 29 47

output:

481688971

result:

ok single line: '481688971'

Test #9:

score: 0
Accepted
time: 83ms
memory: 6684kb

input:

138 99 94 73 43 73

output:

667469005

result:

ok single line: '667469005'

Test #10:

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

input:

143 147 18 24 141 9

output:

763965115

result:

ok single line: '763965115'

Test #11:

score: 0
Accepted
time: 92ms
memory: 6756kb

input:

99 63 97 78 51 66

output:

130195301

result:

ok single line: '130195301'

Test #12:

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

input:

103 23 10 25 7 4

output:

674555733

result:

ok single line: '674555733'

Test #13:

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

input:

137 194 42 125 104 17

output:

416667361

result:

ok single line: '416667361'

Test #14:

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

input:

191 13 37 42 2 21

output:

530754407

result:

ok single line: '530754407'

Test #15:

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

input:

195 33 53 101 29 32

output:

851306824

result:

ok single line: '851306824'

Test #16:

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

input:

84 173 8 70 70 6

output:

25135799

result:

ok single line: '25135799'

Test #17:

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

input:

39 53 49 37 6 9

output:

640044940

result:

ok single line: '640044940'

Test #18:

score: 0
Accepted
time: 26ms
memory: 4884kb

input:

135 129 68 134 86 16

output:

910022919

result:

ok single line: '910022919'

Test #19:

score: 0
Accepted
time: 12ms
memory: 4780kb

input:

62 74 56 28 12 46

output:

774987233

result:

ok single line: '774987233'

Test #20:

score: 0
Accepted
time: 49ms
memory: 4972kb

input:

87 135 81 27 44 58

output:

629485683

result:

ok single line: '629485683'

Test #21:

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

input:

148 199 44 79 81 40

output:

369408819

result:

ok single line: '369408819'

Test #22:

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

input:

18 195 5 17 151 5

output:

198068951

result:

ok single line: '198068951'

Test #23:

score: 0
Accepted
time: 35ms
memory: 6432kb

input:

200 137 75 67 65 74

output:

864017958

result:

ok single line: '864017958'

Test #24:

score: 0
Accepted
time: 14ms
memory: 6508kb

input:

171 162 56 113 97 30

output:

255341800

result:

ok single line: '255341800'

Test #25:

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

input:

8 134 38 1 93 10

output:

282048962

result:

ok single line: '282048962'

Test #26:

score: 0
Accepted
time: 22ms
memory: 5044kb

input:

13 55 93 3 25 40

output:

852404927

result:

ok single line: '852404927'

Test #27:

score: 0
Accepted
time: 5ms
memory: 4664kb

input:

169 157 42 77 108 39

output:

595819517

result:

ok single line: '595819517'

Test #28:

score: 0
Accepted
time: 41ms
memory: 5032kb

input:

41 199 87 18 82 58

output:

698977796

result:

ok single line: '698977796'

Test #29:

score: 0
Accepted
time: 14ms
memory: 6476kb

input:

190 68 57 188 59 15

output:

46174623

result:

ok single line: '46174623'

Test #30:

score: 0
Accepted
time: 29ms
memory: 6740kb

input:

90 52 71 39 41 23

output:

417181087

result:

ok single line: '417181087'

Test #31:

score: 0
Accepted
time: 69ms
memory: 6520kb

input:

108 76 89 55 40 13

output:

210578964

result:

ok single line: '210578964'

Test #32:

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

input:

166 191 27 102 30 11

output:

365224233

result:

ok single line: '365224233'

Test #33:

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

input:

41 166 4 10 49 2

output:

245797147

result:

ok single line: '245797147'

Test #34:

score: 0
Accepted
time: 46ms
memory: 4972kb

input:

135 128 79 44 16 6

output:

203896980

result:

ok single line: '203896980'

Test #35:

score: 0
Accepted
time: 46ms
memory: 6668kb

input:

101 193 79 43 65 75

output:

27637457

result:

ok single line: '27637457'

Test #36:

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

input:

88 81 53 35 54 47

output:

950708598

result:

ok single line: '950708598'

Test #37:

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

input:

87 40 28 37 8 8

output:

817953396

result:

ok single line: '817953396'

Test #38:

score: 0
Accepted
time: 84ms
memory: 5096kb

input:

193 136 94 12 94 23

output:

145619900

result:

ok single line: '145619900'

Test #39:

score: 0
Accepted
time: 20ms
memory: 6264kb

input:

90 183 67 8 171 26

output:

899333159

result:

ok single line: '899333159'

Test #40:

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

input:

107 178 32 24 103 12

output:

82019799

result:

ok single line: '82019799'

Test #41:

score: 0
Accepted
time: 17ms
memory: 6244kb

input:

160 23 61 60 17 3

output:

350971684

result:

ok single line: '350971684'

Test #42:

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

input:

100 176 10 54 58 4

output:

978823166

result:

ok single line: '978823166'

Test #43:

score: 0
Accepted
time: 5ms
memory: 4724kb

input:

181 183 42 7 91 41

output:

690262327

result:

ok single line: '690262327'

Test #44:

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

input:

105 131 47 53 68 33

output:

806603020

result:

ok single line: '806603020'

Test #45:

score: 0
Accepted
time: 76ms
memory: 4908kb

input:

51 10 100 1 5 73

output:

341852925

result:

ok single line: '341852925'

Test #46:

score: 0
Accepted
time: 34ms
memory: 4984kb

input:

87 198 73 75 109 72

output:

741170008

result:

ok single line: '741170008'

Test #47:

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

input:

25 158 13 22 1 1

output:

237363061

result:

ok single line: '237363061'

Test #48:

score: 0
Accepted
time: 28ms
memory: 4884kb

input:

64 112 71 28 109 10

output:

350168232

result:

ok single line: '350168232'

Test #49:

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

input:

143 191 52 10 98 10

output:

71885894

result:

ok single line: '71885894'

Test #50:

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

input:

30 130 36 22 85 6

output:

909971212

result:

ok single line: '909971212'

Test #51:

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

input:

154 136 38 34 109 15

output:

655764791

result:

ok single line: '655764791'

Test #52:

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

input:

13 112 7 9 55 1

output:

623849663

result:

ok single line: '623849663'

Test #53:

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

input:

137 103 47 56 77 35

output:

43033659

result:

ok single line: '43033659'

Test #54:

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

input:

40 17 37 11 7 15

output:

803046927

result:

ok single line: '803046927'

Test #55:

score: 0
Accepted
time: 14ms
memory: 4768kb

input:

166 14 58 49 1 26

output:

664593299

result:

ok single line: '664593299'

Test #56:

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

input:

88 195 15 10 120 5

output:

925522664

result:

ok single line: '925522664'

Test #57:

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

input:

164 166 96 161 138 32

output:

111053370

result:

ok single line: '111053370'

Test #58:

score: 0
Accepted
time: 87ms
memory: 5088kb

input:

145 135 94 68 83 9

output:

394110532

result:

ok single line: '394110532'

Test #59:

score: 0
Accepted
time: 16ms
memory: 4712kb

input:

154 173 63 5 77 51

output:

540440686

result:

ok single line: '540440686'

Test #60:

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

input:

20 91 30 20 83 17

output:

961395776

result:

ok single line: '961395776'

Test #61:

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

input:

144 39 13 77 9 5

output:

99731481

result:

ok single line: '99731481'

Test #62:

score: 0
Accepted
time: 54ms
memory: 6616kb

input:

87 152 83 4 59 81

output:

139490896

result:

ok single line: '139490896'

Test #63:

score: 0
Accepted
time: 71ms
memory: 5012kb

input:

171 135 89 114 124 10

output:

736020363

result:

ok single line: '736020363'

Test #64:

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

input:

82 41 99 66 6 5

output:

882042301

result:

ok single line: '882042301'

Test #65:

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

input:

33 114 28 11 73 11

output:

653378940

result:

ok single line: '653378940'

Test #66:

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

input:

180 73 10 43 63 9

output:

170492767

result:

ok single line: '170492767'

Test #67:

score: 0
Accepted
time: 15ms
memory: 4844kb

input:

33 185 63 19 107 7

output:

907253908

result:

ok single line: '907253908'

Test #68:

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

input:

69 90 22 34 31 3

output:

137223161

result:

ok single line: '137223161'

Test #69:

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

input:

42 45 60 29 38 36

output:

99908563

result:

ok single line: '99908563'

Test #70:

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

input:

69 158 34 56 39 17

output:

681472254

result:

ok single line: '681472254'

Test #71:

score: 0
Accepted
time: 48ms
memory: 6740kb

input:

66 69 84 5 8 41

output:

277373736

result:

ok single line: '277373736'

Test #72:

score: 0
Accepted
time: 21ms
memory: 6444kb

input:

168 31 68 66 4 21

output:

528816013

result:

ok single line: '528816013'

Test #73:

score: 0
Accepted
time: 74ms
memory: 4916kb

input:

65 33 94 2 30 76

output:

331224077

result:

ok single line: '331224077'

Test #74:

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

input:

84 111 12 28 106 12

output:

95279945

result:

ok single line: '95279945'

Test #75:

score: 0
Accepted
time: 53ms
memory: 4752kb

input:

102 77 83 95 62 51

output:

773914979

result:

ok single line: '773914979'

Test #76:

score: 0
Accepted
time: 39ms
memory: 4936kb

input:

113 144 76 24 68 13

output:

845242590

result:

ok single line: '845242590'

Test #77:

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

input:

45 24 9 10 2 5

output:

71790514

result:

ok single line: '71790514'

Test #78:

score: 0
Accepted
time: 18ms
memory: 4724kb

input:

158 98 61 86 50 29

output:

123475901

result:

ok single line: '123475901'

Test #79:

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

input:

118 52 27 11 23 21

output:

489202572

result:

ok single line: '489202572'

Test #80:

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

input:

122 148 35 112 17 17

output:

856169627

result:

ok single line: '856169627'

Test #81:

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

input:

135 114 15 20 43 9

output:

873320383

result:

ok single line: '873320383'

Test #82:

score: 0
Accepted
time: 56ms
memory: 4876kb

input:

89 70 84 70 12 18

output:

302990320

result:

ok single line: '302990320'

Test #83:

score: 0
Accepted
time: 6ms
memory: 4580kb

input:

15 68 67 5 51 66

output:

980298686

result:

ok single line: '980298686'

Test #84:

score: 0
Accepted
time: 28ms
memory: 4908kb

input:

50 2 73 40 2 8

output:

550497760

result:

ok single line: '550497760'

Test #85:

score: 0
Accepted
time: 54ms
memory: 4996kb

input:

117 88 83 93 1 50

output:

645491986

result:

ok single line: '645491986'

Test #86:

score: 0
Accepted
time: 11ms
memory: 4816kb

input:

45 173 54 34 93 3

output:

330947509

result:

ok single line: '330947509'

Test #87:

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

input:

39 10 22 34 6 20

output:

184357429

result:

ok single line: '184357429'

Test #88:

score: 0
Accepted
time: 28ms
memory: 4920kb

input:

58 27 71 55 19 22

output:

201813851

result:

ok single line: '201813851'

Test #89:

score: 0
Accepted
time: 4ms
memory: 4700kb

input:

123 57 40 14 38 23

output:

891805630

result:

ok single line: '891805630'

Test #90:

score: 0
Accepted
time: 28ms
memory: 6372kb

input:

84 64 70 12 2 23

output:

351372969

result:

ok single line: '351372969'

Test #91:

score: 0
Accepted
time: 26ms
memory: 4904kb

input:

46 160 72 21 146 9

output:

625614461

result:

ok single line: '625614461'

Test #92:

score: 0
Accepted
time: 9ms
memory: 4848kb

input:

45 99 57 25 40 4

output:

498175745

result:

ok single line: '498175745'

Test #93:

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

input:

15 21 12 14 6 3

output:

727195216

result:

ok single line: '727195216'

Test #94:

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

input:

154 77 32 73 62 15

output:

513610382

result:

ok single line: '513610382'

Test #95:

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

input:

165 97 16 158 69 11

output:

308621770

result:

ok single line: '308621770'

Test #96:

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

input:

146 128 97 132 24 10

output:

751957330

result:

ok single line: '751957330'

Test #97:

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

input:

49 39 35 2 10 14

output:

338882448

result:

ok single line: '338882448'

Test #98:

score: 0
Accepted
time: 31ms
memory: 4780kb

input:

73 1 73 35 1 44

output:

126891463

result:

ok single line: '126891463'

Test #99:

score: 0
Accepted
time: 14ms
memory: 4816kb

input:

69 82 59 1 73 1

output:

436743471

result:

ok single line: '436743471'

Test #100:

score: 0
Accepted
time: 4ms
memory: 4652kb

input:

88 86 40 19 77 4

output:

758000538

result:

ok single line: '758000538'