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. 比特c语言-分支与循环

        # 分支与循环 if语句 目录 if语句 if eg:输入一个整数,判断是否为奇数 else eg:输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数 嵌套if eg:输入一个人 ...

  2. c代码部分封装为lib

    需求:将一个C工程中的核心代码封装为静态文件:lib. 环境 工具:VC6.0++ 语言:c 以封装一个DES工程为例 封装 (1)新建一个静态工程 (2)新建c文件和h文件 (3)挑选封装内容 在原 ...

  3. 让AI碰撞!“天翼云息壤杯”高校AI大赛江苏赛区交流会热力开场!

    由中国电信集团有限公司主办,天翼云科技有限公司承办的"天翼云息壤杯"高校AI大赛正在火热进行中.为了提高江苏赛区学生的参赛热情,增强学生的创作能力,江苏电信.天翼云华东中心于12月 ...

  4. Idea报错 【cannot access com.xxx】的【解决办法】

    正常操作代码,一个类突然标红,提示 cannot access com.xxx . 执行下面操作,执行完后项目变为正常 但是如果是你代码存在异常,可不是清缓存就能解决了,就要靠自己了哈哈 第一步Fil ...

  5. 使用Gradle创建springcloud项目

    第一步新建项目,这都不用说了,有手就行 第二步选中SpringInitalizr  Project SDK 是项目使用的jdk版本 直接引入就可以了 Group 选你需要的依赖,无所谓,你也可以什么都 ...

  6. redis启停shell脚本

    启停脚本(redis-5.0.5) 一.编辑脚本 vim /u01/redis/redisServer.sh #!/bin/sh # # Simple Redis init.d script conc ...

  7. 正权图的 Dijkstra 最短路算法

    最短路径问题是图论中最经典且重要的应用问题之一.它的目标是找到一个图中从起点到终点的最短路径,即在所有可能的路径中,选择一条边权和最小的路径.该问题广泛存在于多个实际场景中,比如交通运输.通信网络.导 ...

  8. EasyExcel合并行处理并优化

    业务场景 由于业务需要导出如下图中订单数据和订单项信息,而一个订单对应多个订单项,所以会涉及到自定义合并行 1.简单处理项目使用的EasyExcel,经查找发现Excel种有个AbstractMerg ...

  9. JS ellipse 转 PathData

    绘制Path function ellipse2path(cx, cy, rx, ry, degree) { //cx cy:圆心 //rx ry:x y 轴长 //degree:度数,顺时针方向为正 ...

  10. hbase - [05] hbase关联hive

    一.配置 1.在hive的配置文件中配置HBASE_HOME(conf/hive-env.sh) export HBASE_HOME=/opt/module/hbase 2.将 conf/hive-e ...