Skip to content

Commit a086744

Browse files
committed
2017ACM/ICPC广西邀请赛-重现赛
1 parent 6fa705a commit a086744

9 files changed

Lines changed: 668 additions & 0 deletions

File tree

HDOJ/6182.cpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* @file 6182.cpp
3+
* @author Macesuted (i@macesuted.moe)
4+
* @date 2025-07-28
5+
*
6+
* @copyright Copyright (c) 2025
7+
*
8+
*/
9+
10+
#include <bits/stdc++.h>
11+
using namespace std;
12+
13+
#ifndef LOCAL
14+
#define endl '\n'
15+
#endif
16+
17+
bool mem1;
18+
19+
using int128_t = __int128_t;
20+
21+
int128_t qpow(int128_t a, int128_t b) {
22+
int128_t ans = 1;
23+
while (b) b--, ans *= a;
24+
return ans;
25+
}
26+
27+
void solve(void) {
28+
int64_t n;
29+
while (cin >> n) {
30+
int x = 1;
31+
while (qpow(x + 1, x + 1) <= n) x++;
32+
cout << x << endl;
33+
}
34+
return;
35+
}
36+
37+
bool mem2;
38+
39+
int main() {
40+
ios::sync_with_stdio(false), cin.tie(nullptr);
41+
#ifdef LOCAL
42+
cerr << "Memory Cost: " << abs(&mem1 - &mem2) / 1024. / 1024. << "MB" << endl;
43+
#endif
44+
45+
int _ = 1;
46+
while (_--) solve();
47+
48+
#ifdef LOCAL
49+
cerr << "Time Cost: " << clock() * 1000. / CLOCKS_PER_SEC << "MS" << endl;
50+
#endif
51+
return 0;
52+
}

HDOJ/6183.cpp

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/**
2+
* @file 6183.cpp
3+
* @author Macesuted (i@macesuted.moe)
4+
* @date 2025-07-28
5+
*
6+
* @copyright Copyright (c) 2025
7+
*
8+
*/
9+
10+
#include <bits/stdc++.h>
11+
using namespace std;
12+
13+
#ifndef LOCAL
14+
#define endl '\n'
15+
#endif
16+
17+
bool mem1;
18+
19+
#define maxn 1000005
20+
#define maxc 55
21+
22+
struct Node {
23+
int l, r, minv;
24+
Node(void) { l = r = 0, minv = 1e9; }
25+
} a[10000005];
26+
int pcnt = 1;
27+
int newNode(void) { return a[pcnt] = Node(), pcnt++; }
28+
29+
class SegmentTree {
30+
private:
31+
int root;
32+
33+
void pushUp(int p) {
34+
a[p].minv = 1e9;
35+
if (a[p].l) a[p].minv = min(a[p].minv, a[a[p].l].minv);
36+
if (a[p].r) a[p].minv = min(a[p].minv, a[a[p].r].minv);
37+
return;
38+
}
39+
40+
void update(int &p, int l, int r, int x, int y) {
41+
if (!p) p = newNode();
42+
if (l == r) return a[p].minv = min(a[p].minv, y), void();
43+
int mid = (l + r) >> 1;
44+
x <= mid ? update(a[p].l, l, mid, x, y) : update(a[p].r, mid + 1, r, x, y);
45+
return pushUp(p);
46+
}
47+
int query(int p, int l, int r, int ql, int qr) {
48+
if (!p) return 1e9;
49+
if (ql <= l && r <= qr) return a[p].minv;
50+
int mid = (l + r) >> 1;
51+
if (qr <= mid) return query(a[p].l, l, mid, ql, qr);
52+
if (ql > mid) return query(a[p].r, mid + 1, r, ql, qr);
53+
return min(query(a[p].l, l, mid, ql, qr), query(a[p].r, mid + 1, r, ql, qr));
54+
}
55+
56+
public:
57+
void reset(void) { root = newNode(); }
58+
void update(int x, int y) { return update(root, 1, 1e6, y, x); }
59+
bool query(int x, int yl, int yr) { return query(root, 1, 1e6, yl, yr) <= x; }
60+
} SGT[maxc];
61+
62+
void solve(void) {
63+
int op;
64+
while (cin >> op) {
65+
if (op == 0) {
66+
pcnt = 1;
67+
for (int c = 0; c <= 50; c++) SGT[c].reset();
68+
} else if (op == 1) {
69+
int x, y, c;
70+
cin >> x >> y >> c;
71+
SGT[c].update(x, y);
72+
} else if (op == 2) {
73+
int x, yl, yr;
74+
cin >> x >> yl >> yr;
75+
int ans = 0;
76+
for (int c = 0; c <= 50; c++) ans += SGT[c].query(x, yl, yr);
77+
cout << ans << endl;
78+
} else
79+
return;
80+
}
81+
return;
82+
}
83+
84+
bool mem2;
85+
86+
int main() {
87+
ios::sync_with_stdio(false), cin.tie(nullptr);
88+
#ifdef LOCAL
89+
cerr << "Memory Cost: " << abs(&mem1 - &mem2) / 1024. / 1024. << "MB" << endl;
90+
#endif
91+
92+
int _ = 1;
93+
while (_--) solve();
94+
95+
#ifdef LOCAL
96+
cerr << "Time Cost: " << clock() * 1000. / CLOCKS_PER_SEC << "MS" << endl;
97+
#endif
98+
return 0;
99+
}

HDOJ/6184.cpp

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/**
2+
* @file 6184.cpp
3+
* @author Macesuted (i@macesuted.moe)
4+
* @date 2025-07-28
5+
*
6+
* @copyright Copyright (c) 2025
7+
*
8+
*/
9+
10+
#include <bits/stdc++.h>
11+
using namespace std;
12+
13+
#ifndef LOCAL
14+
#define endl '\n'
15+
#endif
16+
17+
bool mem1;
18+
19+
#define maxn 100005
20+
21+
vector<vector<int>> graph, ques;
22+
23+
bool mark[maxn];
24+
25+
void solve(void) {
26+
int n, m;
27+
while (cin >> n >> m) {
28+
graph.clear(), graph.resize(n + 1);
29+
for (int i = 1, x, y; i <= m; i++) cin >> x >> y, graph[x].push_back(y), graph[y].push_back(x);
30+
31+
ques.clear(), ques.resize(n + 1);
32+
for (int p = 1; p <= n; p++)
33+
for (auto q : graph[p])
34+
if (p < q) graph[p].size() > graph[q].size() ? ques[p].push_back(q) : ques[q].push_back(p);
35+
36+
int64_t ans = 0;
37+
for (int p = 1; p <= n; p++) {
38+
for (auto q : graph[p]) mark[q] = true;
39+
40+
for (auto q : ques[p]) {
41+
int cnt = 0;
42+
for (auto x : graph[q]) cnt += mark[x];
43+
ans += int64_t(cnt) * (cnt - 1) / 2;
44+
}
45+
46+
for (auto q : graph[p]) mark[q] = false;
47+
}
48+
49+
cout << ans << endl;
50+
}
51+
return;
52+
}
53+
54+
bool mem2;
55+
56+
int main() {
57+
ios::sync_with_stdio(false), cin.tie(nullptr);
58+
#ifdef LOCAL
59+
cerr << "Memory Cost: " << abs(&mem1 - &mem2) / 1024. / 1024. << "MB" << endl;
60+
#endif
61+
62+
int _ = 1;
63+
while (_--) solve();
64+
65+
#ifdef LOCAL
66+
cerr << "Time Cost: " << clock() * 1000. / CLOCKS_PER_SEC << "MS" << endl;
67+
#endif
68+
return 0;
69+
}

HDOJ/6185.cpp

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/**
2+
* @file 6185.cpp
3+
* @author Macesuted (i@macesuted.moe)
4+
* @date 2025-07-28
5+
*
6+
* @copyright Copyright (c) 2025
7+
*
8+
*/
9+
10+
#include <bits/stdc++.h>
11+
using namespace std;
12+
13+
#ifndef LOCAL
14+
#define endl '\n'
15+
#endif
16+
17+
bool mem1;
18+
19+
#define mod 1000000007
20+
21+
class Matrix {
22+
private:
23+
vector<vector<int64_t>> a;
24+
size_t n, m;
25+
26+
public:
27+
Matrix(size_t _n, size_t _m) { a.resize(n = _n, vector<int64_t>(m = _m, 0)); }
28+
29+
vector<int64_t>& operator[](size_t x) { return a[x]; }
30+
int64_t get(size_t x, size_t y) const { return a[x][y]; }
31+
32+
Matrix operator*(const Matrix& b) const {
33+
Matrix ans(n, b.m);
34+
for (size_t i = 0; i < n; i++)
35+
for (size_t j = 0; j < m; j++)
36+
for (size_t k = 0; k < b.m; k++) ans[i][k] = (ans[i][k] + this->get(i, j) * b.get(j, k)) % mod;
37+
return ans;
38+
}
39+
Matrix operator^(size_t x) const {
40+
Matrix a = *this, ans(n, n);
41+
for (size_t i = 0; i < n; i++) ans[i][i] = 1;
42+
while (x) {
43+
if (x & 1) ans = ans * a;
44+
a = a * a, x >>= 1;
45+
}
46+
return ans;
47+
}
48+
};
49+
50+
void solve(void) {
51+
Matrix a(1, 6), f(6, 6);
52+
a[0][0] = 1;
53+
54+
f[0][0] = f[0][1] = f[0][2] = f[0][3] = f[0][5] = 1;
55+
f[1][0] = 1;
56+
f[2][0] = 1, f[2][5] = 1;
57+
f[3][0] = 1, f[3][4] = 1;
58+
f[4][3] = 1;
59+
f[5][0] = 1, f[5][2] = 1;
60+
61+
int64_t n;
62+
while (cin >> n) cout << (a * (f ^ n))[0][0] << endl;
63+
return;
64+
}
65+
66+
bool mem2;
67+
68+
int main() {
69+
ios::sync_with_stdio(false), cin.tie(nullptr);
70+
#ifdef LOCAL
71+
cerr << "Memory Cost: " << abs(&mem1 - &mem2) / 1024. / 1024. << "MB" << endl;
72+
#endif
73+
74+
int _ = 1;
75+
while (_--) solve();
76+
77+
#ifdef LOCAL
78+
cerr << "Time Cost: " << clock() * 1000. / CLOCKS_PER_SEC << "MS" << endl;
79+
#endif
80+
return 0;
81+
}

HDOJ/6186.cpp

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/**
2+
* @file 6186.cpp
3+
* @author Macesuted (i@macesuted.moe)
4+
* @date 2025-07-28
5+
*
6+
* @copyright Copyright (c) 2025
7+
*
8+
*/
9+
10+
#include <bits/stdc++.h>
11+
using namespace std;
12+
13+
#ifndef LOCAL
14+
#define endl '\n'
15+
#endif
16+
17+
bool mem1;
18+
19+
#define maxn 100005
20+
21+
uint32_t a[maxn], pre[3][maxn], suf[3][maxn];
22+
23+
void solve(void) {
24+
int n, q;
25+
while (cin >> n >> q) {
26+
for (int i = 1; i <= n; i++) cin >> a[i];
27+
28+
pre[0][0] = suf[0][n + 1] = UINT32_MAX;
29+
for (int i = 1; i <= n; i++) pre[0][i] = pre[0][i - 1] & a[i];
30+
for (int i = n; i >= 1; i--) suf[0][i] = suf[0][i + 1] & a[i];
31+
32+
pre[1][0] = suf[1][n + 1] = 0;
33+
for (int i = 1; i <= n; i++) pre[1][i] = pre[1][i - 1] | a[i];
34+
for (int i = n; i >= 1; i--) suf[1][i] = suf[1][i + 1] | a[i];
35+
36+
pre[2][0] = suf[2][n + 1] = 0;
37+
for (int i = 1; i <= n; i++) pre[2][i] = pre[2][i - 1] ^ a[i];
38+
for (int i = n; i >= 1; i--) suf[2][i] = suf[2][i + 1] ^ a[i];
39+
40+
for (int i = 1, p; i <= q; i++) {
41+
cin >> p;
42+
cout << (pre[0][p - 1] & suf[0][p + 1]) << ' ' << (pre[1][p - 1] | suf[1][p + 1]) << ' '
43+
<< (pre[2][p - 1] ^ suf[2][p + 1]) << endl;
44+
}
45+
}
46+
return;
47+
}
48+
49+
bool mem2;
50+
51+
int main() {
52+
ios::sync_with_stdio(false), cin.tie(nullptr);
53+
#ifdef LOCAL
54+
cerr << "Memory Cost: " << abs(&mem1 - &mem2) / 1024. / 1024. << "MB" << endl;
55+
#endif
56+
57+
int _ = 1;
58+
while (_--) solve();
59+
60+
#ifdef LOCAL
61+
cerr << "Time Cost: " << clock() * 1000. / CLOCKS_PER_SEC << "MS" << endl;
62+
#endif
63+
return 0;
64+
}

0 commit comments

Comments
 (0)