A. Sakurako's Exam

分类讨论即可,当a为奇数,无法消去1,或者a==0且b为奇数时,无法消去2

#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> pii; void solve()
{
int a,b;
int flag=1;
cin>>a>>b;
if(a&1 ) flag=0;
else if(a==0 and b&1) flag=0; if(flag) cout<<"Yes";
else cout<<"No";
cout<<endl; } signed main()
{
int t=1;
cin>>t;
while(t--) solve();
}

B. Square or Not

这题被hack了,假如是64,每行16个,虽然是美丽矩阵,但不是正方形,所以要保证第一个0的下标-1的平方为n,这样才可以确保是个正方形。

#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> pii; void solve()
{
int flag=1;
int n; cin>>n;
if(sqrt(n)!=(int)sqrt(n)) flag=0;
string s;
cin>>s; int p=s.find('0');
if((p-1)*(p-1)!=n&&n!=4) flag=0;
if(flag) cout<<"Yes";
else cout<<"No";
cout<<endl; } signed main()
{
int t=1;
cin>>t;
while(t--) solve();
}

C. Longest Good Array

可以暴力枚举,也可以二分答案

#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> pii; void solve()
{
int a,b;
cin>>a>>b;
int l=2,r=1e9;
b-=a;
int mid;
while(l<=r)
{
mid=(l+r)>>1;
if(mid*(mid-1)/2<=b) l=mid+1;
else r=mid-1;
}
cout<<l-1<<endl;
} signed main()
{
int t=1;
cin>>t;
while(t--) solve();
}

D. Sakurako's Hobby

这题其实是找置换环,置换环内的点可以相互到达,然后用并查集维护黑块的个数

#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int f[N],p[N];
string s;
int size0[N],size1[N];//size0为从i出发经历过0的数量 //----------并查集找环---------
int find(int x)
{
return f[x]==x?f[x]:f[x]=find(f[x]);
} void merge(int x,int y)
{
x=find(x),y=find(y);
if(x==y) return;
f[y]=x;
size0[x]+=size0[y];
} //----------------------------- void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) f[i]=i;
for(int i=1;i<=n;i++) cin>>p[i];
cin>>s;
s=" "+s;
for(int i=1;i<=n;i++)
{
if(s[i]=='0') size0[i]=1,size1[i]=0;
else size1[i]=1,size0[i]=0;
} for(int i=1;i<=n;i++) merge(i,p[i]);//合并祖先
for(int i=1;i<=n;i++)
{
int x=find(i);
cout<<size0[x]<<" ";
} cout<<endl;
} int main()
{
int t=1; cin>>t;
while(t--) solve(); }

E. Alternating String

分为奇偶来讨论

如果是偶数,我们只需要统计奇数位上出现次数最多的字母和偶数位上出现次数最多的字母,然后用n减掉这两个数就是最小操作次数了

如果是奇数,肯定要选择一个位置删掉,然后再按偶数来进行操作,枚举位置来删除时,这个位置后面的每个字母的奇偶就会变化,比如abcab,奇数位上a(1)偶数位上a(4),删掉c以后呢,a(3),所以对应字母的奇数位数量要加到偶数位的数量上,偶数位上的同理,然后比较再取最大值即可

#include <bits/stdc++.h>
using namespace std; void solve()
{
int n;
cin>>n;
string s;
cin>>s;
int ans=0;
if(n&1)
{
vector pre(2,vector<int>(30));//第0行为偶数数组 第1行为奇数数组
auto suf=pre;
//pre为当前位置前面奇偶位数上字符的数量
//suf为后面
for(int i=0;i<n;i++) suf[i&1][s[i]-'a']++;//统计奇数和偶数位上各字母的数量
for(int i=0;i<n;i++)
{
suf[i&1][s[i]-'a']--;//枚举删除的位置,删除完这个位置前
int res=0;
for(int k=0;k<2;k++){
//每个字母在奇数位和偶数位上都会有计数
//所以两次循环删除这位数以后,奇偶会互换
//所以把对应的字母的pre[奇][字母]+suf[偶][字母] 反之同理
int mx=0;
for(int j=0;j<26;j++)
{
int t=pre[k][j]+suf[k^1][j];
if(t>mx) mx=t;
}
res+=mx;
}
//从左往右遍历,所以pre是慢慢增加的
pre[i&1][s[i]-'a']++;
ans=max(ans,res);
}
ans=n-ans;
}else{
//偶数 直接找奇偶位置上的最大数量的字母
vector res(2,vector<int>(30) );
for(int i=0;i<n;i++) res[i&1][s[i]-'a']++;
for(int i=0;i<2;i++)
{
auto mx=*max_element(res[i].begin(),res[i].end());
ans+=mx;
}
ans=n-ans; }
cout<<ans<<endl;
} int main()
{
int t=1;
cin>>t;
while(t--) solve();
}

F. Sakurako's Box

题意其实非常的简单只需要求出这个等式即可,就是考察逆元的知识点

\(a_1*(a_2+a_3+a_4)\quad+\quad a_2*(a_3+a_4)+a_3*a_4\)

这一部分可以用类似前缀和来优化sum为所有值的和 每一步(sum-ai)*ai即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mod 1000000007 int n,sum;
int ve[200005]; int qpow(int a,int n)
{
int res=1;
while(n){
if(n&1) res=res*a%mod;
n>>=1;
a=a*a%mod;
}
return res;
} void solve()
{
cin>>n;
sum=0;
for(int i=0;i<n;i++){
cin>>ve[i];
sum+=ve[i];
} int fz=0;
for(int i=0;i<n;i++)
{
sum-=ve[i];//这里就是优化的部分,稍微想一下就明白了
fz+=sum%mod*ve[i]%mod;
}
int fm=n*(n-1)/2%mod;//这也要记得mod
int ans;
ans=fz%mod * qpow(fm,mod-2)%mod;// *左边为分子 右边为分母 1/x=qpow(x,mod-2)
cout<<ans<<endl; } signed main()
{
int t=1; cin>>t;
while(t--) solve(); }

Codeforces Round 970 (Div. 3)的更多相关文章

  1. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  2. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  3. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  4. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  5. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  6. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  7. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  8. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  9. Codeforces Round #268 (Div. 2) ABCD

    CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...

  10. 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts

    题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...

随机推荐

  1. 史上最全memcached面试26题和答案

    Memcached是什么? Memcached是一个开源的,高性能的内存绶存软件,从名称上看Mem就是内存的意思,而Cache就是缓存的意思. Memcached的作用? Memcached的作用:通 ...

  2. w3cschool-Linux shell教程

    Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...

  3. Secure Face Matching Using Fully Homomorphic Encryption-2018:学习

    本文学习论文"Secure Face Matching Using Fully Homomorphic Encryption-2018"和"基于全同态加密的人脸特征密文认 ...

  4. Atcoder ABC392F Insert 题解 [ 绿 ] [ 线段树二分 ] [ 倒序操作 ]

    Insert:绷不住了,ds 学傻了导致一直在写一个假的没边的做法,赛后 5min 胡出正解,唐. 思路 首先正着操作想想就觉得不太好搞,所以考虑一个经典 trick:单点正向加入操作转化为倒序删除操 ...

  5. sprintf用法详解

    sprintf 将字串格式化. 在头文件 #include< stdio.h >中 语法: int sprintf(string format, mixed [args]...); 返回值 ...

  6. 【COM3D2Mod 制作教程(6)】实战!制作身体部分(下)

    [COM3D2Mod 制作教程(6)]实战!制作身体部分(下) 有了上一章制作帽子的经验,此时做头发很多就不必再重复赘述了,但如果用完全一样的流程和方法,把头发做好后直接装扮就会导致游戏报错,这就是我 ...

  7. IDEA - 文件上方的文档注释如何自定义

    1.在设置中打开文件和代码模板,根据描述中的参考信息进行自定义配置 File > Settings > Editor > File and Code Templates 2.配置完成 ...

  8. 计数类 dp 做题记录(长期更新)

    前言 因为本人太弱,急需锻炼思维,固从现在起开始着手写计数题,并写下题解分析思路的欠缺.另外本文将长时间更新,所以我准备把它置顶,尽量日更! upd on 24.11.6 现版本改成长期更新. P36 ...

  9. Codeforces Round 1007 (Div. 2) 比赛记录

    Codeforces Round 1007 (Div. 2) 比赛记录 比赛链接 很喜欢的一场比赛,题目质量很高,不是手速场,做出题超级有成就感,赛时切掉了 A - D1,上大分了. B卡得有点久,其 ...

  10. 如何用Forest方便快捷地在SpringBoot项目中对接DeepSeek

    ​ 一. 环境要求 JDK 8 / 17 SpringBoot 2.x / 3.x Forest 1.6.4+ Fastjson2 依赖配置 除了 SpringBoot 和 Lombok 等基础框架之 ...