Codeforces Global Round 4 题解
技不如人,肝败吓疯……
开场差点被 A 题意杀了,幸好仔细再仔细看,终于在第 7 分钟过掉了。
跟榜。wtf 怎么一群人跳题/倒序开题?
立刻紧张,把 BC 迅速切掉,翻到了 100+。
开 D。感觉有点吓人……感觉有点可做?
的确挺可做。再切掉 D,但是此时已经到 300+ 了。
没事,还能翻。
开 E。这……什么玩意?
瞄了一眼 F1,……
盯着这两题盯到自闭。
最后 rk 1000 左右。我的名字颜色真的是对的吗……
A
看懂题了就是水题。选上所有小于等于第一个党派一半人数的党派,如果不行就不行,否则就可以。
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int maxn=100010; #define MP make_pair #define PB push_back #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline ll read(){char ch=getchar();ll x=0,f=0;while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return f?-x:x; } int n,a[maxn],s,s2,cnt; int main(){n=read();FOR(i,1,n) s+=a[i]=read();s2=a[1];cnt=1;FOR(i,2,n) if(a[1]>=2*a[i]) s2+=a[i],cnt++;if(s2*2<=s) puts("0");else{printf("%d\n",cnt);printf("1 ");FOR(i,2,n) if(a[1]>=2*a[i]) printf("%d ",i);} }
View Code
B
枚举中间的 o,然后看看两边能选出多少个 vv,简单前缀/后缀和解决。
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int maxn=1000100; #define MP make_pair #define PB push_back #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline ll read(){char ch=getchar();ll x=0,f=0;while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return f?-x:x; } int n,pre[maxn],suf[maxn]; ll ans; char s[maxn]; int main(){scanf("%s",s+1);n=strlen(s+1);FOR(i,2,n){pre[i]=pre[i-1];if(s[i]=='v' && s[i-1]=='v') pre[i]++;} ROF(i,n-1,1){suf[i]=suf[i+1];if(s[i]=='v' && s[i+1]=='v') suf[i]++;}FOR(i,1,n) if(s[i]=='o') ans+=1ll*pre[i-1]*suf[i+1];cout<<ans<<endl; }
View Code
C
最左上角的可以随便选。
第一行的在左边那个已经确定后,可以发现可以选两种。
第一列的同理,每个可以选两种。
不在第一行也不在第一列的,发现只能选固定的一种。
答案就是 $2^{n+m}$。
(为什么一群人盯样例盯出来了……)
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int maxn=1010,mod=998244353; #define MP make_pair #define PB push_back #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline ll read(){char ch=getchar();ll x=0,f=0;while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return f?-x:x; } int n,m; int qpow(int a,int b){int ans=1;for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) ans=1ll*ans*a%mod;return ans; } int main(){n=read();m=read();printf("%d\n",qpow(2,n+m)); }
View Code
D
每个点度数不小于 $2$,所以边数最小为 $n$。
不妨找到第一个大于等于 $n$ 的质数作为边数。
根据一些%*#(!^定理(猜想?),$n\ge 3$ 时,$[n,\frac{3}{2}n]$ 中至少有一个质数。
可以通过下面这个方法构造出一个有 $2n-m$ 个度数为 $2$ 的点,$m-n$ 个度数为 $3$ 的点的图。
首先 $i$ 向 $i+1$ 连边($n$ 向 $1$ 连边),此时用了 $n$ 条边,所有点度数为 $2$。
剩下的 $m-n$ 条边随便连,只要没有重边并且这 $m-n$ 条边不重复用点就好了。
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int maxn=100010; #define MP make_pair #define PB push_back #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline ll read(){char ch=getchar();ll x=0,f=0;while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return f?-x:x; } int n,m,cnt; bool use[maxn]; bool check(int x){if(x==1) return false;for(int i=2;i*i<=x;i++) if(x%i==0) return false;return true; } int main(){n=m=read();while(!check(m)) m++;cnt=m-n;printf("%d\n",m);FOR(i,1,n){printf("%d %d\n",i,i%n+1);if(cnt && !use[i]){int to=i%n+1;to=to%n+1;while(use[to]) to=to%n+1;use[i]=use[to]=true;printf("%d %d\n",i,to);cnt--;}} }
View Code
E
这也太神了吧……
对于长度 $\le 3$ 的字符串,可以任意选其中一个字符。
对于长度 $\ge 4$ 的字符串,取出前两个字符和后两个字符,由于相邻字符不相等,所以一定可以从前两个中选出一个,后两个中选出一个,使得它们相等。删掉这四个字符,然后重复操作。
可以发现这样求出的一定是回文串而且合法。
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int maxn=1000100; #define MP make_pair #define PB push_back #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline ll read(){char ch=getchar();ll x=0,f=0;while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return f?-x:x; } int n,m,l,r; char s[maxn],t[maxn]; int main(){scanf("%s",s+1);n=strlen(s+1);l=1;r=n;while(r-l+1>=4){if(s[l]==s[r] || s[l]==s[r-1]) t[++m]=s[l];else t[++m]=s[l+1];l+=2;r-=2;}FOR(i,1,m) putchar(t[i]);if(l<=r) t[++m]=s[l];ROF(i,m,1) putchar(t[i]); }
View Code
转载于:https://www.cnblogs.com/1000Suns/p/11220815.html
Codeforces Global Round 4 题解相关推荐
- codeforces global round 1题解搬运
A,B很简单,跳过了. C题规律相当明显,可以直接对\(2^n-1\)打表,也可以不打表直接算最大因数. D题两种操作转化一下DP即可. E题考虑查分数组不变的性质. F题考虑dfs时动态维护每个叶子 ...
- Codeforces Global Round 1
Codeforces Global Round 1 题解:The Editorial of the First Codeforces Global Round A:其实mod 2计算一下就行了 B:删 ...
- Codeforces Global Round 1 晕阙记
Codeforces Global Round 1 晕阙记 我做这场比赛的时候晕得要死.做这三道题做太久了,rating涨不起来啊! A 如果愿意的话你可以看做是膜2意义下的运算,写快速幂等各种膜运算 ...
- Codeforces Global Round 3
Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...
- Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集
传送门 文章目录 题意: 思路: 题意: 给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau+av≥x ...
- 【Codeforces Global Round 23】B. Rebellion
Codeforces Global Round 23中B. Rebellion Codeforces比赛记录 文章目录 题目链接: 一.B. Rebellion 题目意思: 上思路: 总结 B. Re ...
- Codeforces Global Round 4-D. Prime Graph(伯特兰-切比雪夫定理)
题目:Codeforces Global Round 4-D. Prime Graph 题意:给出n(顶点的个数),要求所得图满足: 1.无平行边和自环 2.边的总数是个质数 3.每个点的度(也就是点 ...
- codeforces global round 23
constest :codeforces global round 23 contest time:2022.10.16 contest grade: 2800 contest rating chan ...
- Codeforces Global Round 9 A-D题解
文章目录 A - Sign Flipping B - Neighbor Grid C - Element Extermination D - Replace by MEX A - Sign Flipp ...
最新文章
- Redux你的Angular 2应用--ngRx使用体验
- C语言SHELL排序算法
- 故人的一份连连看代码,c语言版本
- 客户细分_客户细分:K-Means聚类和A / B测试
- 安杰文高等计算机与生产技术学校,法国留学院校推荐:安杰文高等计算机与生产技术学校...
- 摘自缪雪峰的博客的JavaScript个人笔记(3)
- python生成倒计时图片_python pygame--倒计时
- jsoup解析百度音乐
- 老司机和你深聊Kubenertes 资源分配之 Request 和 Limit 解析
- java名字自动生成_Java名字生成器
- ArcCatalog连接PostgreSQL创建SDE库
- newifi mini php,WBB - Newifi mini刷小米路由mini固件 + 屏蔽广告Adbyby插件小记
- 《ROS理论与实践》学习笔记(七)机器人语音交互
- 组策略命令应用设置大全
- 如何升级到 Ubuntu 20.04
- Machine Learning 简介与学习路线
- 哈希表算法通俗理解和实现
- gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。
- Win10自动宽带连接
- 软件体系结构:应用软件的设计与开发
热门文章
- No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...
- 剑指offer(26-33题)详解
- 《R语言实战》第2章
- Android时间选择器对话框的使用
- 多文件编程 【多文件编程】(26)
- Oracle 存储过程,函数和包。
- 计算机教室怎样自动批量修改ip,批量设置IP地址和计算机名
- python词云有什么用_如何用Python实现词云效果
- batch normalization的原理和作用_springboot自动配置原理
- ar9344 9382 8035 编程器固件_沈阳熔铜炉设计,紧固件加热炉_宏祥电炉