写在前面

来到夏令营的第一场比赛,全是水题(第一题除外,不过是原题还是之前做过的,而且是并查集的果题,咕咕咕)

A

链接

点这里

思路

我就不写了,去看luogu题解吧,传送门

代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=4e5;
struct data
{
int nxt,to;
}e[maxn<<1];
int head[maxn],tot;
void add(int u,int v)
{
e[++tot]=(data){head[u],v};
head[u]=tot;
}
int f[maxn],n,m,v[maxn],k,a[maxn],cnt,ans[maxn];
int find(int x)
{
return x==f[x]?x:f[x]=find(f[x]);
}
void dfs(int x)
{
v[x]=1;
for (int i=head[x];i;i=e[i].nxt)
{
if (!v[e[i].to])
{
int f1=find(x),f2=find(e[i].to);
if (f1!=f2) f[f1]=f2;
dfs(e[i].to);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=0;i<n;++i) f[i]=i;
for (int i=0;i<m;++i)
{
int u,v;
scanf("%d%d",&u,&v);
add(u,v); add(v,u);
}
scanf("%d",&k);
for (int i=0;i<k;++i) scanf("%d",&a[i]),v[a[i]]=1;
for (int i=0;i<n;++i)
{
if (!v[i])
{
cnt++;
dfs(i);
}
}
ans[k]=cnt;
memset(v,0,sizeof(v));
for (int i=0;i<k;++i) v[a[i]]=1;
for (int i=k-1;i>=0;--i)
{
v[a[i]]=0;
cnt++;
for (int j=head[a[i]];j;j=e[j].nxt)
{
if (!v[e[j].to])
{
int f1=find(a[i]),f2=find(e[j].to);
if (f1!=f2)
{
f[f2]=f1;
cnt--;
}
}
}
ans[i]=cnt;
}
for (int i=0;i<=k;++i) printf("%d\n",ans[i]);
return 0;
}

B

链接

点这里

翻译

我们有一串字母\('a'\)和\('b'\)。 我们想对它进行一些操作。 在每一步中,我们在字符串中选择一个子串\(“ab”\),并将其替换为字符串\(“bba”\)。

如果我们没有\(“ab”\)作为子串,我们的工作就完成了。 打印我们应该执行的最小步骤数,以便以\(10 ^ 9 + 7\)模式完成工作。

如果字符串中某个字母'a'后面有一个字母'b',则字符串“ab”显示为子字符串。

思路

我们可以看出来每次把\(ab\)换成\(bba\)相当于把b全部提前把\(a\)放后面,所以只要统计\(b\)的数量在进行累加就行了,注意的是每次累计后b的计数器要乘\(2\)

代码


#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<string>
#include<cstring>
using namespace std;
#define int long long int
inline int read() {
char c = getchar();
int x = 0, f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
const int mod=1e9+7;
string p;
int ans=0;
int js;
signed main()
{
cin>>p;
int len=p.length() ;
for(int i=len-1;i>=0;--i)
{
if(p[i]=='b') {js++;js%=mod;}
else {ans+=js%mod;ans%=mod;js=(js*2)%mod;}
}
cout<<ans;
return 0;
}

C

链接

点这里

翻译

思路

首先明确一点

想要\(gcd(省略.....)=1\)就一定要让a数组内全是偶数,所以我们可以从这里下手

下面列举一下可能的情况

操作前---------操作后

奇数,奇数---------偶数,偶数

奇数,偶数---------奇数,奇数

偶数,奇数---------奇数,奇数

偶数,偶数---------偶数,偶数

如果原来两个数都是偶数的话,那么操作数为0.

如果原来两个数都是奇数的话,那么操作数为1.

如果原来两个数是一奇一偶的话,那么操作数为2.

所以就\(ok\)了

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<string>
#include<cstring>
using namespace std;
#define int long long int
inline int read() {
char c = getchar();
int x = 0, f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
const int N=300011;
int py_gcd(int x,int y) {
if(y==0) return x;
else return py_gcd(y,x%y);
}
int n;
int a[N];
int p;
int ans;
signed main() {
cin>>n;
for(int i=1; i<=n; ++i) a[i]=read();
int gcds=a[1];
for(int i=2; i<=n; ++i) gcds=py_gcd(gcds,a[i]);
if(gcds>1) {
cout<<"YES"<<'\n'<<0;
return 0;
}
//处理2个奇数的情况
for(int i=1; i<=n; ++i) {
if((a[i]&1) && (a[i+1]&1)) {
ans++;
int tmp;
tmp=a[i];
a[i]=-2*a[i+1];
a[i+1]=2*tmp;
}
}
//一个奇数的一个偶数的情况
for(int i=1; i<=n; ++i) {
if(a[i]&1) ans+=2;
}
cout<<"YES"<<'\n'<<ans;
return 0;
}
// n个数,n<=1e5,操作:把ai,ai+1 替换成 a[i]-a[i+1],a[i]+a[i+1],问gcd(a1,a2..an)>1的最少操作次数.

sdcf day1 qwq比赛题解的更多相关文章

  1. 纪中OJ 2019.02.15【NOIP提高组】模拟 B 组 梦回三国 比赛题解(第一个)

    声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...

  2. 贪心(qwq)习题题解

    贪心(qwq)习题题解 SCOI 题解 [ SCOI2016 美味 ] 假设已经确定了前i位,那么答案ans一定属于一个区间. 从高位往低位贪心,每次区间查找是否存在使此位答案为1的值. 比如6位数确 ...

  3. [比赛题解]CWOI2019-1

    [比赛题解]CWOI2019-1 比赛日期:2019.10.12 T1 一道神仙DP题. 我们考虑\(dp[i][j][k]\)表示最后\(i\)位数,\(i-1\)位都是9,最后一位为\(j\),最 ...

  4. 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)

    科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...

  5. 【codeforces】【比赛题解】#960 CF Round #474 (Div. 1 + Div. 2, combined)

    终于打了一场CF,不知道为什么我会去打00:05的CF比赛…… 不管怎么样,这次打的很好!拿到了Div. 2选手中的第一名,成功上紫! 以后还要再接再厉! [A]Check the string 题意 ...

  6. 【codeforces】【比赛题解】#950 CF Round #469 (Div. 2)

    剧毒比赛,至少涨了分对吧.: ( [A]Left-handers, Right-handers and Ambidexters 题意: 有\(l\)个右撇子,\(r\)个左撇子,\(a\)个双手都惯用 ...

  7. 【codeforces】【比赛题解】#931 CF Round #468 (Div. 2)

    因为太迟了,所以没去打. 后面打了Virtual Contest,没想到拿了个rank 3,如果E题更快还能再高,也是没什么想法. [A]Friends Meeting 题意: 在数轴上有两个整点\( ...

  8. 【codeforces】【比赛题解】#937 CF Round #467 (Div. 2)

    没有参加,但是之后几天打了哦,第三场AK的CF比赛. CF大扫荡计划正在稳步进行. [A]Olympiad 题意: 给\(n\)个人颁奖,要满足: 至少有一个人拿奖. 如果得分为\(x\)的有奖,那么 ...

  9. 【codeforces】【比赛题解】#862 CF Round #435 (Div.2)

    这次比赛打得很舒服,莫名得了个Rank41,涨了219的Rating,就比较优秀.不过还是没有闫神厉害啊.题目链接::P. [A]MEX 题意: Evil博士把Mahmoud和Ehab绑架到了邪恶之地 ...

随机推荐

  1. Angular复习笔记5-指令

    Angular复习笔记5-指令 在Angular中,指令是一个重要的概念,它作用在特定的DOM元素上,可以扩展这个元素的功能,为元素增加新的行为.本质上,组件可以被理解为一种带有视图的指令.组件继承自 ...

  2. 自学Python编程的第\七天----------来自苦逼的转行人

    2019-09-17-23:09:48 今天学的内容是有关小数据池的,学的有点懵逼,感觉越来越难学了,但是得坚持下去 明天学习下一个课程时,感觉要跟不上,看来明天得先看好几遍今天的内容 不然肯定会听的 ...

  3. flutter_screenutil

    import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; ...

  4. 采用__call__ 实现装饰器模式

    装饰器模式在实现中也是很常见的:比如手机贴膜,手机壳 都是为了给手机增加一些额外功能 增加耐操 装饰器模式的本质就是对对象二次包装,赋额外功能 __call__ __call__是python魔术方法 ...

  5. JavaScript之DOM节点操作

    a.appendChild(b)  追加标签 a是b的父级,将b追加到a中 追加标签  a.insertBefore(b,c);  a是b和c的父级,在c前面插入b 删除标签  a.removeCli ...

  6. 关闭linux命令行屏幕保护

    # setterm -blank 0

  7. HttpClient实战三:Spring整合HttpClient连接池

    简介 在微服务架构或者REST API项目中,使用Spring管理Bean是很常见的,在项目中HttpClient使用的一种最常见方式就是:使用Spring容器XML配置方式代替Java编码方式进行H ...

  8. 实战FFmpeg + OpenGLES--iOS平台上视频解码和播放

    一个星期的努力终于搞定了视频的播放,利用FFmpeg解码视频,将解码的数据通过OpenGLES渲染播放.搞清楚了自己想知道的和完成了自己的学习计划,有点小兴奋.明天就是“五一”,放假三天,更开心啦. ...

  9. SAP Hybris Commerce启用customer coupon的前提条件

    今天在工作中,我发现一个问题:在SAP帮助文档里,backoffice coupon 维护界面有个 Customer Assignment的区域: 而我工作的Hybris服务器上的backoffice ...

  10. DoNetCore Web Api 采用Swagger进行接口文档管理

    第一步:创建API项目 步骤这里不说明 第二步:就是Nuget 包, 两种方式:1.工具->Nuget管理->程序包管理控制台 Install-Package Swashbuckle.As ...