Codeforces Round #572(div2)部分题解(A~C,E)
目录
- 前言
- A - Keanu Reeves(思维+水题)
- 题目大意
- 思路
- AC代码
- B - Number Circle(数学+思维)
- 题目大意
- 思路
- AC代码
- C - Computer Game (思维)
- 题目大意
- 思路
- AC代码
- D - Add on a Tree
- E - Count Pairs (数学)
- 题目大意
- 思路
- AC代码
前言
你们知道在《Young Sheldon》第五季开播之前的那段时间里,我是怎么度过的吗?
你们知道我的痛楚吗?
哦,我记得我好像又把TBBT看了一遍,还顺便刷了老友记和权游。
我好像还挺快乐的,nmsl ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄。
8多说了,写完题解看我的谢耳朵去了(# ^ . ^ #)
A - Keanu Reeves(思维+水题)
比赛链接:https://codeforces.com/problemset/problem/1189/A
题目大意
给出一个只有010101组成的长度为nnn的字符串sss。
我们认为如果一个字符串中010101的数量不等,那么这个字符串就是一个好的字符串。
现在需要你把字符串sss划分成k(k>=1)k(k>=1)k(k>=1)个字符串 ,使得每个字符串都是好的。
问kkk最小可以是多少,并且输出划分之后的结果。
思路
简单的思维题。
首先先判断sss本身是否就是一个好的字符串,如果是就直接输出即可。
否则我们只需要把第一个字符单拿出来,剩下的作为另一个字符,这两个字符串一定都是好的。
从另一个角度来想,长度为奇数的字符串一定是好字符串。
AC代码
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=2e5+100;int main()
{int n,a,b;a=b=0;cin>>n;string ss;cin>>ss;for(int i=0;i<n;i++){if(ss[i]=='1') a++;else b++;}if(a==b) cout<<"2"<<endl<<ss[0]<<" "<<ss.substr(1,n-1)<<endl;else cout<<"1"<<endl<<ss<<endl;
}
B - Number Circle(数学+思维)
比赛链接:https://codeforces.com/problemset/problem/1189/B
题目大意
给你n个数字a1,a2,…,ana_1, a_2, \ldots, a_na1,a2,…,an。
现在你需要把这些数字填到一个有n个空位的圆环里,并使得圆环中满足条件:
任意一个数字都严格小于与它相邻的两个数字的和。
不可以的话输出NO
。
可以的话第一行输出YES
,第二行输出一种可行的排列顺序a1,a2,…,ana_1, a_2, \ldots, a_na1,a2,…,an,其中a1a_1a1与a2、ana_2、a_na2、an相邻。
思路
又是一道简单的思维题。
我们给所有的数从小到大排个序,之后我们去想:哪些数字最有可能不满足条件。
很显然就是最大的那个数字。
那么我们就需要给它安排两个好♂邻居,让它老实一点。
那么输出NO
的情况就推断出来了:最大的数比其他任意两个数的和都大。
否则我们就让最大的数aaa、第一个小于 aaa 的数 bbb 和第二个小于 aaa 的数 ccc交换一下位置,让bbb和ccc把aaa包围住。
原本的顺序:c b a
交换之后:c a b
AC代码
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=2e5+100;
int a[maxn];
int main()
{int n;cin>>n;for(int i=0;i<n;i++)cin>>a[i];sort(a,a+n);if(a[n-1]>=a[n-2]+a[n-3]) cout<<"NO"<<endl;else{cout<<"YES"<<endl;for(int i=0;i<n-3;i++)cout<<a[i]<<" ";cout<<a[n-2]<<" "<<a[n-1]<<" "<<a[n-3]<<endl;}
}
C - Computer Game (思维)
比赛链接:https://codeforces.com/problemset/problem/1189/C
题目大意
给一个长度为nnn的数组sss。
规定函数f(l,r)f(l,r)f(l,r)的含义为:
(ssslll,sssl+1l+1l+1, …\ldots…,sssrrr)的和整除10的值。
有q次询问,每次都询问一个f(li,ri)f(l_i,r_i)f(li,ri)的值。
思路
纯纯的前缀和入门题。
AC代码
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1e5+100;
int s[maxn];
int main()
{int n;cin>>n;s[0]=0;for(int i=1;i<=n;i++){cin>>s[i];s[i]+=s[i-1];}int q;cin>>q;for(int i=0;i<q;i++){int l,r;cin>>l>>r;cout<<(s[r]-s[l-1])/10<<endl;}
}
D - Add on a Tree
比赛链接:https://codeforces.com/problemset/problem/1189/D
看不懂的一道题,题意读不懂,再观望一下大佬们的博客。
@llm,我滴超人!!!
@沉鱼落雁闭月羞花花容月貌美丽大方的铃铛仙女
@God Jun
E - Count Pairs (数学)
比赛链接:https://codeforces.com/problemset/problem/1189/E
题目大意
给你一个素数ppp,一个长度为nnn的数组aaa和一个整数kkk。
找出符合以下条件的(i,j)(1<=i<j<=n)(i,j)(1<=i<j<=n)(i,j)(1<=i<j<=n)的数量。
(ai+aj)(ai2+aj2)≡kmodp(a_i + a_j)(a_i^2 + a_j^2) \equiv k \bmod p(ai+aj)(ai2+aj2)≡kmodp
思路
这题也是十分的简单,就是卡精度卡的很死,longlonglong longlonglong才过去的。
我们只需要调整一下原本的公式。
首先我们取原本的公式为①式:
①(ai+aj)(ai2+aj2)≡kmodp(a_i + a_j)(a_i^2 + a_j^2) \equiv k \bmod p(ai+aj)(ai2+aj2)≡kmodp
这个式子给人一种不舒服的感觉,总感觉可以再化简一下。
我的初中老师曾教导我们:
看到式子里只有(a−b)(a-b)(a−b)或是(a+b)(a+b)(a+b)的时候,你就应该十分警觉地想到完全平方公式和平方差公式。
此时如果两边乘上(ai+aj)(a_i + a_j)(ai+aj)形成完全平方公式,貌似又把问题加重了。
但如果我们让①式的两边同时乘上(ai−aj)(a_i - a_j)(ai−aj)形成平方差公式②:
②(ai−aj)∗(ai+aj)(ai2+aj2)≡(ai−aj)∗kmodp(a_i - a_j)*(a_i + a_j)(a_i^2 + a_j^2) \equiv (a_i - a_j)*k \bmod p(ai−aj)∗(ai+aj)(ai2+aj2)≡(ai−aj)∗kmodp
化简一下得到③:
③(ai2−aj2)(ai2+aj2)≡(ai−aj)∗kmodp(a_i^2 - a_j^2)(a_i^2 + a_j^2) \equiv (a_i - a_j)*k \bmod p(ai2−aj2)(ai2+aj2)≡(ai−aj)∗kmodp
再化简一下得到④:
④(ai4−aj4)≡(ai−aj)∗kmodp(a_i^4 - a_j^4) \equiv (a_i - a_j)*k \bmod p(ai4−aj4)≡(ai−aj)∗kmodp
此时,我们觉得,把aia_iai和aja_jaj放到全等号的两边会更好看一些。
处理一下得到⑤:
⑤(ai4−ai∗k)modp≡(aj4−aj∗k)modp(a_i^4 - a_i*k)\bmod p \equiv (a_j^4 - a_j*k)\bmod p(ai4−ai∗k)modp≡(aj4−aj∗k)modp
此时问题就变成了找值相等的下标对数,用map记录就可以了。
AC代码
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
map<ll,ll> mp;
int main()
{ll n,p,k,x;cin>>n>>p>>k;for(int i=1;i<=n;i++){cin>>x;//cout<<x<<" "<<((x%p*x%p*x%p*x%p)%p-(k%p*x%p)+p)%p<<endl;mp[((x%p*x%p*x%p*x%p)%p-(k%p*x%p)+p)%p]++;}map<ll,ll>::iterator it;ll sum=0;for(it=mp.begin();it!=mp.end();it++){//cout<<it->first<<" "<<it->second<<endl;sum+=((it->second)*(it->second-1)/2);}cout<<sum<<endl;return 0;
}
/*(ai+aj)*(ai^2+aj^2)%p==k
(ai^2-aj^2)*(ai^2+aj^2)%p==k*(ai-aj)
(ai^4-aj^4)%p==k*ai-k*aj
(ai^4-k*ai)%p==(aj^4-k*aj)*/
感谢阅读,希望能对你产生一点用处。
"There's no shame in fear, my father told me." " What matters is how we face it."
吾日三省吾身:日更否?刷题否?快乐否? 更新了,但不是日更;已刷;happy! 吾心满意足。
Codeforces Round #572(div2)部分题解(A~C,E)相关推荐
- Codeforces Round #747 (Div. 2)题解
Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...
- Codeforces Round #514 (Div. 2)题解
Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- 【算法题解】Codeforces Round #817 (Div. 4)题解
文章目录 Codeforces Round #817 (Div. 4)题解 A. Spell Check B. Colourblindness C. Word Game D. Line E. Coun ...
- Codeforces Round #789 (Div. 2)题解
Codeforces Round #789 (Div. 2)题解 A. Tokitsukaze and All Zero Sequence 原题链接 算法标签 贪心 排序 思路 情况一:数组存在零 → ...
- Codeforces Round #748 (Div. 3) 题解 完整A~G
Codeforces Round #748 (Div. 3) 题解 A. Elections 题意 已知竞选中三个候选人的当前得票数 a , b , c a,b,c a,b,c,现在可以增加任何一个人 ...
- Codeforces Round #533 (Div. 2)题解
link orz olinr AK Codeforces Round #533 (Div. 2) 中文水平和英文水平都太渣..翻译不准确见谅 T1.给定n<=1000个整数,你需要钦定一个值t, ...
- Codeforces Round #734 (Div. 3) 题解
Hello大家好,今天给大家带来的是 Codeforces Round #734 (Div. 3) 的全题目讲解. 本文链接:https://www.lanqiao.cn/questions/2040 ...
- Codeforces Round #462 (Div. 2)题解
Codeforces Round #462 (Div. 2) B题--我固执的认为1e18是18位数,导致被hack,花了20分钟才检查出这个错误,很僵硬 Codeforces 934C 题意 给定一 ...
- Codeforces Round #441 Div. 2题解
A.直接判断相邻的边是不是最短边 是就来回走 不然就走一条第二的然后再来回走 #include<cstdio> #include<cstring> #include<al ...
最新文章
- SQL server 实例教程
- 什么是Gut–Skin Axis
- 使用VMware虚拟磁盘管理工具调整磁盘大小
- python怎么定义一个变量为空列表_python – 为什么一个类变量没有在列表理解中定义,但另一个是?...
- Tengine(Nginx)配置SSL(https),应用服务器(Tomcat)无需配置
- DNF私服商业服搭建教程
- android 跑马灯带图片,Android自定义跑马灯效果(适合任意布局)
- python中的np.ones_numpy常用函数normal、randn、shape、ones——持续更新中
- PyCharm下载安装以及使用教程
- 【C++】关于日期的计算
- 自定义View实战(一) 汽车速度仪表盘
- 【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)
- 基于winform(C#)的飞鸟小游戏
- Intel系统编程指南第八章——8.4 多处理器(MP)初始化
- 越是穷人,就越需要大数据
- js代码转换成java代码_js代码转换为java
- C# 邮件发送帮助类
- 基于 C++ MFC 活塞环外观表面缺陷检测【100010409】
- 详细的图文Windows电脑设置自动关机/计划关机
- 移动联通各地网关数据
热门文章
- 计算机名校远程在职硕士信息汇总Online Master
- html div p区别,p标签和div标签的区别与用法
- 工业控制系统基础知识入门(一)
- 通过脚手架安装Ant+react+umi+dva项目(一)
- 计算机演示文稿应用主题,使用屏幕阅读器在 PowerPoint 中创建演示文稿的基本任务...
- Python数据库同步神器(一键同步)
- Java 判断IP地址为内网IP还是公网IP (针对IPv地址)
- python开发视频播放器_基于 Flask 的在线视频播放器
- 24_MySQL高可用之MMM
- 年轻时放纵享乐,不要指望年老时一念向善