技不如人,肝败吓疯……

开场差点被 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 题解相关推荐

  1. codeforces global round 1题解搬运

    A,B很简单,跳过了. C题规律相当明显,可以直接对\(2^n-1\)打表,也可以不打表直接算最大因数. D题两种操作转化一下DP即可. E题考虑查分数组不变的性质. F题考虑dfs时动态维护每个叶子 ...

  2. Codeforces Global Round 1

    Codeforces Global Round 1 题解:The Editorial of the First Codeforces Global Round A:其实mod 2计算一下就行了 B:删 ...

  3. Codeforces Global Round 1 晕阙记

    Codeforces Global Round 1 晕阙记 我做这场比赛的时候晕得要死.做这三道题做太久了,rating涨不起来啊! A 如果愿意的话你可以看做是膜2意义下的运算,写快速幂等各种膜运算 ...

  4. Codeforces Global Round 3

    Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...

  5. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai​,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau​+av​≥x ...

  6. 【Codeforces Global Round 23】B. Rebellion

    Codeforces Global Round 23中B. Rebellion Codeforces比赛记录 文章目录 题目链接: 一.B. Rebellion 题目意思: 上思路: 总结 B. Re ...

  7. Codeforces Global Round 4-D. Prime Graph(伯特兰-切比雪夫定理)

    题目:Codeforces Global Round 4-D. Prime Graph 题意:给出n(顶点的个数),要求所得图满足: 1.无平行边和自环 2.边的总数是个质数 3.每个点的度(也就是点 ...

  8. codeforces global round 23

    constest :codeforces global round 23 contest time:2022.10.16 contest grade: 2800 contest rating chan ...

  9. Codeforces Global Round 9 A-D题解

    文章目录 A - Sign Flipping B - Neighbor Grid C - Element Extermination D - Replace by MEX A - Sign Flipp ...

最新文章

  1. Redux你的Angular 2应用--ngRx使用体验
  2. C语言SHELL排序算法
  3. 故人的一份连连看代码,c语言版本
  4. 客户细分_客户细分:K-Means聚类和A / B测试
  5. 安杰文高等计算机与生产技术学校,法国留学院校推荐:安杰文高等计算机与生产技术学校...
  6. 摘自缪雪峰的博客的JavaScript个人笔记(3)
  7. python生成倒计时图片_python pygame--倒计时
  8. jsoup解析百度音乐
  9. 老司机和你深聊Kubenertes 资源分配之 Request 和 Limit 解析
  10. java名字自动生成_Java名字生成器
  11. ArcCatalog连接PostgreSQL创建SDE库
  12. newifi mini php,WBB - Newifi mini刷小米路由mini固件 + 屏蔽广告Adbyby插件小记
  13. 《ROS理论与实践》学习笔记(七)机器人语音交互
  14. 组策略命令应用设置大全
  15. 如何升级到 Ubuntu 20.04
  16. Machine Learning 简介与学习路线
  17. 哈希表算法通俗理解和实现
  18. gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。
  19. Win10自动宽带连接
  20. 软件体系结构:应用软件的设计与开发

热门文章

  1. No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...
  2. 剑指offer(26-33题)详解
  3. 《R语言实战》第2章
  4. Android时间选择器对话框的使用
  5. 多文件编程 【多文件编程】(26)
  6. Oracle 存储过程,函数和包。
  7. 计算机教室怎样自动批量修改ip,批量设置IP地址和计算机名
  8. python词云有什么用_如何用Python实现词云效果
  9. batch normalization的原理和作用_springboot自动配置原理
  10. ar9344 9382 8035 编程器固件_沈阳熔铜炉设计,紧固件加热炉_宏祥电炉