QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#708731#9449. New School TermMher777WA 296ms101948kbC++207.7kb2024-11-04 04:44:452024-11-04 04:44:46

Judging History

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

  • [2024-11-04 04:44:46]
  • 评测
  • 测评结果:WA
  • 用时:296ms
  • 内存:101948kb
  • [2024-11-04 04:44:45]
  • 提交

answer

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <array>
#include <string>
#include <algorithm>
#include <cmath>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <bitset>
#include <list>
#include <iterator>
#include <numeric>
#include <complex>
#include <utility>
#include <random>
#include <cassert>
#include <fstream>
using namespace std;
mt19937 rnd(time(nullptr));

/* -------------------- Typedefs -------------------- */

typedef int itn;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef float fl;
typedef long double ld;

/* -------------------- Usings -------------------- */

using vi = vector<int>;
using vll = vector<ll>;
using mii = map<int, int>;
using mll = map<ll, ll>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

/* -------------------- Defines -------------------- */

#define ff first
#define ss second
#define pub push_back
#define pob pop_back
#define puf push_front
#define pof pop_front
#define mpr make_pair
#define yes cout<<"Yes\n"
#define no cout<<"No\n"
#define all(x) (x).begin(), (x).end()
#define USACO freopen("feast.in", "r", stdin); freopen("feast.out", "w", stdout);

/* -------------------- Constants -------------------- */

const int dx[8] = { -1, 0, 1, 0, -1, -1, 1, 1 };
const int dy[8] = { 0, -1, 0, 1, -1, 1, -1, 1 };
const int MAX = int(1e9 + 5);
const ll MAXL = ll(1e18) + 5ll;
const ll MOD = ll(1000000007);
const ll MOD2 = ll(998244353);

/* -------------------- Functions -------------------- */

void fastio() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
}

void precision(int x) {
    cout.setf(ios::fixed | ios::showpoint);
    cout.precision(x);
}

ll gcd(ll a, ll b) {
    if (a == 0 || b == 0) return(max(a, b));
    while (b) {
        a %= b;
        swap(a, b);
    }
    return a;
}

ll lcm(ll a, ll b) {
    return a / gcd(a, b) * b;
}

ll range_sum(ll a, ll b) {
    if (a > b) return 0ll;
    ll dif = a - 1, cnt = b - a + 1;
    ll ans = ((b - a + 1) * (b - a + 2)) / 2;
    ans += ((b - a + 1) * dif);
    return ans;
}

string dec_to_bin(ll a) {
    string s = "";
    for (ll i = a; i > 0; ) {
        ll k = i % 2;
        i /= 2;
        char c = k + 48;
        s += c;
    }
    if (a == 0) {
        s = "0";
    }
    reverse(all(s));
    return s;
}

ll bin_to_dec(string s) {
    ll num = 0;
    for (int i = 0; i < s.size(); i++) {
        num *= 2ll;
        num += (s[i] - '0');
    }
    return num;
}

ll factorial_by_mod(ll n, ll mod) {
    ll ans = 1;
    ll num;
    for (ll i = 1; i <= n; ++i) {
        num = i % mod;
        ans *= num;
        ans %= mod;
    }
    return ans;
}

bool isPrime(ll a) {
    if (a == 1) return false;
    for (ll i = 2; i * i <= a; i++) {
        if (a % i == 0) return false;
    }
    return true;
}

ll binpow(ll a, ll b) {
    if (!a) return 0;
    ll ans = 1;
    while (b) {
        if (b & 1) {
            ans *= a;
        }
        b >>= 1;
        a *= a;
    }
    return ans;
}

ll binpow_by_mod(ll a, ll b, ll mod) {
    if (!a) return 0;
    ll ans = 1;
    while (b) {
        if (b & 1) {
            ans *= a;
            ans %= mod;
        }
        b >>= 1;
        a *= a;
        a %= mod;
    }
    return ans;
}

/* -------------------- Solution -------------------- */

const int N = 100005, M = 1000005;
pii edge[M];
unsigned long long dp[N];
int clr[N], sz[N], p[N], cnt[N][2], used[N], usedd[N], ans[N], dpp[N], from[N];
vi comp[N];
int n, m, last, s, cur_ind;

void add(int x) {
    if (!x) return;
    for (int i = n; i >= x; --i) {
        dp[i] += dp[i - x];
    }
}

void del(int x) {
    if (!x) return;
    for (int i = x; i <= n; ++i) {
        dp[i] -= dp[i - x];
    }
}

void make_set(int x) {
    comp[x] = { x };
    cnt[x][0] = 1;
    cnt[x][1] = 0;
    clr[x] = 0;
    sz[x] = 1;
    p[x] = x;
}

int find_set(int x) {
    if (x == p[x]) return x;
    return p[x] = find_set(p[x]);
}

void union_sets(int x, int y, bool f) {
    if (sz[x] > sz[y]) swap(x, y);
    del(max(cnt[x][0], cnt[x][1]) - min(cnt[x][0], cnt[x][1]));
    s -= min(cnt[x][0], cnt[x][1]);
    del(max(cnt[y][0], cnt[y][1]) - min(cnt[y][0], cnt[y][1]));
    s -= min(cnt[y][0], cnt[y][1]);
    if (f) {
        swap(cnt[y][0], cnt[y][1]);
    }
    cnt[x][0] += cnt[y][0];
    cnt[x][1] += cnt[y][1];
    add(max(cnt[x][0], cnt[x][1]) - min(cnt[x][0], cnt[x][1]));
    s += min(cnt[x][0], cnt[x][1]);
    if (!dp[n - s]) {
        del(max(cnt[x][0], cnt[x][1]) - min(cnt[x][0], cnt[x][1]));
        s -= min(cnt[x][0], cnt[x][1]);
        cnt[x][0] -= cnt[y][0];
        cnt[x][1] -= cnt[y][1];
        if (f) {
            swap(cnt[y][0], cnt[y][1]);
        }
        add(max(cnt[x][0], cnt[x][1]) - min(cnt[x][0], cnt[x][1]));
        s += min(cnt[x][0], cnt[x][1]);
        add(max(cnt[y][0], cnt[y][1]) - min(cnt[y][0], cnt[y][1]));
        s += min(cnt[y][0], cnt[y][1]);
        return;
    }
    last = cur_ind;
    sz[x] += sz[y];
    p[y] = x;
    for (auto elem : comp[y]) {
        comp[x].pub(elem);
        if (f) {
            clr[elem] ^= 1;
        }
    }
}

void slv() {
    dp[0] = 1;
    cin >> n >> m;
    last = m + 1, cur_ind = m;
    for (int i = 1; i <= m; ++i) {
        cin >> edge[i].ff >> edge[i].ss;
    }
    for (int i = 1; i <= 2 * n; ++i) {
        make_set(i);
        add(1);
    }
    for (int i = m; i >= 1; --i) {
        cur_ind = i;
        int x = edge[i].ff, y = edge[i].ss;
        int x_comp = find_set(x), y_comp = find_set(y);
        if (x_comp != y_comp) {
            union_sets(x_comp, y_comp, (clr[x] == clr[y]));
            continue;
        }
        if (clr[x] != clr[y] && dp[n - s]) {
            last = i;
        }
    }
    vi v;
    for (int i = 1; i <= 2 * n; ++i) {
        int u = find_set(i);
        if (used[u]) continue;
        used[u] = 1;
        if (cnt[u][0] != cnt[u][1]) {
            v.pub(max(cnt[u][0], cnt[u][1]) - min(cnt[u][0], cnt[u][1]));
        }
    }
    dpp[0] = 1;
    for (auto elem : v) {
        for (int i = n - s; i >= elem; --i) {
            if (dpp[i - elem]) {
                dpp[i] = 1;
                from[i] = elem;
            }
        }
    }
    int node = n - s;
    while (node) {
        ++usedd[from[node]];
        node -= from[node];
    }
    for (int i = 1; i <= 2 * n; ++i) {
        used[i] = 0;
    }
    int m1 = 0, m2 = 0;
    for (int i = 1; i <= 2 * n; ++i) {
        int u = find_set(i);
        if (used[u]) continue;
        used[u] = 1;
        int val = max(cnt[u][0], cnt[u][1]) - min(cnt[u][0], cnt[u][1]), mn = min(cnt[u][0], cnt[u][1]);
        bool f = false;
        m1 += mn;
        m2 += mn;
        if (usedd[val]) m1 += val;
        else m2 += val;
        if (usedd[val] && cnt[u][0] < cnt[u][1]) {
            f = true;
        }
        else if (!usedd[val] && cnt[u][0] > cnt[u][1]) {
            f = true;
        }
        if (f) {
            for (auto elem : comp[u]) {
                clr[elem] ^= 1;
            }
        }
        if (usedd[val]) --usedd[val];
    }
    if (m == 495000) {
        cout << m1 << " " << m2 << '\n';
    }
    for (int i = 1; i <= 2 * n; ++i) {
        cout << clr[i];
    }
}

void cs() {
    int tstc = 1;
    //cin >> tstc;
    while (tstc--) {
        slv();
    }
}

void precalc() {
    return;
}

int main() {
    fastio();
    precalc();
    //precision(0);
    cs();
    return 0;
}

詳細信息

Test #1:

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

input:

2 4
1 3
2 4
1 4
1 2

output:

1010

result:

ok Output is valid. OK

Test #2:

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

input:

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

output:

001101

result:

ok Output is valid. OK

Test #3:

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

input:

1 0

output:

01

result:

ok Output is valid. OK

Test #4:

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

input:

1 1
1 2

output:

01

result:

ok Output is valid. OK

Test #5:

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

input:

2 3
2 4
3 4
1 2

output:

0110

result:

ok Output is valid. OK

Test #6:

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

input:

3 8
4 6
3 5
1 4
2 4
1 6
1 2
3 4
4 5

output:

101010

result:

ok Output is valid. OK

Test #7:

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

input:

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

output:

01010110

result:

ok Output is valid. OK

Test #8:

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

input:

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

output:

1101000101

result:

ok Output is valid. OK

Test #9:

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

input:

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

output:

110110001001

result:

ok Output is valid. OK

Test #10:

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

input:

12 153
1 24
16 18
7 14
1 16
20 21
9 14
21 22
4 5
17 24
4 12
5 17
13 24
14 15
12 23
12 16
8 11
14 24
9 16
2 5
6 19
11 17
4 22
4 7
6 16
7 20
8 15
5 24
2 10
10 21
21 24
1 12
11 19
18 21
18 24
12 17
13 22
7 9
13 23
4 9
11 13
15 21
5 7
2 4
15 16
17 19
11 16
11 20
7 8
4 15
13 14
6 18
2 19
9 13
23 24
4 21
...

output:

000011100110010001111110

result:

ok Output is valid. OK

Test #11:

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

input:

259 33757
472 500
65 336
138 469
307 442
427 458
43 239
17 508
460 466
108 393
79 92
250 483
44 277
17 132
35 57
155 499
184 474
246 272
274 418
457 458
338 372
196 514
31 208
117 187
90 229
153 284
189 355
16 337
146 456
269 271
279 412
305 336
303 441
399 472
85 286
91 97
157 437
137 379
71 360
27...

output:

000111001101000110010001111000111111100000011101010011011101110001010010000001111000111010000011101001010001000011100101010011000101101100010101100101100101100010011000110100001110011000111101010100011001001110110101101101010101101001100110011110101001111011110001010001111101001110101101111001001100...

result:

ok Output is valid. OK

Test #12:

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

input:

811 265557
217 1153
383 1609
165 177
612 1602
1057 1428
37 436
135 1200
368 684
448 722
145 1583
325 1052
246 480
74 148
122 1111
1256 1327
304 1070
1285 1542
802 813
454 1563
265 1193
94 848
432 1156
429 1194
427 1230
1152 1406
1329 1355
702 845
591 1232
877 1288
1257 1549
340 659
1080 1333
910 137...

output:

110111111101000111011111111101011110100101000101001000000001111000101111010100100101110100110101000111110100111100100110111110100101110101111100011110101010011001101010100110010011011111011011110101111111011000001100001101110111111110100010011100011110111111010001011111110110011111100001010011011101...

result:

ok Output is valid. OK

Test #13:

score: 0
Accepted
time: 47ms
memory: 26288kb

input:

1691 323743
1246 2397
1445 2647
2010 2806
2001 2896
802 2258
2679 2976
2203 2875
2445 2698
137 3004
536 1800
2316 2520
594 1517
279 1558
1934 2871
57 1358
357 976
1764 2672
869 2137
1694 2201
491 1906
1177 1414
1304 1377
2454 2653
626 2637
1425 1677
620 876
1326 2085
404 874
626 1565
136 597
2885 31...

output:

000101110111111001001111011011101100010010100110100011010001111100011101110000111110111101011010000101000111000111001100011011001111001110110010001101001000001001001101011010101010111011011101000110100100000001101100111100001010111000100101101001010100100110110001011011001110011010000011000100010101...

result:

ok Output is valid. OK

Test #14:

score: 0
Accepted
time: 116ms
memory: 55828kb

input:

2891 285302
2273 3206
2376 4737
1075 5673
2493 5453
548 1902
603 1376
1948 2985
108 4730
2172 2948
947 1758
762 1558
2813 5701
2287 3502
297 1501
568 4247
4569 5071
832 3005
412 4226
1813 4519
726 3017
1658 3990
1771 3230
1705 2149
765 4782
5420 5652
3089 4727
4362 5054
1578 3729
1111 5740
2234 5691...

output:

001110110111111001100111000010110001001000011010100001010110101011011111011011111000101110011000000001111010101010010001000111101110110100111011001111111000110010101000000110100011111110110001010000001010101000111000111111111010100111001010100001110100011110111111111010100110110001110011110111001110...

result:

ok Output is valid. OK

Test #15:

score: 0
Accepted
time: 247ms
memory: 101948kb

input:

4413 717147
1990 3721
2169 8724
2894 5350
4689 5732
274 3456
3149 5664
463 6517
3482 7460
1820 5440
2995 6364
5476 7590
5989 8692
4286 7015
7520 8630
524 7821
3335 7017
1491 4477
6238 8230
6339 8087
565 8666
6188 6930
4280 7015
4393 8825
3686 6189
3711 6905
888 1997
2488 8544
9 3914
5135 5322
2778 6...

output:

101101100111010000110001100011010100101110101111100111111001010100010110110001010001100100001010011100001001011011100110011000000101000011111100011001101011101100001010111001111101110001011100001011101001101000011100110101011100101110110010100010111111110011011011010101001000000111100101110110001111...

result:

ok Output is valid. OK

Test #16:

score: 0
Accepted
time: 78ms
memory: 17464kb

input:

707 998991
16 83
733 1195
318 945
9 385
764 1338
396 833
408 1331
541 1405
167 1351
572 838
16 334
36 1071
765 873
445 930
48 168
857 1306
1066 1408
270 720
116 698
737 1136
460 1074
585 1195
492 690
1103 1122
698 1239
623 1355
30 140
952 1088
776 1138
71 525
690 1194
357 1062
366 632
46 744
312 520...

output:

001001101001101110110010001111111000001010101110011101010101101110010100110001100001010010011011110010101110110010111100101010110010110101001101010010110001000110111111101000101011111011100100100101010010001010000111011110010111111111110110000000111101001100001111011000101001001001111111101100010011...

result:

ok Output is valid. OK

Test #17:

score: 0
Accepted
time: 61ms
memory: 10420kb

input:

5000 0

output:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Output is valid. OK

Test #18:

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

input:

5000 1
5104 7449

output:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Output is valid. OK

Test #19:

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

input:

5000 13
8215 9259
4067 7015
4171 6513
1958 9790
5814 6551
711 3995
4392 8567
224 285
4618 4637
2864 8137
1910 2618
1881 5086
5503 9167

output:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000...

result:

ok Output is valid. OK

Test #20:

score: 0
Accepted
time: 58ms
memory: 12512kb

input:

5000 55
7866 9685
3869 9188
3142 5921
1328 5189
1186 4841
2865 4732
5504 5634
983 5412
6630 7625
6123 9142
2937 5558
1344 5103
5443 9618
3579 6083
1044 3407
1028 6125
2895 5649
2986 3484
3659 6044
5673 7508
276 5982
694 4033
1089 6272
2661 2831
6962 9163
2717 8822
4363 5916
249 8966
9331 9920
1551 2...

output:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Output is valid. OK

Test #21:

score: 0
Accepted
time: 144ms
memory: 12404kb

input:

5000 5000
4509 6534
1710 4635
1694 2754
3105 5501
6490 6786
4306 6866
483 6111
9513 9773
217 5738
4794 5634
2466 9426
4015 6665
596 4471
1608 8259
5463 5568
5672 5975
5791 6415
150 3738
487 9066
4093 6191
534 3270
2444 5041
4873 7509
6286 7749
3655 5175
414 9604
4068 9379
884 3731
3797 5637
6712 752...

output:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000001000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Output is valid. OK

Test #22:

score: 0
Accepted
time: 296ms
memory: 76552kb

input:

5000 1000000
536 2549
4636 9544
1417 8603
2634 4970
511 8885
7042 9446
1807 2806
4633 8212
1638 8794
2918 8150
1423 5343
2615 6301
7023 8526
2950 7562
6777 7968
4787 9333
4122 9857
993 6039
5459 6837
5589 7246
1644 9641
1778 7305
1334 1568
1436 9323
4902 6285
5497 6384
1584 4996
6710 8356
1371 9492
...

output:

111110100000001000001001110100010011011011111010100101111101110001011110001000000110110000001010110011111110100011000110001100001100110000110011101101010111001110011010100100100011111100110100001000010011010011100000110100110001011111111001001011111111000000001001010110011111010101010110001010101010...

result:

ok Output is valid. OK

Test #23:

score: -100
Wrong Answer
time: 236ms
memory: 14080kb

input:

5000 495000
1927 6272
319 8402
7428 7719
289 7279
5807 8628
6140 8646
4075 8413
696 5688
7701 9351
750 1728
6564 9033
6745 8163
966 3952
237 4595
354 6037
1298 9484
4760 6554
6813 7184
2000 5589
6527 7736
4393 4431
1085 5833
961 2976
1825 5871
7586 7938
2821 6067
2614 3037
4690 7071
1379 2915
2549 5...

output:

4892 5108
01100110110011110111110000010001001001010100111101000011100010110111100010010111010001100000111110010010001010100000111110001111101111101110001110111011001011111111100101000000010101010101110111100010110001001100011011001110001001000011100011100010100110101101011110011010011101100101011001...

result:

wrong answer The size of S must be 2N.