绵阳2020CCPC补题
绵阳2020CCPC D,K,J,L,G
D. Defuse the Bombs
知识点:二分答案
复杂度:\(O(nlogn+log^2n)\)
vp时我猜了一个结论,验了几个样例就写了,喜提WA3
然后队友写了二分答案复杂度\(O(log^2n)\),也WA3
然后队友发现是二分边界错了,改了后AC
反思:这题WA的两发都是可以避免的,即没判断更多的样例,也没计算二分上界
先排序求一个前缀和
二分答案后进行判断当前答案 \(ans\)
在 a 数组中二分得到第一个比x小的位置
那么 \(ans\) 是否可行即比较 \(pre[i] + x\) 与 \(i*x\) 的大小
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define ll long long
template<class T> using vc = vector<T>;
const int N = 1e5 + 5;
int n;
int a[N];
ll pre[N];
bool check(ll x)
{
auto it = upper_bound(a + 1, a + n + 1, x) - a - 1;
return pre[it] + x >= it * x;
}
void solve()
{
cin >> n;
rep(i, 1, n) cin >> a[i];
sort(a + 1, a + n + 1);
rep(i, 1, n) pre[i] = pre[i - 1] + a[i];
ll l = 0, r = 2e9 + 10, mid;
while (l < r)
{
mid = (l + r + 1) >> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
cout << l + 1 << endl;
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
K. Knowledge is Power
知识点:构造
复杂度:\(O(1)\)
该题思路出的很快,并且也排除了几个错误情况,但是还是没有完全验证正确性,导致WA一发,耐下心来这一发也可以避免的
一点点失误累积可能就会成为下次名落孙山的原因了
明显当 n 为奇数时可以拆成 \(\frac{n-1}{2}\) 与 \(\frac{n+1}{2}\)
当 n 为偶数时,我们讨论 \(\frac{n}{2}\) 的奇偶
- 当 \(\frac{n}{2}\) 为偶数时
显然可以拆成 \(\frac{n}{2}-1\) 与 \(\frac{n}{2}+1\) - 当 \(\frac{n}{2}\) 为奇数时
拆成 \(\frac{n}{2}-2\) 与 \(\frac{n}{2}+2\) 显然是一种合法情况
所以该情况答案的上界就为 4
样例贴心的给出了反例,什么良心出题人
此时显然 n 不可能拆成多于 3 个数
而 n 拆成 3 个数的情况显然固定- n % 3 == 0
n 可以拆成 \(\frac{n}{3}-1\) , \(\frac{n}{3}\) , \(\frac{n}{3}+1\) - n % 3 == 1
n 可以拆成 \(\frac{n-1}{3}-1\) , \(\frac{n-1}{3}\) , \(\frac{n-1}{3}+2\) - n % 3 == 2
n 可以拆成 \(\frac{n+1}{3}-2\) , \(\frac{n+1}{3}\) , \(\frac{n+1}{3}+1\)
- n % 3 == 0
直接判断3个数是否互质即可
样例甚至贴心的给出了唯一不可能的情况,他真的,我哭死
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define ll long long
template<class T> using vc = vector<T>;
int n;
void solve()
{
cin >> n;
if (n % 2) cout << 1 << endl;
else if (n == 6) cout << -1 << endl;
else if ((n / 2) % 2 == 0) cout << 2 << endl;
else
{
bool ok = false;
if (n % 3 == 1)
{
if ((n / 3) % 2 && (n / 3 - 1) % 3) ok = true;
}
else if (n % 3 == 2)
{
if (((n + 1) / 3) % 2 && (n / 3 - 1) % 3) ok = true;
}
else
{
if ((n / 3) % 2 == 0)
{
cout << 2 << endl;
return;
}
}
cout << (ok ? 3 : 4) << endl;
}
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
J. Joy of Handcraft
知识点:线段树 / 并查集
复杂度:\(O(mlog^2m)/O(mlogm)\)
这题一开始就验了线段树复杂度是对的,
但是队友线段树懒惰标记忘记清空导致一直没过样例,
线段树的bug还特别难找,熟练度还是低了
调了整整1个小时,虽然1发过
显然当 \(t\) 相同时 只保留最大的 \(x\) 即可
那么对于所有的 \(t=1,2,3,...,n\) 只会有1个答案
如果用线段树更新区间,那么所有的线段个数为 \(\frac{n}{2}+\frac{n}{3}+\frac{n}{4}+...+\frac{n}{n}\)
总和为 \(nlogn\), 乘上线段树区间修改的复杂度为 \(logn\),
总复杂度为 \(O(nlog^2n)\)
看了题解后发现还有并查集写法,具体操作就是并查集维护当前位置向后第一个没被染色的点
然后对染色区间的 \(x_i\) 从大到小排序,染完一个区间就将当前区间删除,染色次数就不会超过 \(O(m)\)
说来惭愧,写过原题却一点没印象
顺带一提,如果 \(ti>m\) 记得让 \(ti=min(ti,m)\)
否则很可能 RE 或者 WA
队友在debug到神志不清的时候把范围全改成1e5,导致一发过
这也在你的预料之中吗.jpg
线段树写法
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define ll long long
#define fi first
#define se second
#define pii pair<int,int>
template<class T> using vc = vector<T>;
const int N = 1e5 + 5;
int n, m;
struct Segment_Tree
{
struct P
{
int l, r;
// 懒惰标记
ll lazy;
} p[N << 2];
void init_lazy(int id)
{
/* 初始化懒惰标记 */
p[id].lazy = 0;
}
void union_lazy(int fa, int ne)
{
/* 合并父子标记 */
p[ne].lazy = p[fa].lazy;
}
void cal_lazy(int fa, int ne)
{
/* 用父亲标记修改当子区间 */
}
void push_down(int id)
{
if (p[id].lazy/* 判断是否有懒惰标记 */)
{
if (p[id].l != p[id].r)
{
int ne = id << 1;
cal_lazy(id, ne);
cal_lazy(id, ne + 1);
union_lazy(id, ne);
union_lazy(id, ne + 1);
}
init_lazy(id);
}
}
void update(int id)
{
int ne = id << 1;
/* 合并左右子树 */
}
void build(int id, int l, int r)
{
p[id].l = l;
p[id].r = r;
init_lazy(id);
if (l == r)
{
/* 初始化单点区间信息 */
return;
}
int mid = (l + r) >> 1;
int ne = id << 1;
build(ne, l, mid);
build(ne + 1, mid + 1, r);
update(id);
}
void change(int id, int l, int r, ll d)
{
push_down(id);
if (l <= p[id].l && p[id].r <= r)
{
/* 修改懒惰标记 */
p[id].lazy = d;
cal_lazy(id, id);
return;
}
int mid = (p[id].l + p[id].r) >> 1;
int ne = id << 1;
if (r <= mid) change(ne, l, r, d);
else if (l > mid) change(ne + 1, l, r, d);
else
{
change(ne, l, r, d);
change(ne + 1, l, r, d);
}
update(id);
}
P sum(int id, int l, int r)
{
if (p[id].lazy) return p[id];
if (l <= p[id].l && p[id].r <= r) return p[id];
int mid = (p[id].l + p[id].r) >> 1;
int ne = id << 1;
if (r <= mid) return sum(ne, l, r);
return sum(ne + 1, l, r);
}
}T;
void solve()
{
cin >> n >> m;
T.build(1, 1, m);
vc<int> t(m + 1);
rep(i, 1, n)
{
int ti, xi; cin >> ti >> xi;
ti = min(ti, m);
t[ti] = max(t[ti], xi);
}
vc<pii> p;
rep(i, 1, m) if (t[i]) p.emplace_back(t[i], i);
sort(p.begin(), p.end());
for (auto u : p)
for (int i = 1; i <= m; i += u.se * 2)
T.change(1, i, min(m, i + u.se - 1), u.fi);
rep(i, 1, m) cout << T.sum(1, i, i).lazy << " \n"[i == m];
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
并查集写法
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l,_##i=r;i<=_##i;i++)
#define per(i,r,l) for(int i=r,_##i=l;i>=_##i;i--)
#define ll long long
#define fi first
#define se second
#define pii pair<int,int>
template<class T> using vc = vector<T>;
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
int n, m, k;
int f[N];
void bcj_init(int n) { iota(f, f + n + 1, 0); }
int find(int u)
{
if (f[u] == u)return u;
return f[u] = find(f[u]);
}
void solve()
{
cin >> n >> m;
bcj_init(m + 1);
vc<int> t(m + 1);
rep(i, 1, n)
{
int ti, xi; cin >> ti >> xi;
ti = min(ti, m);
t[ti] = max(t[ti], xi);
}
vc<pii> p;
rep(i, 1, m) if (t[i]) p.emplace_back(t[i], i);
sort(p.begin(), p.end(), greater<pii>());
vc<int> ans(m + 1);
for (auto u : p)
{
for (int i = 1; i <= m; i += u.se * 2)
{
int x = find(i), r = min(m, i + u.se - 1);
while (x <= r)
{
ans[x] = u.fi;
f[x] = x + 1;
x = find(x);
}
}
}
rep(i, 1, m) cout << ans[i] << " \n"[i == m];
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
L. Lottery
知识点:多重背包,找规律
复杂度:\(O(nlog^2n+nlogn)\) 优化后 \(O(nlogn)\)
这题其实很快就有思路了,但是队友卡在上一题的线段树太久了,导致一直没占到电脑
然后在拿到电脑时,一开始的写法让map的指针乱指导致怒WA一发
后来增加一点常数去掉了乱七八糟的指针就一发AC
- 观察样例1我们可以得到,如果每种 \(2^i\) 只有1个,那么答案明显是 \(2^n\)
- 如果数据范围比较小明显就是一个多重背包,但是该题的范围是1e9
- 那么按照多重背包的优化,我们将每一对 \(a_i\) 与 \(x_i\) 进行拆分
例如 \(a_i=2\) 与 \(x_i = 3\) 我们就拆成 \(2^2\) 与 \(2^3\)
换句话说就是,当 \(x_i>=(1<<k)-1\) 时就拆出 \((111...11)_{01}\) - 当全部拆完时,对于每一位 \(2^{a_i}\) 在该位保留1 的情况下向 \(2^{a_i+1}\) 进位
- 处理完进位后,对于每一位 \(2^{a_i}\),\(x_i\) 要么为 1,要么为2
- 对于不连续的 \(a_i\) 明显是乘法原则计数
- 对于连续的 \(a_i\) 如果该位为 1,则方案数为后缀方案数 × 2 × 前缀方案数
- 对于连续的 \(a_i\) 如果该位为 2,则方案数为后缀方案数 × (2 × 前缀方案数 + 1)
- 举例来说就是 \(12121\) 的方案数为 \(2×(2×2×(2×2+1)+1)\)
明显我们从后向前枚举 \(2^{a_i}\) 更方便计算
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--)
#define ll long long
#define fi first
#define se second
template<class T> using vc = vector<T>;
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
int n, m, k;
map<int, int> mp;
void calc()
{
int a, x;
cin >> a >> x;
while (x)
{
auto &it = mp[a++];
x += it;
it = (x - 1) % 2 + 1;
x = (x - 1) / 2;
}
}
void solve()
{
mp.clear();
cin >> n;
rep(i, 1, n) calc();
ll ans = 1, tmp = 1;
for (auto it = mp.rbegin(); it != mp.rend(); it++)
{
if (it->se == 1) tmp = tmp * 2 % mod;
else tmp = (tmp * 2 + 1) % mod;
auto ne = next(it);
if (ne == mp.rend())
{
ans = ans * tmp % mod;
break;
}
if (ne->fi + 1 != it->fi)
{
ans = ans * tmp % mod;
tmp = 1;
}
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
优化后
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l,_##i=r;i<=_##i;i++)
#define per(i,r,l) for(int i=r,_##i=l;i>=_##i;i--)
#define ll long long
#define fi first
#define se second
#define pii pair<int,int>
template<class T> using vc = vector<T>;
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
int n, m, k;
pii a[N];
void solve()
{
cin >> n;
rep(i, 1, n) cin >> a[i].fi >> a[i].se;
sort(a + 1, a + n + 1);
vc<pii> p;
ll tmp(0);
rep(i, 1, n)
{
ll now = a[i].fi;
tmp += a[i].se;
if (i == n)
{
while (tmp)
{
p.emplace_back(now++, (tmp - 1) % 2 + 1);
tmp = (tmp - 1) / 2;
}
}
else
{
while (tmp && now != a[i + 1].fi)
{
p.emplace_back(now++, (tmp - 1) % 2 + 1);
tmp = (tmp - 1) / 2;
}
}
}
ll ans = 1, len = p.size() - 1; tmp = 1;
per(i, len, 0)
{
if (p[i].se == 1) tmp = tmp * 2 % mod;
else tmp = (tmp * 2 + 1) % mod;
if (!i || p[i].fi != p[i - 1].fi + 1)
{
ans = ans * tmp % mod;
tmp = 1;
}
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
G. Game of Cards
vp时没写出来的题,结论猜错了,果然博弈题还是要打表看sg函数
先打个表
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l;i<=r;i++)
array<int, 4> c;
const int sz = 7;
int dp[sz + 1][sz + 1][sz + sz / 2 + 1][2];
bool brute()
{
function<bool(array<int, 4>)> dfs = [&](array<int, 4> c) -> bool
{
auto &u = dp[c[0]][c[1]][c[2]][c[3]];
if (~u) return u;
bool ok = true;
if (c[0] >= 2) ok &= dfs({ c[0] - 1,c[1],c[2],c[3] });
if (c[0] && c[1] + c[2] + c[3]) ok &= dfs({ c[0] - 1,c[1],c[2],c[3] });
if (c[1] >= 2) ok &= dfs({ c[0],c[1] - 2,c[2] + 1,c[3] });
if (c[1] && c[2]) ok &= dfs({ c[0],c[1] - 1,c[2] - 1,c[3] | 1 });
return u = !ok;
};
return dfs(c);
}
void solve()
{
memset(dp, -1, sizeof(dp));
rep(i, 0, sz) rep(i1, 0, sz) rep(i2, 0, sz) rep(i3, 0, 1)
{
c = { i,i1,i2,i3 };
brute();
}
rep(i, 0, sz) rep(i1, 0, sz)
{
cout << string(i1, ' ');
rep(i2, 0, sz) cout << dp[i][i1][i2][0] << dp[i][i1][i2][1] << " \n"[i2 == sz];
}
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
solve();
}
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
01 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
10 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
01 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
10 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
01 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
10 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11
00 00 00 00 00 00 00 00
00 11 11 11 11 11 11 11
01 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
00 00 11 11 11 11 11 11
11 11 11 11 11 11 11 11
11 00 00 00 00 00 00 00
明显当 \(c_2>=2\) 时的规律十分好找
当 \(c_2>=2\) 时,\(c_0\%2==c_1\%3\) 时,先手必败现在来看 \(c_2<2\) 时的情况
- \(c_0\),0,0,0 时,当 \(c_0\) 为奇数或者等于 0 时,先手必败
- \(c_2==0\) 时
- \(c_0\) 为偶数时,\(c_1\%3!=2\) 先手必败
- \(c_0\) 为奇数时,\(c_1\%3==2\) 先手必败
- \(c_2==1\) 时
- \(c_0\) 为偶数时,\(c_1\%3==0\) 先手必败
- \(c_0\) 为奇数时,\(c_1\%3!=0\) 先手必败
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define ll long long
template<class T> using vc = vector<T>;
const int N = 1e5 + 5;
int n;
array<int, 4> c;
void pr(bool fi_win)
{
cout << (fi_win ? "Rabbit" : "Horse") << endl;
}
void solve()
{
rep(i, 0, 3) cin >> c[i];
if (c[2] >= 2) pr(c[0] % 2 != c[1] % 3);
else if (!c[1] && !c[2] && !c[3]) pr(c[0] % 2 == 0 && c[0]);
else if (c[2])
{
if (c[0] % 2) pr(c[1] % 3 == 0);
else pr(c[1] % 3);
}
else
{
if (c[0] % 2) pr(c[1] % 3 != 2);
else pr(c[1] % 3 == 2);
}
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
H. Hide and Seek
知识点:分类讨论
复杂度:\(O(1)\)
赛时甚至没看到这题,题解说的挺清楚的,确实不画图根本想不全
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l,_##i=r;i<=_##i;i++)
#define per(i,r,l) for(int i=r,_##i=l;i>=_##i;i--)
#define ll long long
template<class T> using vc = vector<T>;
void solve()
{
ll d01, d02, d12, ans(0);
cin >> d01 >> d02 >> d12;
if (d01 > d02) swap(d01, d02);
if (d12 == 0)
{
if (d01 != d02) ans = 0;
else if (!d01) ans = 1;
else ans = 4 * d01;
}
else if (d12 == d02 - d01) ans = (d01 + 1) * 4 * (d12 + 1) - 4;
else if (d12 == d02 + d01) ans = (d01 + 1) * 4 * (d02 + 1) - 4;
else if (d12 > d02 - d01 && d12 < d01 + d02)
{
if ((d02 - d12 - d01) % 2) ans = 0;
else
{
ll x = (d01 - d02 + d12) / 2;
ans = 8 * (d01 + d12 - x);
}
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
int T = 1;
cin >> T;
rep(i, 1, T)
{
cout << "Case #" << i << ": ";
solve();
}
}
绵阳2020CCPC补题的更多相关文章
- hdu5017:补题系列之西安网络赛1011
补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为m ...
- 2017河工大校赛补题CGH and 赛后小结
网页设计课上实在无聊,便开始补题,发现比赛时候僵着的东西突然相通了不少 首先,"追妹"这题,两个队友讨论半天,分好多种情况最后放弃(可是我连题目都没看啊),今天看了之后试试是不是直 ...
- 2018 HDU多校第四场赛后补题
2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...
- 2018 HDU多校第三场赛后补题
2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...
- [数]补题ver.
上次补题好像把两次训练混在一起了,总之先按时间顺序补完这一次|ू・ω・` ) HDU-6301 不会的东西不能逃避.jpg 红小豆非常讨厌构造题,因为非常不会,并且非常逃避学习这类题,因为总也搞不清楚 ...
- 4.30-5.1cf补题
//yy:拒绝转载!!! 悄悄告诉你,做题累了,去打两把斗地主就能恢复了喔~~~ //yy:可是我不会斗地主吖("'▽'") ~~~那就听两遍小苹果嘛~~~ 五一假期除了花时间建模 ...
- ICPC南京补题
由于缺的题目比较多,竟然高达3题,所以再写一篇补题的博客 Lpl and Energy-saving Lamps During tea-drinking, princess, amongst othe ...
- 2018 CCPC 桂林站(upc复现赛)补题
2018 CCPC 桂林站(upc复现赛)补题 G.Greatest Common Divisor(思维) 求相邻数的差值的gcd,对gcd分解素因子,对所有的素因子做一次遍历,找出最小答案. 几个样 ...
- 【cf补题记录】Codeforces Round #608 (Div. 2)
比赛传送门 再次改下写博客的格式,以锻炼自己码字能力 A. Suits 题意:有四种材料,第一套西装需要 \(a\).\(d\) 各一件,卖 \(e\) 块:第二套西装需要 \(b\).\(c\).\ ...
- 【cf补题记录】Codeforces Round #607 (Div. 2)
比赛传送门 这里推荐一位dalao的博客-- https://www.cnblogs.com/KisekiPurin2019/ A:字符串 B:贪心 A // https://codeforces.c ...
随机推荐
- KingbaseES集群管理维护案例之---备库checkpoint分析
数据库异常关闭时,数据库关闭时来不及或者没机会做checkpoint,则需要从上一个一致性检查的开始恢复.KingbaseES备机checkpoint是不能产生checkpoint WAL日志条目 ...
- KFS Oracle RAC 数据解析同步配置方法
一.logminer方式解析 1.数据库配置 - Oracle 1. 数据库中需要先设置 NSL_DATE_FORMAT,命令如下,设置好以后需要重启数据库: ALTER SYSTEM SET NLS ...
- Mac_linux_ssh防掉线
vi ~/.ssh/config 加入一条 ServerAliveInterval 60 #客户端主动向服务端请求响应的间隔
- ElasticSearch介绍和基本用法(一)
ElasticSearch 引言 1.在海量数据中执行搜索功能时,如果使用MySQL, 效率太低. 2.如果关键字输入的不准确,一样可以搜索到想要的数据. 3.将搜索关键字,以红色的字体展示. 介绍: ...
- C#,使用NPOI,导出excel文件
/// <summary> /// 导出excel文件 /// </summary> /// <param name="dt">Table表数据 ...
- Windows Server体验之安装
微软在Windows Server家族中有一个新的家族,名字就是Windows Server.这个按半年频道更新的版本目前是1903和Windows 10的命名方式一样.这个产品就是以前的服务器核心安 ...
- Django 之视图层
JsonResponse 1 json格式的数据有什么用 前后端数据交互需要使用json作为过渡,实现跨语言传输数据 2 前后端方法对应 JSON.stringify() - json.dumps( ...
- Kratos漫游指南 1 - 概览
您好,地球人,欢迎来到Kratos漫游指南. 对于刚开始研究Kratos框架的开发者来说,目前的文档有些零散,这与我们的模块化设计有一些关系,不过Don't panic,从这篇文章开始,我将试图打破这 ...
- 【项目实战】Kaggle泰坦尼克号的幸存者预测
前言 这是学习视频中留下来的一个作业,我决定根据大佬的步骤来一步一步完成整个项目,项目的下载地址如下:https://www.kaggle.com/c/titanic/data 大佬的传送门:http ...
- Python Client API文档
官网文档地址:http://docs.minio.org.cn/docs/master/python-client-api-reference 初使化MinIO Client对象 from minio ...