Codeforces Round #627 (Div. 3) 题解
时间:2022-07-24
本文章向大家介绍Codeforces Round #627 (Div. 3) 题解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
A.Yet Another Tetris Problem 题意:看白了其实就是让你看看是否都为偶数,或者奇数,是的话输出YES,否则输出NO。
#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int flag = 0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i] % 2 == 0) flag++;
}
if(flag == n||flag ==0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
B.Yet Another Palindrome Problem 题意:就是判断是否有至少三个数以上的子数组满足回文串问题。
思路:只要找到两个相同的数,并且之间的距离是大于1,及还能放一个数以上的数,那么就可以找到至少为3的子数组满足题目要求。
#include<bits/stdc++.h>
#define maxn 6005
using namespace std;
int t;
int n;
int a[maxn];
bool flag;
int main(){
cin>>t;
while(t--){
flag =0;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[j]==a[i]&&j-i>=2){
flag=1;
break;
}
}
if(flag) break;
}
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
C.其实结合样例看比较好懂一些。就是求相邻R之间得最大距离,其中把开头跟n+1,也当作是R,那么小青蛙就是能一直跳。跳到最后。
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
int t;
cin>>t;
while(t--)
{
cin>>s;
int res=0,ans=0;
for(int i=0;i<s.size();i++)
if(s[i]=='R')
{
ans=max(i+1-res,ans);
res=i+1;
}
ans=max(ans,s.size()1-res);
cout<<ans<<endl;;
}
return 0;
}
D.Pair of Topics 题意:就是对公式进行变形,然后用二分减少复杂度就行了
一开始想了个O(n*n)复杂度得,明知道过不去,却还是试了试。然后就超时卡12了。
代码如下:
#include<bits/stdc++.h>
#define maxn 200005
using namespace std;
typedef long long ll;
ll a[maxn],b[maxn];
ll c[maxn];
ll d[maxn];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
for(int i=1;i<=n;i++){
c[i] = a[i]-b[i];
d[i] = b[i]-a[i];
}
int ans = 0;
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
if(c[i] > d[j])
ans++;
}
}
cout<<ans<<endl;
return 0;
}
其实之前做过ICPC沈阳A题跟这个十分相似,但是这个是在那个签到提得基础上又稍微增加了点难度,算了,我不配说这话,还是太菜了。
AC代码 思路:就是我们如果变形一下得话就会变成ai-bi>bj-aj;那么首先我们先求得ai-bi得差给存起来,然后得话我们给其进行排序,然后一个for循环,找到第一个大于当前得bj-aj得位置,那么后面得肯定都大于,然后就这样就行了。
#include<bits/stdc++.h>
#define maxn 200005
using namespace std;
typedef long long ll;
ll a[maxn],b[maxn];
ll c[maxn];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
for(int i=1;i<=n;i++)
c[i] = a[i] - b[i];
sort(c+1,c+n+1);
ll ans = 0;
for(int i=1;i<=n;i++){
ll res = b[i]-a[i];
ans += (c+n+1)-upper_bound(c+1,c+n+1,res);
if(res<0) ans--;
//cout<<ans<<endl;
}
cout<<ans/2<<endl;
}
- IE7下元素的 'padding-top' 遇到 'clear' 特性在某些情况下复制到 'padding-bottom'
- ARM处理器:开放者的逆袭
- 从5个方面对比微信小程序和App
- ActiveMQ笔记(7):如何清理无效的延时消息?
- JS魔法堂:再识Bitwise Operation & Bitwise Shift
- Hadoop(十三)分析MapReduce程序
- mac机上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman扩展/seaslog扩展/redis扩展环境
- 基础野:细说无符号整数
- Ubuntu12.04安装QQ for Linux
- 树莓派:最好的安排
- idea 高级调试技巧
- JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后
- mybatis: 利用多数据源实现分库存储
- 树莓派:文本编辑器与文件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何在Linux中修改tomcat端口号
- centos7修改系统语言为简体中文的实现
- Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能
- linux实现猜数字小游戏源码
- linux编译kernel和svn版本冲突的解决办法
- 在 Ubuntu Linux 上安装 Oracle Java 14的方法
- 在 Linux 系统中手动滚动日志的方法
- Linux进程管理工具supervisor安装配置教程
- Linux执行可执行文件提示No such file or directory的解决方法
- 详解bash中的脚本调试机制
- 在 Linux 上查看和配置密码时效的方法
- CentOS7中使用shell脚本安装python3.8环境(推荐)
- linux定时任务的一些相关操作汇总
- Linux nohup命令原理及实例解析
- 基于centos7快速安装mysql5.7教程解析