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. CyclicBarrier底层实现和原理

    1.CyclicBarrier 字面意思是可循环(Cyclic)使用的屏障(Barrier).它要做的事情是让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时候,屏障才会开门.所有被 ...

  2. Java技术栈总结-提升

    1 java基础: 1.1 算法 1.1 排序算法:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序 1.2 二叉查找树.红黑树.B树.B+树.LSM树(分别有对应 ...

  3. biancheng-Django(python)

    http://c.biancheng.net/django/ Django MTV和MVC的区别 1. MVC设计模式 我们先对 MVC 设计模式进行介绍,它是 Web 设计模式的经典之作,MTV 模 ...

  4. Linux:安装nodejs

    yum安装 自带版本 yum install nodejs 但是版本很低[6.17.1] 高版本 参考:链接 1.删除旧版本 yum remove nodejs 2.添加Node.js Yum存储库 ...

  5. mysl 修改数据存储位置后服务启动后停止

    在 Windows 系统中安装完 mysql 后,如果是生产用的机器,通常会修改数据存储位置.基本步骤: 1. 停止 mysql 服务: 2. 修改 my.ini 文件中的 datadir=" ...

  6. 使用C# 调用deepseek api接口,来实现正常访问

    先上图,结果如图 先去官方网站充值api费用,默认 对应的C#代码封装 1 public class DeepSeekHelper 2 { 3 private static readonly Http ...

  7. kubernets学习笔记二

    Kubernetes部署"容器化应用" Kubernetes整体架构 何为"容器化应用"? 通俗点来说,就是你把一个程序放在docker里部署,这个docker ...

  8. linux安装flink

    参考链接https://blog.csdn.net/boling_cavalry/article/details/85038527   1.下载flink 在Flink官网下载,地址是:https:/ ...

  9. FLink参数pipeline.operator-chaining介绍

    1.当使用flink提交一个任务,没有给算子设置并行度情况下,默认所有算子会chain在一起,整个DAG图只会显示一个算子,虽然有利于数据传输,提高程序性能,但是无法看到数据的输入和疏忽,业绩反压相关 ...

  10. 2025牛客寒假算法基础集训营1 (E)

    [!note] 比赛链接 https://ac.nowcoder.com/acm/contest/953231 A.茕茕孑立之影 题目标签 构造 数论 题目大意 找到一个数x,x和长度为n的数组中的数 ...