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. UWP 读写文件

    List<Pics> pics = new List<Pics>(); for (int i = 0; i < 2000; i++) { pics.Add(new Pic ...

  2. ElasticSearch(1)---Logstash同步Mysql数据到ElasticSearch

    1. 单机部署-场景描述 elasticsearch只用过,没有部署或者维护过,从头完整走一遍,记录下,原创实战,有需要的朋友参考下. 2 . 解决方案 特别说下,以前win7下安装的3台虚拟机,没有 ...

  3. RSA的原理和简单实践

    RSA加密是一种非对称加密,原理是: 使⽤算法可以⽣成两把钥匙 A 和 B 使⽤ A 加密的信息,使⽤ B 可以解开 使⽤ B 加密的信息,使⽤ A 可以解开 ⽇常使⽤中,我们把⼀把作为公钥公开发布. ...

  4. Codeforces Round 958 (Div. 2)

    题目链接:Codeforces Round 958 (Div. 2) 总结:C因为常数没转\(long long\) \(wa\)两发,难绷. A. Split the Multiset fag:模拟 ...

  5. 亮相2024 DPU&AI Networking创新大会,天翼云斩获两项大奖!

    近日,以"智驱网络 芯动未来"为主题的2024 DPU&AI Networking创新大会在北京举办.大会表彰了在DPU与AI网络技术创新及实践应用中取得卓越成就的单位与项 ...

  6. 如何利用cursor+deepseek来最大程度减少组件库的学习成本!

    在当今的软件开发领域,开发者们面临着不断提升开发效率与降低上手成本的挑战.本文档的核心目的,便是助力开发者们实现这一目标,特别是通过巧妙运用组件官网文档,并结合 Cursor 与 DeepSeek 等 ...

  7. useradd usermod userdel passwd groupadd groupmod groupdel等命令详解

    linux命令参数记忆有些模糊了,记录下.学而时习之,不亦说乎? 1.useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户.创建新用户useradd,默认的用户家目录会被存放在/ ...

  8. Luogu P5298 PKUWC2018 Minimax 题解 [ 紫 ] [ 树形 dp ] [ 线段树合并 ] [ 概率 dp ]

    Minimax:线段树合并优化 dp 好题. 树形 dp 因为要求出每一个值的出现概率,首先我们可以想到一个很暴力的 dp 式子. 定义 \(dp_{i,j}\) 表示在节点 \(i\) 时,权值 \ ...

  9. Dev Express WPF 在当前界面显示进度加载等待信息

    执行耗时任务时,为提高用户体验,一般会添加进度状态信息.Dev Express 的 LoadingDecorator 可以实现在当前界面中显示进度信息. 效果图如下: 默认 LoadingDecora ...

  10. ReviOS - 专为游戏优化的 Win11 / Win10 精简版系统

    ReviOS介绍 ReviOS 渴望重新创建作为操作系统的 Windows 应该是 - 简单.ReviOS 是一款功能强大.高效的私有操作系统,适用于游戏玩家.高级用户和发烧友.由于资源.占用内存和存 ...