Day 1 和 Day 4 鸽了,Day 2 和 Day 3 打得像 ** 一样。

Day 2 T3 简单数数题拿到手就化了一堆奇怪的充要条件结果就只能  dp 了,优化了很久(以为我的充要条件很靠谱),留了 20min rush 没写完,遗憾离场。Day 3 T2 4K- 的 DS 题调了一个小时还没调出来,遗憾离场。赛后 30min 才 AC

感觉这个 2020 年状态一直不太行……经常浮躁而无法静下来去分析一个问题试图突破……希望,能改改吧。感觉在理论状态下应该只有 D1T2 和 D4T2 两个题切不掉的……但实际去考有没有 175 + 200 + 205 + 200 都是个问题……

//先贴代码,题解想起来再补 代码也鸽了

D1T1

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;int n, a[1000005][2];
PII dp[1000005][2];PII unite(const PII& u, const PII& v)
{if(u.first > u.second) return v;if(v.first > v.second) return u;return MP(min(u.first, v.first), max(u.second, v.second));
}char ans[1000005];int main()
{scanf("%d", &n);rep(i, 2) rep(j, 2 * n) scanf("%d", &a[j][i]);dp[0][0] = MP(0, 0);dp[0][1] = MP(1, 1);rep1(i, 2 * n - 1) {dp[i][0] = dp[i][1] = MP(0, -1);rep(j, 2) rep(k, 2) if(a[i - 1][k] <= a[i][j]) dp[i][j] = unite(dp[i][j], dp[i - 1][k]);dp[i][1].first ++;dp[i][1].second ++;}int ct = -1, cs = n;if(dp[2 * n - 1][0].first <= n && dp[2 * n - 1][0].second >= n) ct = 0;else if(dp[2 * n - 1][1].first <= n && dp[2 * n - 1][1].second >= n) ct = 1;if(ct == -1) {printf("-1\n");return 0;}for(int i = 2 * n - 1; i >= 0; i --) {cs -= ct;ans[i] = 'A' + ct;if(i == 0) break;int nt = -1;if(a[i - 1][0] <= a[i][ct] && dp[i - 1][0].first <= cs && dp[i - 1][0].second >= cs) nt = 0;else if(a[i - 1][1] <= a[i][ct] && dp[i - 1][1].first <= cs && dp[i - 1][1].second >= cs) nt = 1;ct = nt;}printf("%s\n", ans);return 0;
}

D1T2

这里面的 2-SAT 是假的,然而能通过所有数据(有一说一比这个更假的做法也能过(笑

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int INF = 0x3f3f3f3f;int n, k;
int del[200005];
int xl[200005], yl[200005], xr[200005], yr[200005];
int permx[200005], permy[200005];
int xa[200005], ya[200005];int sta[200005];
void occupy(int cx, int cy, int ck)
{rep(i, n) {if(del[i]) continue;if(xl[i] <= cx && yl[i] <= cy && xr[i] >= cx && yr[i] >= cy) del[i] = ck;}
}
void disocc(int ck)
{rep(i, n) if(del[i] == ck) del[i] = 0;
}bool s_trivial(int ck, int retx[], int rety[])
{int xlm = -INF, xrm = INF, ylm = -INF, yrm = INF;rep(i, n) {if(del[i]) continue;xlm = max(xlm, xl[i]);xrm = min(xrm, xr[i]);ylm = max(ylm, yl[i]);yrm = min(yrm, yr[i]);}if(xlm == -INF) return true;if(ck == 0) return false;if(xlm <= xrm) {int cnt = 0, cr = INF;for(int i = n - 1; i >= 0; i --) {int cur = permy[i];if(del[cur]) continue;if(cr > yr[cur]) {cr = yl[cur];retx[cnt] = xlm;rety[cnt] = cr;cnt ++;}}return cnt <= ck;} else if(ylm <= yrm) {int cnt = 0, cr = INF;for(int i = n - 1; i >= 0; i --) {int cur = permx[i];if(del[cur]) continue;if(cr > xr[cur]) {cr = xl[cur];retx[cnt] = cr;rety[cnt] = ylm;cnt ++;}}return cnt <= ck;} else if(ck == 1) return false;occupy(xlm, ylm, ck);retx[0] = xlm;rety[0] = ylm;if(s_trivial(ck - 1, retx + 1, rety + 1)) return true;disocc(ck);occupy(xlm, yrm, ck);retx[0] = xlm;rety[0] = yrm;if(s_trivial(ck - 1, retx + 1, rety + 1)) return true;disocc(ck);occupy(xrm, ylm, ck);retx[0] = xrm;rety[0] = ylm;if(s_trivial(ck - 1, retx + 1, rety + 1)) return true;disocc(ck);occupy(xrm, yrm, ck);retx[0] = xrm;rety[0] = yrm;if(s_trivial(ck - 1, retx + 1, rety + 1)) return true;disocc(ck);return false;
}int xs[400005], ys[400005], xtot, ytot, ltot;
int rgl[4][200005], rgr[4][200005];
int ver[4][200005], vcnt;
vector<int> G[4000015];
bool vis[4000015];
int ret[2000015];void add_edge(int x, int y, int vx, int vy)
{G[x << 1 | vx ^ 1].push_back(y << 1 | vy);G[y << 1 | vy ^ 1].push_back(x << 1 | vx);
}void dfs(int v)
{vis[v] = true;rep(i, G[v].size()) if(!vis[G[v][i]]) dfs(G[v][i]);if(ret[v >> 1] == -1) ret[v >> 1] = !(v & 1);
}void s_ntrivial()
{int xlm = -INF, xrm = INF, ylm = -INF, yrm = INF;rep(i, n) {xlm = max(xlm, xl[i]);xrm = min(xrm, xr[i]);ylm = max(ylm, yl[i]);yrm = min(yrm, yr[i]);}rep(i, n) {xs[2 * i] = xl[i];xs[2 * i + 1] = xr[i];}sort(xs, xs + 2 * n);xtot = unique(xs, xs + 2 * n) - xs;rep(i, n) {ys[2 * i] = yl[i];ys[2 * i + 1] = yr[i];}sort(ys, ys + 2 * n);ytot = unique(ys, ys + 2 * n) - ys;rep(i, 4) rep(j, n) rgl[i][j] = rgr[i][j] = -1;rep(i, n) {int lx = xl[i] <= xrm;int rx = xr[i] >= xlm;int ly = yl[i] <= yrm;int ry = yr[i] >= ylm; if(lx + rx + ly + ry >= 3) continue;if(lx) {rgl[0][i] = lower_bound(ys, ys + ytot, max(yl[i], yrm)) - ys;rgr[0][i] = lower_bound(ys, ys + ytot, min(yr[i], ylm)) - ys;}if(rx) {rgl[1][i] = lower_bound(ys, ys + ytot, max(yl[i], yrm)) - ys;rgr[1][i] = lower_bound(ys, ys + ytot, min(yr[i], ylm)) - ys;}if(ly) {rgl[2][i] = lower_bound(xs, xs + xtot, max(xl[i], xrm)) - xs;rgr[2][i] = lower_bound(xs, xs + xtot, min(xr[i], xlm)) - xs;}if(ry) {rgl[3][i] = lower_bound(xs, xs + xtot, max(xl[i], xrm)) - xs;rgr[3][i] = lower_bound(xs, xs + xtot, min(xr[i], xlm)) - xs;}}ltot = max(xtot, ytot) + 1;vcnt = 4 * ltot;rep1(i, ytot) add_edge(i - 1, i, 1, 0);rep1(i, ytot) add_edge(ltot + i - 1, ltot + i, 1, 0);rep1(i, xtot) add_edge(ltot * 2 + i - 1, ltot * 2 + i, 1, 0);rep1(i, xtot) add_edge(ltot * 3 + i - 1, ltot * 3 + i, 1, 0);rep(i, n) {int p0, p1;for(p0 = 0; p0 < 4 && rgl[p0][i] == -1; p0 ++) ;for(p1 = 3; p1 >= 0 && rgl[p1][i] == -1; p1 --) ;if(p1 == -1) continue;ver[p0][i] = vcnt ++;if(p1 > p0) ver[p1][i] = vcnt ++;add_edge(ver[p0][i], p0 * ltot + rgl[p0][i], 1, 1);add_edge(ver[p0][i], p0 * ltot + rgr[p0][i] + 1, 1, 0);if(p0 != -1) {add_edge(ver[p1][i], p1 * ltot + rgl[p1][i], 1, 1);add_edge(ver[p1][i], p1 * ltot + rgr[p1][i] + 1, 1, 0);}add_edge(ver[p0][i], ver[p1][i], 0, 0);}rep(i, vcnt) ret[i] = -1;rep(i, vcnt * 2) if(!vis[i]) dfs(i);rep(i, ytot + 1) if(ret[i] || i == ytot) {xa[0] = xrm;ya[0] = ys[max(i - 1, 0)];break;}rep(i, ytot + 1) if(ret[i + ltot] || i == ytot) {xa[1] = xlm;ya[1] = ys[max(i - 1, 0)];break;}rep(i, xtot + 1) if(ret[i + ltot * 2] || i == xtot) {ya[2] = yrm;xa[2] = xs[max(i - 1, 0)];break;}rep(i, xtot + 1) if(ret[i + ltot * 3] || i == xtot) {ya[3] = ylm;xa[3] = xs[max(i - 1, 0)];break;}
}template<int* arr>
bool cmp(int i, int j)
{return arr[i] < arr[j];
}int main()
{scanf("%d%d", &n, &k);rep(i, n) scanf("%d%d%d%d", &xl[i], &yl[i], &xr[i], &yr[i]);rep(i, n) permx[i] = permy[i] = i;sort(permx, permx + n, cmp<xl>);sort(permy, permy + n, cmp<yl>);rep(i, n) xa[i] = ya[i] = 1;if(!s_trivial(k, xa, ya)) s_ntrivial();rep(i, k) printf("%d %d\n", xa[i], ya[i]);return 0;
}

D1T3

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;namespace s64
{int n, m, q;int x[500005], y[500005];int qt[1000005], qv[1000005];int px[500005], perm[500005], pos[500005];int ax[1000005], ay[1000005];bool cmpx(int i, int j){return x[i] < x[j] || x[i] == x[j] && y[i] < y[j];}bool cmpy(int i, int j){return i == -1 ? false : (j == -1 ? true : y[i] < y[j]);}struct segt{int dat[1048576];segt(){memset(dat, -1, sizeof(dat));}void build(){rep(i, m) dat[i + 524288] = perm[i];int l = 524288, r = m + 524287;l >>= 1; r >>= 1;while(l > 0) {for(int i = l; i <= r; i ++) dat[i] = cmpy(dat[i << 1], dat[i << 1 | 1]) ? dat[i << 1] : dat[i << 1 | 1];l >>= 1;r >>= 1;}}void erase(int cur){cur = pos[cur] + 524288;dat[cur] = -1;for(cur >>= 1; cur > 0; cur >>= 1) dat[cur] = cmpy(dat[cur << 1], dat[cur << 1 | 1]) ? dat[cur << 1] : dat[cur << 1 | 1];}int query(int cx){int l = 524288, r = upper_bound(px, px + m, cx) - px + 524287;int ret = -1;while(l < r) {if(l & 1) ret = cmpy(ret, dat[l]) ? ret : dat[l];if(!(r & 1)) ret = cmpy(ret, dat[r]) ? ret : dat[r];l = l + 1 >> 1;r = r - 1 >> 1;}if(l == r) ret = cmpy(ret, dat[l]) ? ret : dat[l];return ret;}}tre;struct dsu{int pre[500005];void init(){rep(i, m) pre[i] = i;}int root(int x){return pre[x] == x ? x : pre[x] = root(pre[x]);}}con;bool del[500005];int tp[500005];set<int> hv, hvu, hvr;map<int, int> ver, hor;void insert_d(map<int, int>& cur, int cv, int cdat){if(cur.find(cdat) == cur.end()) cur.insert(MP(cdat, cv));else con.pre[cv] = cur[cdat];}void solve(){rep(i, m) perm[i] = i;sort(perm, perm + m, cmpx);rep(i, m) pos[perm[i]] = i;rep(i, m) px[i] = x[perm[i]];tre.build();con.init();rep(i, m) del[i] = false;rep(i, m) tp[i] = -1;hv.clear();hvu.clear();hvr.clear();ver.clear();hor.clear();hv.insert(-1);hv.insert(n + 1);rep(i, q) {int pre, nxt;if(qt[i] == 2) {set<int>::iterator it = hv.lower_bound(qv[i]);nxt = *it;pre = *prev(it);while(true) {int cv = tre.query(qv[i]);if(cv == -1 || y[cv] > n - qv[i]) break;tre.erase(cv);tp[cv] = 0;insert_d(ver, cv, y[cv]);}if(ver.find(n - qv[i]) != ver.end()) {int cv = ver[n - qv[i]];del[cv] = true;ver.erase(n - qv[i]);}while(true) {map<int, int>::iterator it = hor.lower_bound(pre);if(it == hor.end() || it->first >= qv[i]) break;x[it->second] = qv[i];insert_d(hor, it->second, qv[i]);hor.erase(it);}map<int, int>::iterator it2 = hor.find(qv[i]);if(it2 != hor.end() && hvu.find(qv[i]) != hvu.end()) {del[it2->second] = true;hor.erase(it2);}hv.insert(qv[i]);hvr.insert(qv[i]);} else if(qt[i] == 3) {set<int>::iterator it = hv.upper_bound(qv[i]);nxt = *it;pre = *prev(it);while(true) {int cv = tre.query(qv[i]);if(cv == -1 || y[cv] > n - qv[i]) break;tre.erase(cv);tp[cv] = 1;insert_d(hor, cv, x[cv]);}if(hor.find(qv[i]) != hor.end()) {int cur = hor[qv[i]];del[cur] = true;hor.erase(qv[i]);}while(true) {map<int, int>::iterator it = ver.lower_bound(n - nxt);if(it == ver.end() || it->first >= n - qv[i]) break;y[it->second] = n - qv[i];insert_d(ver, it->second, n - qv[i]);ver.erase(it);}map<int, int>::iterator it2 = ver.find(n - qv[i]);if(it2 != ver.end() && hvr.find(qv[i]) != hvr.end()) {del[it2->second] = true;ver.erase(it2);}hv.insert(qv[i]);hvu.insert(qv[i]);} else {int cqv = con.root(qv[i]);if(tp[cqv] == -1) {ax[i] = x[cqv];ay[i] = y[cqv];} else if(tp[cqv]) {ax[i] = x[cqv];ay[i] = del[cqv] ? n - x[cqv] : n - *hv.upper_bound(x[cqv]);} else {ax[i] = del[cqv] ? n - y[cqv] : *prev(hv.lower_bound(n - y[cqv]));ay[i] = y[cqv];}}}rep(i, m) if(tp[i] == -1) tre.erase(i);rep(i, m) {if(tp[i] == -1) continue;int cqv = con.root(i);if(tp[cqv]) {x[i] = x[cqv];y[i] = del[cqv] ? n - x[cqv] : n - *hv.upper_bound(x[cqv]);} else {x[i] = del[cqv] ? n - y[cqv] : *prev(hv.lower_bound(n - y[cqv]));y[i] = y[cqv];}}}
}int n, m, q;
int x[500005], y[500005];
int qt[1000005], qv[1000005], qw[1000005];
int ax[1000005], ay[1000005];
int vid[1000005], qid[1000005], vcnt;void deposit(int l, int r)
{if(l == r) return;int mid = l + r >> 1;deposit(l, mid);deposit(mid + 1, r);int mv = -1;s64::m = 0;for(int i = l; i <= mid; i ++) {if(qt[i] != 4) continue;if(mv == -1) mv = vid[i];s64::x[s64::m] = qv[i];s64::y[s64::m] = qw[i];s64::m ++;}if(mv == -1) return;s64::q = 0;for(int i = mid + 1; i <= r; i ++) {if(qt[i] == 4 || qt[i] == 1 && (qv[i] < mv || qv[i] >= mv + s64::m)) continue;s64::qt[s64::q] = qt[i];s64::qv[s64::q] = qt[i] == 1 ? qv[i] - mv : qv[i];qid[i] = s64::q;s64::q ++;}s64::solve();for(int i = mid + 1; i <= r; i ++) if(qt[i] == 1 && qv[i] >= mv && qv[i] < mv + s64::m) {ax[i] = s64::ax[qid[i]];ay[i] = s64::ay[qid[i]];}s64::m = 0;for(int i = l; i <= mid; i ++) {if(qt[i] != 4) continue;qv[i] = s64::x[s64::m];qw[i] = s64::y[s64::m];s64::m ++;}
}int main()
{scanf("%d%d%d", &n, &m, &q);rep(i, m) scanf("%d%d", &x[i], &y[i]);vcnt = m;rep(i, q) {scanf("%d%d", &qt[i], &qv[i]);if(qt[i] == 4) {scanf("%d", &qw[i]);vid[i] = vcnt ++;}}rep(i, q) if(qt[i] == 1) qv[i] --;else if(qt[i] == 2) qv[i] = n - qv[i];s64::n = n;s64::m = m;s64::q = 0;rep(i, m) {s64::x[i] = x[i];s64::y[i] = y[i];}rep(i, q) {if(qt[i] == 4 || qt[i] == 1 && qv[i] >= m) continue;s64::qt[s64::q] = qt[i];s64::qv[s64::q] = qv[i];qid[i] = s64::q;s64::q ++;}s64::solve();rep(i, q) if(qt[i] == 1 && qv[i] < m) {ax[i] = s64::ax[qid[i]];ay[i] = s64::ay[qid[i]];}deposit(0, q - 1);rep(i, q) if(qt[i] == 1) printf("%d %d\n", ax[i], ay[i]);return 0;
}

D2T1

#include "chameleon.h"
#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;int n;
vector<int> G[1005];
int rt[1005], xval[1005];
bool ban[1005][1005];void add_edge(int u, int v)
{G[u].push_back(v);G[v].push_back(u);int nxv = xval[u] ^ xval[v] ^ 1;int cu = rt[u], cv = rt[v];rep1(i, 2 * n) if(rt[i] == cu) {rt[i] = cv;xval[i] ^= nxv;}
}bool check(int x, int l, int r, int tp)
{vector<int> cq;cq.push_back(x);for(int i = l; i <= r; i ++)if(xval[i] == tp) cq.push_back(i);return Query(cq) + 1 <= cq.size();
}bool check3(int a, int b, int c)
{vector<int> cq;cq.push_back(a);cq.push_back(b);cq.push_back(c);return Query(cq) == 1;
}int query_pr(int x, int l, int r, int tp)
{if(l > r || !check(x, l, r, tp)) return -1;while(l < r) {int mid = l + r >> 1;if(check(x, mid + 1, r, tp)) l = mid + 1;else r = mid;}return r;
}void Solve(int N)
{n = N;rep1(i, 2 * n) rep1(j, 2 * n) ban[i][j] = false;rep1(i, 2 * n) {rt[i] = i;xval[i] = 0;}rep1(i, 2 * n) {int cr = i - 1;vector<int> hv;while(true) {cr = query_pr(i, 1, cr, 0);if(cr == -1) break;hv.push_back(cr);cr --;}cr = i - 1;while(true) {cr = query_pr(i, 1, cr, 1);if(cr == -1) break;hv.push_back(cr);cr --;}rep(j, hv.size()) add_edge(i, hv[j]);}rep1(i, 2 * n) if(G[i].size() == 3) {if(check3(i, G[i][0], G[i][1])) ban[i][G[i][2]] = ban[G[i][2]][i] = true;else if(check3(i, G[i][0], G[i][2])) ban[i][G[i][1]] = ban[G[i][1]][i] = true;else ban[i][G[i][0]] = ban[G[i][0]][i] = true;}rep1(i, 2 * n) if(!xval[i])rep(j, G[i].size()) if(!ban[i][G[i][j]]) Answer(i, G[i][j]);
}

D2T2

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;int pre[100005], siz[100005];
int deg[100005], rdeg[100005];
set<int> G[100005], RG[100005], S[100005];
LL tot;int root(int x)
{return pre[x] == x ? x : pre[x] = root(pre[x]);
}void add_edge(int, int);
void merge(int u, int v)
{if(siz[u] < siz[v]) swap(u, v);pre[v] = u;vector<int> hv, rhv;for(set<int>::iterator it = G[v].begin(); it != G[v].end(); it ++) hv.push_back(*it);for(set<int>::iterator it = RG[v].begin(); it != RG[v].end(); it ++) rhv.push_back(*it);tot += 1LL * S[u].size() * siz[v];tot += 1LL * S[v].size() * siz[u];for(set<int>::iterator it = S[v].begin(); it != S[v].end(); it ++) {if(S[u].find(*it) != S[u].end()) tot -= siz[u] + siz[v];else S[u].insert(*it);}S[v].clear();siz[u] += siz[v];rep(i, hv.size()) {G[v].erase(hv[i]);RG[hv[i]].erase(v);}rep(i, rhv.size()) {RG[v].erase(rhv[i]);G[rhv[i]].erase(v);}rep(i, hv.size()) add_edge(u, hv[i]);rep(i, rhv.size()) add_edge(rhv[i], u);
}void add_edge(int u, int v)
{u = root(u);v = root(v);if(u == v) return;if(G[u].find(v) != G[u].end()) return;if(G[v].find(u) != G[v].end()) {merge(u, v);return;}G[u].insert(v);RG[v].insert(u);deg[u] += siz[v];rdeg[v] += siz[u];
}int main()
{int n, m;scanf("%d%d", &n, &m);rep1(i, n) {pre[i] = i;siz[i] = 1;}rep1(i, n) S[i].insert(i);rep(i, m) {int u, v;scanf("%d%d", &u, &v);v = root(v);if(S[v].find(u) == S[v].end()) {S[v].insert(u);tot += siz[v];}add_edge(u, v);printf("%lld\n", tot);}return 0;
}

D2T3

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 1e9 + 7;int n, a[605];
bool inq[1205];
int dp[1205][605];
int comb[1205][605], cdp[605][605], gtot[605];int main()
{comb[0][0] = 1;rep(i, 1200) rep(j, 600) {comb[i + 1][j] = (comb[i + 1][j] + comb[i][j]) % MOD;comb[i + 1][j + 1] = (comb[i + 1][j + 1] + comb[i][j]) % MOD;}cdp[0][0] = 1;rep(i, 600) rep(j, 600) {cdp[i + 1][j + 1] = (cdp[i + 1][j + 1] + cdp[i][j]) % MOD;cdp[i + 1][j] = (cdp[i + 1][j] + 2LL * cdp[i][j]) % MOD;if(j > 0) cdp[i + 1][j - 1] = (cdp[i + 1][j - 1] + cdp[i][j]) % MOD;}gtot[0] = 1;rep1(i, 600) gtot[i] = 1LL * gtot[i - 1] * i % MOD;rep(i, 601) gtot[i] = 1LL * gtot[i] * cdp[i][0] % MOD; for(int i = 600; i >= 1; i --) gtot[i] = 1LL * gtot[i - 1]  * (i + 1) % MOD;scanf("%d", &n);rep(i, n) scanf("%d", &a[i]);rep(i, n) inq[a[i]] = true;dp[2 * n][0] = 1;int ccnt = 0;for(int i = 2 * n; i >= 1; i --)if(!inq[i]) {rep(j, n + 1) {if(dp[i][j] == 0) continue;dp[i - 1][j] = (dp[i - 1][j] + 1LL * dp[i][j] * (j - ccnt)) % MOD;}ccnt ++;} else {rep(j, n + 1) {if(dp[i][j] == 0) continue;dp[i - 1][j] = (dp[i - 1][j] + dp[i][j]) % MOD;for(int k = j + 1; k <= n; k ++) dp[i - 1][k] = (dp[i - 1][k] +1LL * dp[i][j] * comb[2 * n - i - j - ccnt][k - j - 1] % MOD * gtot[k - j]) % MOD;}}int ans = dp[0][n];rep(i, n) ans = 1LL * ans * (MOD + 1) / 2 % MOD;printf("%d\n", ans);return 0;
}

D3T1

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int INF = 0x3f3f3f3f;struct segt
{LL dat[524288];void add(int l, int r, LL d){l += 262144; r += 262144;while(l < r) {if(l & 1) dat[l] += d;if(!(r & 1)) dat[r] += d;l = l + 1 >> 1;r = r - 1 >> 1;}if(l == r) dat[l] += d;}LL query(int x){LL ret = 0;for(x += 262144; x > 0; x >>= 1) ret += dat[x];return ret;}
}tre;int n, a[200005];
int m, x[200005], y[200005], c[200005];
int par[200005];
int pre[200005][18];
vector<int> T[200005];
int dfn[200005], dfo[200005], tot;
vector<PII> qs[200005];
LL dp[200005];int sta[100005], ssiz;
void gen_tre()
{ssiz = 1;sta[1] = -1;rep1(i, n) {while(a[sta[ssiz - 1]] < a[i]) ssiz --;if(sta[ssiz] != -1) par[sta[ssiz]] = i;par[i] = sta[ssiz - 1];sta[ssiz ++] = i;sta[ssiz] = -1;}rep1(i, n) pre[i][0] = par[i];rep1(i, 17) rep1(j, n) pre[j][i] = pre[pre[j][i - 1]][i - 1];rep1(i, n) T[par[i]].push_back(i);
}int find_pre(int x, int y)
{for(int i = 17; i >= 0; i --) if(a[pre[x][i]] < y) x = pre[x][i];return x;
}void dfs(int v)
{dfn[v] = tot ++;rep(i, T[v].size()) dfs(T[v][i]);dfo[v] = tot - 1;
}void gen_dp(int v)
{rep(i, T[v].size()) {gen_dp(T[v][i]);dp[v] += dp[T[v][i]];}tre.add(dfn[v], dfn[v], dp[v]);rep(i, T[v].size()) {tre.add(dfn[v] + 1, dfn[T[v][i]] - 1, dp[T[v][i]]);tre.add(dfo[T[v][i]] + 1, dfo[v], dp[T[v][i]]);}rep(i, qs[v].size()) dp[v] = max(dp[v], tre.query(dfn[qs[v][i].first]) + qs[v][i].second);
}int main()
{scanf("%d", &n);rep1(i, n) scanf("%d", &a[i]);a[0] = INF;gen_tre();scanf("%d", &m);LL ans = 0;rep(i, m) {scanf("%d%d%d", &x[i], &y[i], &c[i]);qs[find_pre(x[i], y[i])].push_back(MP(x[i], c[i]));ans += c[i];}dfs(0);gen_dp(0);ans -= dp[0];printf("%lld\n", ans);return 0;
}

D3T2

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;int n, m, l, c, q;
int a[200005], b[200005];
int pre[400005];
LL pdis[400005];int ccnt;
bool inc[400005];
int cid[400005];
vector<int> hv[200005];
vector<int> T[400005];
int dfn[400005], dfo[400005], tot;
LL clen[200005];
LL dep[400005];void dfs(int v, LL cd)
{cid[v] = ccnt;dep[v] = cd;dfn[v] = tot ++;rep(i, T[v].size()) {int u = T[v][i];dfs(u, cd + pdis[u]);}dfo[v] = tot - 1;
}int deg[400005];
void gen_cyc()
{rep(i, n + m) deg[pre[i]] ++;queue<int> que;rep(i, n + m) if(deg[i] == 0) que.push(i);while(!que.empty()) {int v = que.front();que.pop();T[pre[v]].push_back(v);deg[pre[v]] --;if(deg[pre[v]] == 0) que.push(pre[v]);}rep(i, n + m) if(deg[i] != 0) {for(int j = i; deg[j] != 0; j = pre[j]) {inc[j] = true;hv[ccnt].push_back(j);deg[j] = 0;}for(int j = hv[ccnt].size() - 1; j >= 0; j --) {if(j != hv[ccnt].size() - 1) clen[ccnt] += pdis[hv[ccnt][j]];dfs(hv[ccnt][j], clen[ccnt]);}clen[ccnt] += pdis[hv[ccnt].back()];ccnt ++;}
}int qv[200005];
LL qt[200005];
LL ans[200005]; vector<int> cs[200005];
vector<int> qs[200005];bool cmpc(int c0, int c1)
{return dep[c0] < dep[c1] || dep[c0] == dep[c1] && c0 < c1;
}
bool cmpq(int q0, int q1)
{return dep[qv[q0]] + qt[q0] < dep[qv[q1]] + qt[q1] || dep[qv[q0]] + qt[q0] == dep[qv[q1]] + qt[q1] && q0 < q1;
}int cc;
int tot1;
LL tot2;
struct fwt
{LL dat[524295];void add(int x, LL d){for(; x <= 524288; x += x & -x) dat[x] += d;}LL query(int x){LL ret = 0;for(; x > 0; x -= x & -x) ret += dat[x];return ret;}
} t3, t4;
vector<LL> rem;void add_c(int x, int coef)
{tot1 += coef;tot2 += coef * (dep[x] / clen[cc]);t3.add(lower_bound(rem.begin(), rem.end(), dep[x] % clen[cc]) - rem.begin() + 1, coef);t4.add(dfn[x] + 1, coef);
}LL query_q(int x, LL ct)
{if(!inc[x]) return t4.query(dfo[x] + 1) - t4.query(dfn[x]);LL ret = 0;ret += tot1 * (ct / clen[cc] + 1);ret -= tot2;ret -= tot1 - t3.query(upper_bound(rem.begin(), rem.end(), ct % clen[cc]) - rem.begin());ret -= t4.query(dfn[x]);return ret;
}void solve_q(int id)
{cc = id;sort(cs[id].begin(), cs[id].end(), cmpc);sort(qs[id].begin(), qs[id].end(), cmpq);rem.clear();rep(i, cs[id].size()) rem.push_back(dep[cs[id][i]] % clen[cc]);sort(rem.begin(), rem.end());rem.resize(unique(rem.begin(), rem.end()) - rem.begin());int j = 0;rep(i, qs[id].size()) {while(j < cs[id].size() && dep[cs[id][j]] <= dep[qv[qs[id][i]]] + qt[qs[id][i]]) add_c(cs[id][j ++], 1);ans[qs[id][i]] = query_q(qv[qs[id][i]], dep[qv[qs[id][i]]] + qt[qs[id][i]]);}while(j > 0) add_c(cs[id][-- j], -1);
}int main()
{scanf("%d%d%d%d", &n, &m, &l, &c);rep(i, n) scanf("%d", &a[i]);rep(i, m) scanf("%d", &b[i]);rep(i, n) {int pos = upper_bound(a, a + n, a[i] - c % l) - a;pdis[i] = c - c % l;if(pos == 0) {pdis[i] += l;pos = upper_bound(a, a + n, a[i] + l - c % l) - a;}pre[i] = pos - 1;pdis[i] += a[i] - a[pos - 1];}rep(i, m) {int pos = upper_bound(a, a + n, b[i]) - a;pdis[i + n] = 0;if(pos == 0) {pdis[i + n] += l;pos = upper_bound(a, a + n, b[i] + l) - a;}pre[i + n] = pos - 1;pdis[i + n] += b[i] - a[pos - 1];}gen_cyc();scanf("%d", &q);rep(i, q) {scanf("%d%lld", &qv[i], &qt[i]);qv[i] --;}rep(i, q) qs[cid[qv[i]]].push_back(i);for(int i = n; i < n + m; i ++) cs[cid[i]].push_back(i);rep(i, ccnt) solve_q(i);rep(i, q) printf("%lld\n", ans[i]);return 0;
}

D3T3

Subtask 1 Anthony

#include "Anthony.h"
#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;vector<int> G[20005];
int dis[20005];
vector<int> Mark(int n, int m, int a, int b, vector<int> u, vector<int> v)
{rep(i, m) {G[u[i]].push_back(v[i]);G[v[i]].push_back(u[i]);}rep(i, n) dis[i] = -1;queue<int> que;que.push(0);dis[0] = 0;while(!que.empty()) {int v = que.front();que.pop();rep(i, G[v].size()) {int u = G[v][i];if(dis[u] != -1) continue;que.push(u);dis[u] = dis[v] + 1;}}vector<int> ret;rep(i, m) ret.push_back(min(dis[u[i]], dis[v[i]]) % 3);return ret;
}

Subtask 1 Catherine

#include "Catherine.h"
#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;void Init(int a, int b)
{
}int Move(vector<int> y)
{vector<int> hv;rep(i, 3) if(y[i] != 0) hv.push_back(i);if(hv.size() == 1) return hv[0];else return hv[1] - hv[0] == 2 ? 2 : hv[0];
}

Subtask 2 Anthony

#include "Anthony.h"
#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;int dat[6] = {0, 0, 1, 1, 0, 1};vector<PII> G[20005];
int ans[20005];void dfs(int v, int par, int cd)
{rep(i, G[v].size())  {int u = G[v][i].first;if(u == par) continue;int nc = G[v].size() == 2 ? (cd + 1) % 6 : (dat[cd] ? 0 : 2);ans[G[v][i].second] = dat[nc];dfs(u, v, nc);}
}vector<int> Mark(int n, int m, int a, int b, vector<int> u, vector<int> v)
{rep(i, m) {G[u[i]].push_back(MP(v[i], i));G[v[i]].push_back(MP(u[i], i));}dfs(0, -1, 0);vector<int> ret;rep(i, m) ret.push_back(ans[i]);return ret;
}

Subtask 2 Catherine

#include "Catherine.h"
#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;const int dat[6] = {0, 0, 1, 1, 0, 1};
bool insm;
int pre;
int sc[5], scnt; void Init(int a, int b)
{insm = true;pre = -1;scnt = 0;
}int getone(vector<int> cc)
{return cc[0] ? 0 : 1;
}int countt(vector<int> cc)
{return cc[0] + cc[1];
}bool isdown()
{rep(i, 6) {bool ok = true;rep(j, 5) if(dat[(i + j) % 6] != sc[j]) ok = false;if(ok) return true;}return false;
}int move_up(vector<int> cc)
{if(countt(cc) + (pre != -1) != 2) {if(cc[0] + (pre == 0) == 1) return pre == 0 ? -1 : (pre = 0);else return pre == 1 ? -1 : (pre = 1);} else return cc[1] ? (pre = 1) : (pre = 0);
}int Move(vector<int> cur)
{if(countt(cur) + (pre != -1) != 2) insm = false;if(!insm) return move_up(cur);if(pre == -1) {sc[scnt ++] = getone(cur);cur[sc[0]] --;}sc[scnt ++] = getone(cur);if(scnt == 5) {insm = false;if(isdown()) return -1;else return move_up(cur);} else return pre = sc[scnt - 1];
}

D4T1

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int INF = 0x3f3f3f3f;int n, k, c[200005];
int occ[200005];
vector<int> G[200005];
vector<int> G0[200005];
bool del[200005];int siz[200005];
void dfs0(int v, int par)
{siz[v] = 1;rep(i, G[v].size()) {int u = G[v][i];if(del[u] || u == par) continue;dfs0(u, v);siz[v] += siz[u];}
}int cent(int v, int par, int csiz)
{rep(i, G[v].size()) {int u = G[v][i];if(del[u] || u == par) continue;if(siz[u] > csiz / 2) return cent(u, v, csiz);}return v;
}int pre[200005], vis[200005];
bool inq[200005], ing[200005];
void dfs1(int v, int par, int cid)
{pre[v] = par;vis[v] = cid;inq[v] = false;ing[c[v]] = false;rep(i, G[v].size()) {int u = G[v][i];if(del[u] || u == par) continue;dfs1(u, v, cid);}
}int tsolve(int v)
{dfs1(v, -1, v);int ret = 0;queue<int> que;inq[v] = true;que.push(v);while(!que.empty()) {int u = que.front();if(!ing[c[u]]) {ing[c[u]] = true;ret ++;}que.pop();rep(i, G0[u].size()) {int nu = G0[u][i];if(vis[nu] != v) return INF;while(!inq[nu]) {inq[nu] = true;que.push(nu);nu = pre[nu];}}}return ret;
}int solve(int v)
{dfs0(v, -1);v = cent(v, -1, siz[v]);int ret = tsolve(v);del[v] = true;rep(i, G[v].size()) {int u = G[v][i];if(del[u]) continue;ret = min(ret, solve(u));}return ret;
}int main()
{scanf("%d%d", &n, &k);rep(i, n - 1) {int u, v;scanf("%d%d", &u, &v);G[u].push_back(v);G[v].push_back(u);}rep1(i, n) {scanf("%d", &c[i]);if(occ[c[i]] != 0) {G0[occ[c[i]]].push_back(i);G0[i].push_back(occ[c[i]]);}occ[c[i]] = i;}printf("%d\n", solve(1) - 1);return 0;
}

D4T2

提答是不会碰的,这辈子都不会碰的

test 5 跑了 40min,属实垃圾

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MOD = 998244353;mt19937 rng(time(0));
int r, c;
char s[505][505];
int perm[1000005];
char cha[5] = "-|\\/";
int dx[4] = {0, -1, -1, -1}, dy[4] = {-1, 0, -1, 1};
int ret[505][505];
int occx[505][505], occy[505][505];bool check(int i, int j, int k)
{return s[i][j] == 'W' && s[i - dx[k]][j - dy[k]] != 'W' && s[i + dx[k]][j + dy[k]] != 'W'&& s[i - dx[k]][j - dy[k]] != s[i + dx[k]][j + dy[k]];
}void undo(int i, int j)
{if(occx[i][j] == -1) return;int ni = occx[i][j], nj = occy[i][j];occx[ni][nj] = occy[ni][nj] = -1;occx[ni - dx[ret[ni][nj]]][nj - dy[ret[ni][nj]]] = occy[ni - dx[ret[ni][nj]]][nj - dy[ret[ni][nj]]] = -1;occx[ni + dx[ret[ni][nj]]][nj + dy[ret[ni][nj]]] = occy[ni + dx[ret[ni][nj]]][nj + dy[ret[ni][nj]]] = -1;ret[ni][nj] = -1;
}void endo(int i, int j, int k)
{occx[i][j] = occx[i - dx[k]][j - dy[k]] = occx[i + dx[k]][j + dy[k]] = i;occy[i][j] = occy[i - dx[k]][j - dy[k]] = occy[i + dx[k]][j + dy[k]] = j;ret[i][j] = k;
}int cans = -1;
char ans[505][505];int main()
{freopen("input_05.txt", "r", stdin);scanf("%d%d", &r, &c);rep(i, r) scanf("%s", s[i]);rep(i, 4 * r * c) perm[i] = i;rep(i, r) rep(j, c) {ret[i][j] = -1;occx[i][j] = occy[i][j] = -1;}rep(T, 100000) {shuffle(perm, perm + 4 * r * c, rng);rep(t, 4 * r * c) {int i = (t >> 2) / c, j = (t >> 2) % c, k = t & 3;if(i + dx[k] < 0 || i - dx[k] >= r) continue;if(j - dy[k] < 0 || j + dy[k] >= c || j + dy[k] < 0 || j - dy[k] >= c) continue;if(!check(i, j, k)) continue;int ccnt = (occx[i][j] != -1) + (occx[i + dx[k]][j + dy[k]] != -1) + (occx[i - dx[k]][j - dy[k]] != -1)
//          - (occx[i][j] == occx[i + dx[k]][j + dy[k]] && occy[i][j] == occy[i + dx[k]][j + dy[k]])
//          - (occx[i][j] == occx[i - dx[k]][j - dy[k]] && occy[i][j] == occy[i - dx[k]][j - dy[k]]);
;if(ccnt >= 2 && (rng() & 262143)) continue;if(ccnt == 1 && (rng() & 1)) continue;undo(i, j);undo(i + dx[k], j + dy[k]);undo(i - dx[k], j - dy[k]);endo(i, j, k);}int tot = 0;rep(i, r) rep(j, c) if(ret[i][j] != -1) tot ++;if(tot > cans) {fprintf(stderr, "new answer: %d\n", tot);cans = tot;rep(i, r) rep(j, c) ans[i][j] = ret[i][j] == -1 ? s[i][j] : cha[ret[i][j]];freopen("current2.txt", "w", stdout);rep(i, r) printf("%s\n", ans[i]);fclose(stdout);if(tot >= 48620) break;}}return 0;
}

D4T3

#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (int)(n); i ++)
#define rep1(i, n) for(int i = 1; i <= (int)(n); i ++)
#define MP make_pairusing namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const LL INF = 0x3f3f3f3f3f3f3f3f;int n, m;
int t[100005], l[100005], r[100005], c[100005];
int cx[100005], cy[100005], qx[100005], qy[100005];
PII xval[100005];
LL dp[100005];
int del[100005];int cmin(int i, int j)
{return (j == -1 || i != -1 && cy[i] < cy[j]) ? i : j;
}struct segt
{int dat[262144];void build(){memset(dat, -1, sizeof(dat));rep(i, m) dat[131072 | cx[i]] = i;for(int i = 131071; i >= 0; i --) dat[i] = cmin(dat[i << 1], dat[i << 1 | 1]);}void erase(int x){int id = 131072 | cx[x];dat[id] = -1;for(id >>= 1; id > 0; id >>= 1) dat[id] = cmin(dat[id << 1], dat[id << 1 | 1]);}int query(int x){int l = 131072, r = 131072 | x;int ret = -1;while(l < r) {if(l & 1) ret = cmin(ret, dat[l]);if(!(r & 1)) ret = cmin(ret, dat[r]);l = l + 1 >> 1;r = r - 1 >> 1;}if(l == r) ret = cmin(ret, dat[l]);return ret;}
}tre;int main()
{scanf("%d%d", &n, &m);rep(i, m) scanf("%d%d%d%d", &t[i], &l[i], &r[i], &c[i]);rep(i, m) {cx[i] = l[i] - t[i];cy[i] = l[i] + t[i];qx[i] = r[i] - t[i] + 1;qy[i] = r[i] + t[i] + 1;}rep(i, m) xval[i] = MP(cx[i], i);sort(xval, xval + m);rep(i, m) {cx[i] = lower_bound(xval, xval + m, MP(cx[i], i)) - xval;qx[i] = lower_bound(xval, xval + m, MP(qx[i], m)) - xval - 1;}rep(i, m) dp[i] = INF;LL ans = INF;tre.build();priority_queue<pair<LL, int> > que;rep(i, m) if(l[i] == 1) {dp[i] = c[i];que.push(MP(-dp[i], i));tre.erase(i);}while(!que.empty()) {int v = que.top().second;que.pop();if(r[v] == n) {printf("%lld\n", dp[v]);return 0;}while(true) {int i = tre.query(qx[v]);if(i == -1 || cy[i] > qy[v]) break;tre.erase(i);dp[i] = dp[v] + c[i];que.push(MP(-dp[i], i));}}printf("-1\n");return 0;
}

JOISC 2020 补题记录相关推荐

  1. Codeforces Good Bye 2020 补题记录

    系列文章目录 文章目录 系列文章目录 前言 G. Song of the Sirens 前言 我是傻逼 G. Song of the Sirens 给定n和q,字符串s0和t,t的长度为n sis_i ...

  2. Good Bye 2019补题记录

    Good Bye 2019补题记录 A. Card Game 题目描述 Two players decided to play one interesting card game. There is ...

  3. Codeforces补题记录(1)

    文章目录 Codeforces补题记录(1) 1.Codeforces Round #632 (Div. 2)(2020.4.11) A.Little Artem B.Kind Anton *C.Eu ...

  4. 2019 CCPC-Wannafly Winter Camp Day8 (Div2, onsite) 补题记录

    一篇来自ACM入门者的补题记录 最近有点懒,想着还有最后一篇博客没完成,是我最大的补题动力. 不过终于在camp过去三个月的时候完成了所有的补题博客,有点欣慰,下一个目标应该是补一补一年前暑期训练的题 ...

  5. 2019 CCPC-Wannafly Winter Camp Day1 (Div2, onsite)(补题记录)

    一篇来自ACM入门者的补题记录 文章目录 A.机器人 B.吃豆豆 C.拆拆拆数 E.流流流动 F.爬爬爬山 I.起起落落 J.夺宝奇兵 A.机器人 题意:有两条平行线段A,B,长度从1~n,机器人一开 ...

  6. 18-6-2补题记录

    1.一直在TLE的A题 -待补完 题意:第一行输入n和m 第二行输出n个数字 接下来m行输入l.r.d  要求判断l到r间的乘积能否被d整除. 思路:粗看很简单,好像可以直接暴力求解,再看妈耶这范围大 ...

  7. 2022 年牛客多校第四场补题记录

    A Task Computing 题意:给定长度为 nnn 的序列 {(wi,pi)}\{(w_i,p_i)\}{(wi​,pi​)},从中选出 mmm 项并重新排列得到子序列 {a1,a2,⋯,am ...

  8. HGAME2021刷题补题记录(懒 暂时断更)

    HGAME2021之我真的是web入门选手吗? week1 (应该可以发了吧 我看了下 week1提交好像0分) web(纯fw 赛时就写了两题) 什么什么顺风车那题 合成大西瓜 misc 不起眼压缩 ...

  9. Codeforces 补题记录

    首先总结一下前段时间遇到过的一些有意思的题. Round #474 (Div. 1 + Div. 2, combined)   Problem G 其实关键就是n这个数在排列中的位置. 这样对于一个排 ...

最新文章

  1. UVA-10054 The Necklace (欧拉回路)
  2. 教务处管理系统c语言编程,基于C语言的教务管理系统的设计
  3. Core Data(3)- 使用绑定
  4. TWebBrowser的基本应用
  5. 拥有一亿会员的爱奇艺如何搭建大数据实时分析平台
  6. IOZONE测试工具使用方法(转载)
  7. 【宋红康程序思想学习日记3】杨辉三角
  8. Buffer与Cache
  9. 对私有API提交的注意事项
  10. FreeType需要libpng的说明(编译时可以用参数去掉,2.12已支持svg)
  11. 腾讯云cdn设置 php,腾讯云CDN缓存过期配置问题详解
  12. Arxiv 2206 | Global Context Vision Transformers
  13. android点击vcf文件,Android vcard使用示例,生成vcf文件
  14. 什么是socket通信
  15. 【转载】当爱只是需要
  16. Aspose.Cells 取消隐藏行和列(取消隐藏单行、取消隐藏多行、取消隐藏单列、取消隐藏多列
  17. esp-01s接入天猫精灵与relay继电器控制电灯
  18. catia利用宏批量改名的方法_CATIA宏:批量将零件转为设计模式插件,轻轻松松使用高速缓存...
  19. php毫米级监控,监控镜头毫米数与距离对照表
  20. 笔记本电脑接通网线联网

热门文章

  1. vsnprintf 与 _vsnprintf 的区别
  2. 喜欢写代码、讨厌内卷:一个37岁中年程序员的开源故事
  3. 单链表——指定结点的前插和后插
  4. ewomail 内部通讯_Docker部署ewomail邮件服务器
  5. Centos7安装Beanstalkd
  6. 登录亚马逊显示内部服务器出错,亚马逊账号无法登录怎么办?是什么原因导致的?...
  7. flutter showDialog弹窗
  8. 学编程的到底要不要考研?
  9. Scala语言的数据类型
  10. 生产者消费者模型 线程相关