T1
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
}
T2
#include <iostream>
using namespace std;
const int MOD = 998244353;
int hamming_distance(int x, int y) {
int xor_xy = x ^ y;
int distance = 0;
while (xor_xy > 0) {
distance += xor_xy & 1;
xor_xy >>= 1;
}
return distance;
}
int main() {
int t;
cin >> t;
while (t--) {
int n, k;
cin >> n >> k;
int count = 0;
for (int x = 0; x <= n; ++x) {
for (int y = x + 1; y <= n; y) {
if (hamming_distance(x, y) <= k) {
count = (count + 1) % MOD;
}
}
}
cout << count << endl;
}
return 0;
}
T3
#include <bits/stdc.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int x, y;
cin >> x >> y;
if ((x * y) % 2 != 0) {
cout << "No" << endl;
continue;
}
int min_side = min(x, y);
int max_side = max(x, y);
if (min_side == 1) {
if (max_side % 4 == 0) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
} else if (min_side == 2) {
if (max_side % 3 == 0) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
} else if (min_side == 3) {
if (max_side % 2 == 0) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
} else {
cout << "Yes" << endl;
}
}
return 0;
}
T4
#include <iostream>
#include <vector>
using namespace std;
const int MOD = 998244353;
const int MAX_N = 1000000;
const int MAX_K = 21;
int d_table[MAX_N+1];
int m_table[MAX_N+1];
int C[21][21];
int T_table[21][21];
int main() {
for (int n_value = 0; n_value <= MAX_N; n_value++) {
if (n_value == 0) {
d_table[0] = -1;
m_table[0] = 0;
continue;
}
int d = 0;
while ((1 << (d+1)) <= n_value) {
d++;
}
d_table[n_value] = d;
m_table[n_value] = n_value - (1 << d);
}
}
T5
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using i32 = int32_t;
#ifndef ONLINE_JUDGE
#include "test.h"
#else
#define debug(...) 42
#define debug_assert(...) 42
#endif
namespace myMath {
i64 mod = 998244353;
}
using namespace myMath;
int main() {
iossync_with_stdio(0), cin.tie(0);
int n, m;
Combinit(4e6);
cin >> n >> m;
vector<int> cx(n + 1), cy(m + 1);
vector<int> fx(1e6 + 1, 1e9), tx(1e6 + 1, 1e9), fy(1e6 + 1), ty(1e6 + 1);
for (int i = 1; i <= n; i++) {
cin >> cx[i];
fx[cx[i]] = min(i, fx[cx[i]]);
tx[cx[i]] = i;
}
for (int i = 1; i <= m; i++) {
cin >> cy[i];
fy[cy[i]] = min(fy[cy[i]], i);
ty[cy[i]] = i;
}
auto run = & -> pair<i64, i64> {
int i = 1, j = 1;
i64 t = 0, sums = 1;
while (i <= n && j <= m) {
int fxx = i, txx = max(tx[cx[i]], tx[cy[j]]);
int fyy = j, tyy = max(ty[cx[i]], ty[cy[j]]);
int a = 0, b = 0;
while (i < txx || j < tyy) {
while (i < txx) {
a++;
i++;
txx = max(tx[cx[i]], txx);
tyy = max(ty[cx[i]], tyy);
}
while (j < tyy) {
b++;
j++;
txx = max(txx, tx[cy[j]]);
tyy = max(tyy, ty[cy[j]]);
}
}
t += a + b + 1;
sums = mul(sums, Comb::C(a + b, a));
i++, j++;
}
return {t, sums};
};
auto [a , b] = run();
}
T6
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using ull = unsigned long long;
#define IOS ios::sync_with_stdio(0);cin.tie(0);
#define endl "\n"
#define int ll
//点 工作 总时间
const int maxn = 5e5+10;
int n, m, w;
vector<int> mp[maxn];
unordered_map<int, int> tim;
unordered_map<int, int> we;
int fa[maxn], top[maxn], son[maxn], dfn[maxn], dep[maxn], siz[maxn];
int tot = 1;
vector<array<int, 3> > v;
set<int> mp2[maxn];
void dfs1(int now) {
siz[now] = 1;
for (auto c: mp[now]) {
dep[c] = dep[now] + 1;
dfs1(c);
siz[now] += siz[c];
}
void dfs2(int now) {
dfn[now] = tot++;
if (son[fa[now]] == now) {
top[now] = top[fa[now]];
} else {
top[now] = now;
}
if (son[now]) {
dfs2(son[now]);
}
for (auto i: mp[now]) {
if (i == son[now])continue;
dfs2(i);
}
}
int lca(int p,int q) {
while (top[q] != top[p]) {
// cerr<<dep[top[q]]<<" "<<dep[top[p]]<<endl;
if (dep[top[q]] < dep[top[p]])
swap(q, p);
q = fa[top[q]];
}
if (dep[q] < dep[p])swap(q, p);
return p;
}
int cost(int u,int v) {
return 2 * abs(dep[u] - dep[v]);
}
void build_virtual_tree() {
sort(v.begin(), v.end(), [&](array<int, 3> a, array<int, 3> b) {
return dfn[a[0]] < dfn[b[0]];
});
vector<int> a;
for (int i = 0; i < m; i) {
a.emplace_back(v[i][0]);
a.emplace_back(lca(v[i][0], v[i + 1][0]));
}
a.emplace_back(v[m][0]);
sort(a.begin(), a.end(), [&](int a1, int b1) {
return dfn[a1] < dfn[b1];
});
int sizs = a.size();
for (int i = 0; i < sizs - 1; i) {
int lc = lca(a[i], a[i + 1]);
if (lc == a[i + 1])continue;
mp2[lc].emplace(a[i + 1]);
mp2[a[i + 1]].emplace(lc);
}
}
vector<int> dp(int f, int t) {
vector<int> fas(w + 10);
fas[tim[t]] = we[t];
for (auto c: mp2[t]) {
if (c == f)continue;
vector<int> v1 = dp(t, c);
int mul = cost(t, c);
for (int i = max(w - 2 * dep[t], 0ll); i >= 0; i--) {
for (int j = 0; j <= w; j++) {
if (i - mul - j < 0)break;
fas[i] = max(fas[i], v1[j] + fas[i - mul - j]);
}
}
}
return fas;
}
void solve() {
//7 3 10
cin >> n >> m >> w;
}
signed main() {
IOS
int t = 1;
// cin >> t;
while (t--)solve();
}
都看到这了,还不点个赞