【CodeForces Round #550】A-F | 模拟 | 贪心 | 高精 | BFS | 二分图 | E
今年怎么没有愚人节比赛了 CF你看看人家洛谷
唉鸭原来那边还没到愚人节呢… 愚人节比赛还是有的,在今晚 qwq
【CodeForces 1144 A-F】
Tags:模拟 贪心 BFS 高精 二分图判断
A. Diverse Strings
[A] 题意
给定 T≤100T \le 100T≤100 个小写字母组成的字符串(leni≤100len_i \le 100leni≤100)
问这个字符串所包含的字母是否满足以下条件:
- 1.每种字母至多出现一次
- 2.出现的字母是相邻的
比如 ab、ba、abc、acb、bac、bca、cab、cbaab、ba、abc、acb、bac、bca、cab、cbaab、ba、abc、acb、bac、bca、cab、cba 都是满足条件的
aa、abb、ac、azaa、abb、ac、azaa、abb、ac、az 都不是满足条件的
[A] 思路
just implementation.
模拟,简单计数即可。
时间复杂度:O(Σleni)O(\Sigma\ len_i)O(Σ leni)
[A] 代码
#include<cstdio>#define GC getchar()
#define _SN(x) {char _c=GC,_v=1;for(x=0;_c<48||_c>57;_c=GC)if(_c==45)_v=-1;for(;_c>=48&&_c<=57;x=(x<<1)+(x<<3)+_c-48,_c=GC);if(_v==-1)x=-x;}
#define _SAN(a,n) {auto _i=0,_n=n;for(;_i<_n;++_i)_SN(a[_i])}
#define _SA(a,l,r) {auto _i=l,_r=r;for(;_i<_r;++_i)_SN(a[_i])}
#define _gS(_1, _2, _3, _sc, ...) _sc
#define sc(...) _gS(__VA_ARGS__,_SA,_SAN,_SN, ...)(__VA_ARGS__)
#define _G1(_1) int _1;sc(_1)
#define _G2(_1,_2) int _1,_2;sc(_1)sc(_2)
#define _G3(_1,_2,_3) int _1,_2,_3;sc(_1)sc(_2)sc(_3)
#define _gG(_1,_2,_3,_get, ...) _get
#define get(...) _gG(__VA_ARGS__,_G3,_G2,_G1, ...)(__VA_ARGS__)char s[666];int main()
{get(T)while (T--){scanf("%s", s);int hs[266] = {0};for (char *p=s; *p; ++p)++hs[*p];int cnt = 0;for (int i=1; i<266; ++i){if (hs[i]&&!hs[i-1])++cnt;if (hs[i]>=2)cnt = 666;}puts(cnt == 1 ? "Yes" : "No");}return 0;
}
B. Parity Alternated Deletions
[B] 题意
给定 n≤2000n \le 2000n≤2000 个正整数(ai≤106a_i \le 10^6ai≤106)
现按如下规则进行删除操作:
- 1.第一次删除时,可任选一个数删掉
- 2.其他时候,如果刚才删了奇数,则这次就只能删偶数;如果刚才删了偶数,则这次就只能删奇数
- 3.当无法再删数时就停止,然后统计没删的数之和为 sumsumsum(都删完了的话,sum=0sum = 0sum=0)
问按照这样的规则,sumsumsum 能取得的最小值是多少。
[B] 思路
就直接贪心啦。
把奇数放在 bbb 数组中,偶数放在 ccc 数组中,各自排升序,然后同时删除倒数 min{lenb,lenc}min\{len_b,len_c\}min{lenb,lenc} 这么多个数。
然后如果还有数组有剩的话,再把它的最后一个给删掉。
然后求和就是答案(数据刚好不会爆 intintint,这不符合愚人节 出题人好良心啊 qwq)。
时间复杂度:O(nlogn)O(nlogn)O(nlogn)
[B] 代码
(好懒啊…就vector算了)
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>#define GC getchar()
#define _SN(x) {char _c=GC,_v=1;for(x=0;_c<48||_c>57;_c=GC)if(_c==45)_v=-1;for(;_c>=48&&_c<=57;x=(x<<1)+(x<<3)+_c-48,_c=GC);if(_v==-1)x=-x;}
#define _SAN(a,n) {auto _i=0,_n=n;for(;_i<_n;++_i)_SN(a[_i])}
#define _SA(a,l,r) {auto _i=l,_r=r;for(;_i<_r;++_i)_SN(a[_i])}
#define _gS(_1, _2, _3, _sc, ...) _sc
#define sc(...) _gS(__VA_ARGS__,_SA,_SAN,_SN, ...)(__VA_ARGS__)
#define _G1(_1) int _1;sc(_1)
#define _G2(_1,_2) int _1,_2;sc(_1)sc(_2)
#define _G3(_1,_2,_3) int _1,_2,_3;sc(_1)sc(_2)sc(_3)
#define _gG(_1,_2,_3,_get, ...) _get
#define get(...) _gG(__VA_ARGS__,_G3,_G2,_G1, ...)(__VA_ARGS__)
#define _F0N(i,n) for(auto i=0;i<n;++i)
#define _FLR(i,l,r) for(auto i=l,_r=r;i<_r;++i)
#define _gF(_1, _2, _3, _F, ...) _F
#define F(...) _gF(__VA_ARGS__,_FLR,_F0N, ...)(__VA_ARGS__)
#define ALL(X) (X).begin(),(X).end()
#define SORT(X) std::sort(ALL(X))
template<class T>
void PRT(const T _){if(_<0){putchar(45),PRT(-_);return;}if(_>=10)PRT(_/10);putchar(_%10+48);}std::vector<int> odds, evens;int main()
{get(n)F(i, n){get(tp)if (tp&1)odds.emplace_back(tp);elseevens.emplace_back(tp);}SORT(odds), SORT(evens);while (!odds.empty() && !evens.empty())odds.pop_back(), evens.pop_back();long long sum = 0;if (!odds.empty())odds.pop_back();if (!evens.empty())evens.pop_back();for (auto e : odds)sum += e;for (auto e : evens)sum += e;PRT(sum);return 0;
}
C. Two Shuffled Sequences
[C] 题意
给定 1≤n≤2×1051\le n \le 2\times 10^51≤n≤2×105 个数(0≤ai≤2×1050 \le a_i \le 2\times 10^50≤ai≤2×105),
问这个数组是不是通过一个严格递增数组和另一个严格递减数组合成而得到的(合成时可以随意调换元素顺序)。
如果是,输出一种合成可能(输出这两个数组,一个严格递增,另一个严格递减)。
tips
:长度为 000 或 111 的任意数组都既是严格递增数组又是严格递减数组。
[C] 思路
显然,一个数组是可以满足要求的 当且仅当 其包含数的出现次数皆 ≤2\le2≤2
用 mapmapmap 计数即可。如果ok的话,顺着取一遍数,再倒着取一遍数即可。
时间复杂度:O(nlogn)O(nlogn)O(nlogn)
[C] 代码
(模板稍微有点过分哈…实在是太懒了 qwq 望谅解)
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<string>
#include<algorithm>
#include<utility>
#include<vector>
#include<list>
#include<map>
#include<set>
#include<unordered_map>
#include<unordered_set>
#include<bitset>
#include<cctype>
#include<climits>#define GC getchar()
#define _SN(x) {char _c=GC,_v=1;for(x=0;_c<48||_c>57;_c=GC)if(_c==45)_v=-1;for(;_c>=48&&_c<=57;x=(x<<1)+(x<<3)+_c-48,_c=GC);if(_v==-1)x=-x;}
#define _SAN(a,n) {auto _i=0,_n=n;for(;_i<_n;++_i)_SN(a[_i])}
#define _SA(a,l,r) {auto _i=l,_r=r;for(;_i<_r;++_i)_SN(a[_i])}
#define _gS(_1, _2, _3, _sc, ...) _sc
#define sc(...) _gS(__VA_ARGS__,_SA,_SAN,_SN, ...)(__VA_ARGS__)
#define _G1(_1) int _1;sc(_1)
#define _G2(_1,_2) int _1,_2;sc(_1)sc(_2)
#define _G3(_1,_2,_3) int _1,_2,_3;sc(_1)sc(_2)sc(_3)
#define _gG(_1,_2,_3,_get, ...) _get
#define get(...) _gG(__VA_ARGS__,_G3,_G2,_G1, ...)(__VA_ARGS__)
#define _F0N(i,n) for(auto i=0;i<n;++i)
#define _FLR(i,l,r) for(auto i=l,_r=r;i<_r;++i)
#define _gF(_1, _2, _3, _F, ...) _F
#define F(...) _gF(__VA_ARGS__,_FLR,_F0N, ...)(__VA_ARGS__)
#define _FD0(i,n) for(auto i=0;i<=n;++i)
#define _FDL(i,l,r) for(auto i=l,_r=r;i<=_r;++i)
#define _gFD(_1, _2, _3, _FD, ...) _FD
#define FD(...) _gFD(__VA_ARGS__,_FDL,_FD0, ...)(__VA_ARGS__)#define OPER1(T,x1,b1) inline bool operator<(const T&o)const{return x1 b1 o.x1;}
#define OPER2(T,x1,b1,x2,b2) inline bool operator<(const T&o)const{return x1 b1 o.x1||x1==o.x1&&x2 b2 o.x2;}
#define OPER3(T,x1,b1,x2,b2,x3,b3) inline bool operator<(const T&o)const{return x1 b1 o.x1||x1==o.x1&&(x2 b2 o.x2||x2==o.x2&&x3 b3 o.x3);}#define LL long long
#define ULL unsigned long long
#define PC putchar
template<class T>
void PRT(const T _){if(_<0){PC(45),PRT(-_);return;}if(_>=10)PRT(_/10);PC(_%10+48);}
template<class T>
void UPRT(const T _){if(_>=10)UPRT(_/10);PC(_%10+48);}#define CON constexpr
#define T_CASE int CASE;sc(CASE)for(int __=1;__<=CASE;++__)
#define cincout std::cin.tie(nullptr),std::cout.tie(nullptr),std::ios::sync_with_stdio(false);
#define eps 1e-8
#define PI 3.141592653589793
#define MAX_INT 2147483647
#define MIN_INT -2147483648
#define MAX_LL 9223372036854775807
#define MIN_LL -9223372036854775808
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3fLL
#define endl '\n'
#define priority_queue priority_queue
#define PQ std::priority_queue
#define PR std::pair
#define vector vector
#define VI std::vector<int>
#define MII std::map<int,int>
#define MLI std::map<LL,int>
#define MSI std::map<std::string,int>
#define PII std::pair<int,int>
#define PLI std::pair<LL,int>
#define PSI std::pair<std::string,int>
#define MPFD(k) auto it=mp.find(k)#define MIN(a, b) ((a)<(b)?(a):(b))
#define MIN3(a, b, c) (MIN(a, MIN(b, c)))
#define MAX(a, b) ((a)>(b)?(a):(b))
#define MAX3(a, b, c) (MAX(a, MAX(b, c)))
#define get_max(a,l,r,_max) auto _max=a[l];for(int _i=l+1,_r=r;_i<_r;++_i)if(_max<a[_i])_max=a[_i]
#define get_min(a,l,r,_min) auto _min=a[l];for(int _i=l+1,_r=r;_i<_r;++_i)if(_min<a[_i])_min=a[_i]
#define ABS(a) ((a)>0?(a):-(a))
#define FABS(a) ((a)>0?(a):-(a))
#define log2n(x) (log(x)/0.69314718055995)
#define MHD(p1, p2) ((p1.x>p2.x?p1.x-p2.x:p2.x-p1.x)+(p1.y>p2.y?p1.y-p2.y:p2.y-p1.y))#define PB emplace_back
#define EB emplace_back
#define BRK else break
#define ALL(X) (X).begin(),(X).end()
#define SORT(X) std::sort(ALL(X))
#define SORTD(X) std::sort(ALL(X),std::greater<decltype((X)[0])>())
#define swap(a, b) do{auto _t=a; a=b; b=_t;}while(0)
#define mem0(a) memset(a,0,sizeof(a))
#define memf1(a) memset(a,-1,sizeof(a))
#define meminf(a) memset(a,0x3f,sizeof(a))CON int MN(2e5+7);MII mp;
int sta[MN], top;int main()
{get(n)F(i, n){get(tp)++mp[tp];}for (auto &pr : mp)if (pr.second >= 3)return puts("NO"), 0;puts("YES");for (auto &pr : mp){PRT(pr.first), PC(10);--pr.second;}for (auto &pr : mp){if (pr.second)sta[top++] = pr.first;}PRT(top), PC(10);for (int i=top-1; i>=0; --i)PRT(sta[i]), PC(32);return 0;
}
D. Equalize Them All
[D] 题意
给定 1≤n≤2×1051\le n \le 2\times 10^51≤n≤2×105 个数(0≤ai≤2×1050 \le a_i \le 2\times 10^50≤ai≤2×105),
现在提供两种操作:
- 1.任意选择相邻的两个数,让其中一个数加上这俩数差的绝对值
- 2.任意选择相邻的两个数,让其中一个数减去这俩数差的绝对值
问最少进行多少次操作就可以让整个数组的数都互相相等,并且输出每一步操作(选择哪种操作、操作哪两个数)
[D] 思路
其实这两种操作就是把某个数赋值给它旁边的那个数
所以可以先贪心选择出最后变成的数是多少(显然是出现次数最多者),再 BFS 得到整个扩散过程
时间复杂度:O(n)O(n)O(n)
[D] 代码
#include <cstdio>
#include <unordered_map>#define GC getchar()
#define _SN(x) {char _c=GC,_v=1;for(x=0;_c<48||_c>57;_c=GC)if(_c==45)_v=-1;for(;_c>=48&&_c<=57;x=(x<<1)+(x<<3)+_c-48,_c=GC);if(_v==-1)x=-x;}
#define _SAN(a,n) {auto _i=0,_n=n;for(;_i<_n;++_i)_SN(a[_i])}
#define _SA(a,l,r) {auto _i=l,_r=r;for(;_i<_r;++_i)_SN(a[_i])}
#define _gS(_1, _2, _3, _sc, ...) _sc
#define sc(...) _gS(__VA_ARGS__,_SA,_SAN,_SN, ...)(__VA_ARGS__)
#define _G1(_1) int _1;sc(_1)
#define _G2(_1,_2) int _1,_2;sc(_1)sc(_2)
#define _G3(_1,_2,_3) int _1,_2,_3;sc(_1)sc(_2)sc(_3)
#define _gG(_1,_2,_3,_get, ...) _get
#define get(...) _gG(__VA_ARGS__,_G3,_G2,_G1, ...)(__VA_ARGS__)
#define _F0N(i,n) for(auto i=0;i<n;++i)
#define _FLR(i,l,r) for(auto i=l,_r=r;i<_r;++i)
#define _gF(_1, _2, _3, _F, ...) _F
#define F(...) _gF(__VA_ARGS__,_FLR,_F0N, ...)(__VA_ARGS__)#define PC putchar
template<class T>
void PRT(const T _){if(_<0){PC(45),PRT(-_);return;}if(_>=10)PRT(_/10);PC(_%10+48);}
template<class T>
void UPRT(const T _){if(_>=10)UPRT(_/10);PC(_%10+48);}constexpr int MN(4e5+7);std::unordered_map<int, int> mp;int a[MN];
enum DIR
{LL, RR, DIRCNT
};
constexpr int dx[DIRCNT]{-1, 1};struct Node
{int idx;DIR from;
} q[MN];
bool vis[MN];
int head, tail;int main()
{get(n)F(i, n){sc(a[i])++mp[a[i]];}int max_cnt = 0, kk;for (auto &pr : mp)if (pr.second > max_cnt)max_cnt = pr.second, kk = pr.first;PRT(n - max_cnt), PC(10);F(i, n){if (a[i]==kk){if (i-1>=0&&a[i-1]!=kk && !vis[i-1])vis[q[tail].idx = i-1] = true, q[tail++].from = RR;if (i+1<n&&a[i+1]!=kk && !vis[i+1])vis[q[tail].idx = i+1] = true, q[tail++].from = LL;}}while (head!=tail){Node now = q[head++];printf("%d %d %d\n", (a[now.idx] < kk ? 1 : 2), now.idx+1, now.idx+1 + dx[now.from]);F(i, DIRCNT){Node next = now;next.idx += dx[i];if (next.idx>=0 && next.idx<n && a[next.idx]!=kk && !vis[next.idx]){q[tail++] = next;vis[next.idx] = true;}}}return 0;
}
E. Median String
[E] 题意
给定两个等长小写字母字符串 sss,ttt,他们的 len≤2×105len \le 2\times 10^5len≤2×105
保证 sss 的字典序在 ttt 前面。
问字典序刚好在 sss、ttt 中间的那个序列是啥。
[E] 思路
26进制高精呀。
答案就是 s+t2\frac{s+t}{2}2s+t。
时间复杂度:O(len)O(len)O(len)
[E] 代码
#include <cstdio>#define GC getchar()
#define _SN(x) {char _c=GC,_v=1;for(x=0;_c<48||_c>57;_c=GC)if(_c==45)_v=-1;for(;_c>=48&&_c<=57;x=(x<<1)+(x<<3)+_c-48,_c=GC);if(_v==-1)x=-x;}
#define _SAN(a,n) {auto _i=0,_n=n;for(;_i<_n;++_i)_SN(a[_i])}
#define _SA(a,l,r) {auto _i=l,_r=r;for(;_i<_r;++_i)_SN(a[_i])}
#define _gS(_1, _2, _3, _sc, ...) _sc
#define sc(...) _gS(__VA_ARGS__,_SA,_SAN,_SN, ...)(__VA_ARGS__)
#define _G1(_1) int _1;sc(_1)
#define _G2(_1,_2) int _1,_2;sc(_1)sc(_2)
#define _G3(_1,_2,_3) int _1,_2,_3;sc(_1)sc(_2)sc(_3)
#define _gG(_1,_2,_3,_get, ...) _get
#define get(...) _gG(__VA_ARGS__,_G3,_G2,_G1, ...)(__VA_ARGS__)
#define _F0N(i,n) for(auto i=0;i<n;++i)
#define _FLR(i,l,r) for(auto i=l,_r=r;i<_r;++i)
#define _gF(_1, _2, _3, _F, ...) _F
#define F(...) _gF(__VA_ARGS__,_FLR,_F0N, ...)(__VA_ARGS__)#define PC putchar
#define CON constexprCON int MN(2e5+7);
CON RDX(26);
#define toi(c) c-'a'
#define toc(i) i+'a'char s[MN], t[MN];
int sum[MN], ans[MN];int main()
{get(len)scanf("%s %s", s, t);F(i, len)sum[i] = toi(s[i]) + toi(t[i]);F(i, len){ans[i] = (sum[i] >> 1);if (sum[i] & 1)sum[i+1] += RDX;}for (int i=len-1; i>=0; --i)if (ans[i] >= RDX)ans[i-1] += ans[i] / RDX, ans[i] %= RDX;F(i, len)PC(toc(ans[i]));return 0;
}
F. Graph Without Long Directed Paths
[F] 题意
给定 VVV 个点、EEE 条边的无向连通图(无自环无重边)(V、EV、EV、E 皆 ≤2×105\le 2 \times 10^5≤2×105)
问能否把这些无向边变成有向边,使得整个图不存在长度大于 111 的路径。
如果不能输出 NONONO,如果能则输出 YESYESYES,然后对每一条边,输出它是否就是按照之前输入顺序变成有向边
[F] 思路
就是判断是不是二分图。二染色 BFSBFSBFS 一下就行啦。
写代码的时候脑子要灵泛一点… 不要把自己给绕进去了
时间复杂度:O(V+E)O(V+E)O(V+E)
[F] 代码
#include <cstdio>
#include <unordered_map>#define GC getchar()
#define _SN(x) {char _c=GC,_v=1;for(x=0;_c<48||_c>57;_c=GC)if(_c==45)_v=-1;for(;_c>=48&&_c<=57;x=(x<<1)+(x<<3)+_c-48,_c=GC);if(_v==-1)x=-x;}
#define _SAN(a,n) {auto _i=0,_n=n;for(;_i<_n;++_i)_SN(a[_i])}
#define _SA(a,l,r) {auto _i=l,_r=r;for(;_i<_r;++_i)_SN(a[_i])}
#define _gS(_1, _2, _3, _sc, ...) _sc
#define sc(...) _gS(__VA_ARGS__,_SA,_SAN,_SN, ...)(__VA_ARGS__)
#define _G1(_1) int _1;sc(_1)
#define _G2(_1,_2) int _1,_2;sc(_1)sc(_2)
#define _G3(_1,_2,_3) int _1,_2,_3;sc(_1)sc(_2)sc(_3)
#define _gG(_1,_2,_3,_get, ...) _get
#define get(...) _gG(__VA_ARGS__,_G3,_G2,_G1, ...)(__VA_ARGS__)
#define _F0N(i,n) for(auto i=0;i<n;++i)
#define _FLR(i,l,r) for(auto i=l,_r=r;i<_r;++i)
#define _gF(_1, _2, _3, _F, ...) _F
#define F(...) _gF(__VA_ARGS__,_FLR,_F0N, ...)(__VA_ARGS__)#define PC putchar
template<class T>
void PRT(const T _){if(_<0){PC(45),PRT(-_);return;}if(_>=10)PRT(_/10);PC(_%10+48);}
template<class T>
void UPRT(const T _){if(_>=10)UPRT(_/10);PC(_%10+48);}#define CON constexprCON int MN(2e5+7);int V, E;
struct Edge
{int dest, next;bool rev;
} edge[2 * MN], re_edge[MN];
int head[MN], tot;
void add_edge(const int u, const int v) {edge[++tot].next = head[u]; edge[tot].dest = v; head[u] = tot;}std::unordered_map<int, int> mp[MN];
int q[MN];enum COLOR
{BLACK = 2, WHITE = 3
};
int color[MN];int main()
{sc(V)sc(E)F(i, E){get(u, v)add_edge(u, v);add_edge(v, u);re_edge[i].dest = v,re_edge[i].rev = false;mp[u][v] = mp[v][u] = i;}int h = 0, t = 0;color[1] = BLACK;for (int i=head[1]; i; i=edge[i].next){const int v = edge[i].dest;color[q[t++]=v] = WHITE;int idx = mp[1][v];re_edge[idx].rev = re_edge[idx].dest != v;}while (h!=t){int u = q[h++];for (int i=head[u]; i; i=edge[i].next){const int v = edge[i].dest;if (!color[v])color[q[t++]=v] = color[u] ^ 1;else if (color[v] == color[u])return puts("NO"), 0;int idx = mp[u][v];if (color[u] == BLACK)re_edge[idx].rev = re_edge[idx].dest != v;elsere_edge[idx].rev = re_edge[idx].dest == v;}}puts("YES");F(i, E)UPRT(re_edge[i].rev);return 0;
}
【CodeForces Round #550】A-F | 模拟 | 贪心 | 高精 | BFS | 二分图 | E相关推荐
- 【题解】P1080 国王游戏(贪心+高精python天下第一)
P1080 国王游戏 题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排 ...
- Codeforces Round #636 (Div. 3) E. Weights Distributing 思维 + bfs
传送门 文章目录 题意: 思路: 题意: n≤2e5,m≤2e5n\le2e5,m\le2e5n≤2e5,m≤2e5 思路: 怎么感觉每场div3div3div3都有一个巧妙的图论题. 首先如果只有两 ...
- Codeforces Round #709 (Div. 1) B. Playlist 链表维护 + bfs
传送门 文章目录 题意: 思路: 题意: 思路: 紧跟刘爷脚步补题. 不难想到用链表维护下一个数是什么,这样就跟以前做过的一个题差不多了,首先将初始的时候删掉的点的前一个点即为题目中的AAA入队,让后 ...
- NOIP 2012 T2 国王游戏 (贪心+高精)
思路: 呃呃网上那么多题解写得都不错-.. 就是高精 巨坑... 这里展出的是任氏高精(纯自己yy滴) //By SiriusRen #include <cstdio> #include ...
- Codeforces Round 550 (Div.3) 题解
目录 A.DiverseStringsA.\ Diverse\ StringsA. Diverse Strings B.ParityAlternatedDeletionsB.\ Parity\ Alt ...
- Educational Codeforces Round 12 C. Simple Strings 贪心
C. Simple Strings 题目连接: http://www.codeforces.com/contest/665/problem/C Description zscoder loves si ...
- 【板刷 educational round】Educational Codeforces Round 3 A - F
总结 ABC没什么说的,D体面没读明白,vp的时候没做出来.E题计算lca的时候少跳了一步,调了很久才发现,说明对板子还是有些生疏.从F题学到了线段树的一种类似二分的查询方法,学到了set的erase ...
- Codeforces Round #620 (Div. 2) D 贪心 revers 的妙用 编程思维的降维打击
题目 题解思路 贪心 思路 要让最短 就是让大的数尽可能的出现在前面 最长则相反 一开始想拼接出来,无奈写的太多问题放弃了. 参考文章 最短 就先让 全部数字先从大到小输入进去 再控制他符合题目的条件 ...
- Codeforces Round #550 (Div. 3)E. Median String
把字符串看作是26进制的数,从后往前翻译,那么就可以把两个串变成对应的26进制的数字,那么只要把两个数加起来除以二就得到中间的串对应的数了,同理再转化回来就行了. 但是这样会有一个问题就是串的长度有2 ...
最新文章
- MindSpore张量mindspore::tensor
- 第九课.Python文件操作
- vmware 虚拟机控制台打开慢的解决方案
- 修改mysql用户名密码
- python中的装饰器有哪些-python中的装饰器详解
- 基于 Docker 和 GitLab 的前端自动化部署实践笔记
- 弹层蒙版(mask),ios滚动穿透,我们项目的解决方案
- 微博自媒体,一个新的生态
- 增大表名最大长度_风电叶片材料的发展变迁史,及风力发电机叶片长度发展历程...
- 学习 | Spring Cloud Config 从入门到精通
- html里面注释浮动框,“浮动”注释与HTML / CSS / JavaScript /任何
- 这款能够生成文档的接口测试软件,为什么越来越受欢迎?
- 【SQL】MERGE
- [转载] Python之使用K-Means算法聚类消费行为特征数据分析(异常点检测)
- javascript Prototype constructor的理解(一)
- 单片机ISP烧录原理
- 在一台2010年的老电脑上安装黑群辉dsm5.2并完成外网访问与洗白操作
- 移动硬盘或U盘无法安全弹出怎么快速安全弹出?
- 艾永亮:优衣库,究竟是怎么卖衣服的?
- python中eval()函数的作用及使用方法