Codeforces Round 894 (Div. 3)
时间:2023-08-26
本文章向大家介绍Codeforces Round 894 (Div. 3),主要内容包括A题意:、A思路:、A代码:、B题意:、B思路:、B代码:、C题意:、C思路:、代码:、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Codeforces Round 894 (Div. 3)
因为最近开学了,所以晚上可能就没有什么时间打这个了,不过以后一定会在第二天把题给补掉
A题意:
就是在一个n * m的的字符矩阵中从左往右依次取出4列,使得每列包含vika这四个字符中按顺序出现一个。必须保证是按顺序出现。
A思路:
这是一个简单的签到题,我们可以按列枚举,如果能按顺序找到对应的四列就可以,输出"YES",如果找不到,就输出"NO",如果行数和列数都不够4,那一定是NO。
A代码:
#include<bits/stdc++.h>
using namespace std;
const int N=23;
char a[N][N];
void solve(){
int n,m;
cin>>n>>m;
string s="vika";
int flag=0;
int l=0;
// cout<<s<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
if(n<4&&m<4){
cout<<"NO"<<endl;
}
else{
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(a[j][i]==s[l]){
l++;
flag++;
break;
}
}
}
if(flag==4){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
}
int main(){
int t;
cin>>t;
// t=1;
while(t--){
solve();
}
return 0;
}
B题意:
刚开始给一个数组a,执行下面操作:
1.输出a1
2.对于所有2<=i<=n的点,若ai-1<=ai,就将ai输出
从而得到数组b,让求原数组a
B思路:
由题意,我们可以在得到的数组中找到ai小于ai-1的的位置,在其中插入一个1,这样得到的数组就可能是原数组中的一组解
B代码:
#include<bits/stdc++.h>
using namespace std;
const int N=23;
void solve(){
int n;
cin>>n;
std::vector<int> v;
std::vector<int> v1;
for(int i=0;i<n;i++){
int x;
cin>>x;
v.push_back(x);
}
for(int i=0;i<n;i++){
if(i){
if(v[i]<v[i-1]){
v1.push_back(1);
}
}
v1.push_back(v[i]);
}
cout<<v1.size()<<endl;
for(int i=0;i<v1.size();i++){
cout<<v1[i]<<" ";
}
cout<<endl;
}
int main(){
int t;
cin>>t;
// t=1;
while(t--){
solve();
}
return 0;
}
(思路挺新奇的一个题)C题传送门
C题意:
给出一个由n个长方形拼成的图形,在第i个的长方形高度为ai,宽为1(ai-1>=ai)。问把它换一个方向摆之后是否和原图像一样。
C思路:
这个题就是判断组成的图形旋转后原图形能否重合,也就是能否相等,如果相等输出YES,不等输出NO
判断可不可以重合,我们只需要把旋转后的图形构造出来,再与原图形比较一下即可。
如何构造旋转后的图形呢?这里我门运用的是差分的思想去构造旋转后的图形
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=23;
void solve(){
int n;
cin>>n;
std::vector<int> a(n+1);
for(int i=1;i<=n;i++){
cin>>a[i];
}
if(a[1]!=n){
cout<<"NO"<<endl;
return ;
}
std::vector<int> b(n+2);
for(int i=1;i<=n;i++){
b[1]++;//表示最高的那个地方
b[a[i]+1]--;//为了构造一个差分数组
}
for(int i=1;i<=n;i++){
b[i]+=b[i-1];
}
bool flag=true;
for(int i=1;i<=n;i++){
if(a[i]!=b[i]){
flag=false;
}
}
if(flag){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
return ;
}
int main(){
int t;
cin>>t;
// t=1;
while(t--){
solve();
}
return 0;
}
原文地址:https://www.cnblogs.com/du463/p/17658525.html
- 鼠标滚轮事件介绍
- Understanding delete
- objC与js通信实现--WebViewJavascriptBridge
- 简单易学的机器学习算法——岭回归(Ridge Regression)
- QQ空间(日志、说说、个人信息)python爬虫源码(一天可抓取 400 万条数据)
- 文本分类实战: 机器学习vs深度学习算法对比(附代码)
- ReactJS分析之入口函数render
- 简单易学的机器学习算法——SVD奇异值分解
- AngularJS源码分析之依赖注入$injector
- 使用yield进行异步流程控制
- 【Java提高十七】Set接口集合详解
- 如何科学地蹭热点:用python爬虫获取热门微博评论并进行情感分析
- 使用ETag进行session的降级
- 关于oracle中的反连接(r3笔记第95天)
- 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 数组属性和方法
- 基于K-Means聚类算法的主颜色提取
- 扩展之Tensorflow2.0 | 21 Keras的API详解(下)池化、Normalization层
- 一个真实问题,搞定三个冷门pandas函数
- conda管理C源代码程序的时候总是出现库文件冲突或者缺失
- 如何获取非模式生物KEGG PATHWAY的基因集并用clusterProfile做GSEA?
- 通过视频着色进行自监督跟踪
- Python爬虫:一些常用的爬虫技巧总结
- 带你用 Python 实现自动化群控(入门篇)
- Chrome终于上线这项重磅功能,中国用户苦等多年!
- YOLO 算法最全综述:从 YOLOv1 到 YOLOv5
- 《JavaScript ES6 函数式编程入门经典》读书笔记
- Java9-Reactive Stream API响应式编程
- mybatis-plus增删改查以及前后端分离模式下的项目应用
- docker(常用软件安装)
- PyTorch版:集成注意力和MobileNet的YOLOv4