首页 > 其他分享 >Codeforces Round 894 (Div. 3)

Codeforces Round 894 (Div. 3)

时间:2023-08-26 11:22:53浏览次数:46  
标签:std 894 题意 int Codeforces ai solve Div 图形

Codeforces Round 894 (Div. 3)

因为最近开学了,所以晚上可能就没有什么时间打这个了,不过以后一定会在第二天把题给补掉

A题传送门

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题传送门

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;
}

标签:std,894,题意,int,Codeforces,ai,solve,Div,图形
From: https://www.cnblogs.com/du463/p/17658525.html

相关文章

  • 字体大小自动适应DIV--亲自测试有效-tomcat
    <!DOCTYPEhtml><html><head><title>phone设计</title><metacontent="text/html;charset=utf-8"http-equiv="Content-Type"/></head><body><divstyle="......
  • Codeforces Round 894 (Div. 3) A-F题解
    A.GiftCarpet题意最近,特马和维卡庆祝了家庭日。他们的朋友Arina送给他们一块地毯,这块地毯可以用拉丁文小写字母的\(n\cdotm\)表来表示。维卡还没看过礼物,但特马知道她喜欢什么样的地毯。如果维卡能在地毯上读出自己的名字,她一定会喜欢的。她从左到右逐列阅读,并从当前列中......
  • JS 拖动DIV边框改变其大小
    效果如下图所示:详细代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>body,html{width:100%;heig......
  • CodeForces1741G-Kirill and Company题解
    \(\large\text{CodeForces1741G-KirillandCompany题解}\)题面传送门(有翻译(由黄巨佬提供))思路预处理因为\(k\)很小,所以可以先bfs预处理出家在\(i(2\lei\len)\)的人能捎带上哪些集合的人,在表示集合时用一个\(0\)到\(2^k-1\)的整数\(j\)表示,若\(j\)在二进质下的......
  • Codeforces Round #849 (Div. 4) 题解
    第一次打$\text{Div.4}$,感觉体验还行,差一题AK。##A直接使用if语句判断某个字符是否在字符串$\text{codeforces}$中出现过,幼儿园小朋友都会做。时间复杂度$\mathcal{O}(T)$,空间复杂度$\text{O}(1)$。ACCode##B用两个变量$x,y$记录当前走到哪里。若出现过$x=1,y=1$的......
  • Educational Codeforces Round 109 (Rated for Div. 2)
    B题没想到被坑了两次,极端情况明明也很好想,硬是WA了两发。C题很想之前做过的经典蚂蚁题,但是又不太一样,但分析之后,发现之后奇偶性相同才可能碰撞,那么分开处理,假如已经有相向而行,肯定是最快碰撞的,用一个栈维护即可,最后就是剩下的肯定是LLL...RRR将它们配对即可。#inclu......
  • 「题解」Codeforces 825G Tree Queries
    点权转边权,把边权设为两个端点的\(\min\),然后发现询问\(x\)的答案,就是询问\(x\)与所有黑点的虚树,边权的\(\min\)是多少。假设要判定答案是否\(\geqk\),那么就是询问\(x\)只经过\(\geqk\)是否能到达所有黑点,于是想到建立Kruskal重构树,那么\(x\)与所有黑点的LCA......
  • div + css 详解
    第1页《Div+CSS布局大全》整理者:JesseZhao网站:送给我最爱的女朋友蜜蜜,希望她可以永远快乐幸福!!!《Div+CSS布局大全》第2页目录div+css布局入门..............................................................................................................
  • 【刷题笔记】29. Divide Two Integers
    题目Giventwointegers dividend and divisor,dividetwointegerswithoutusingmultiplication,divisionandmodoperator.Returnthequotientafterdividing dividend by divisor.Theintegerdivisionshouldtruncatetowardzero.Example1:Input:dividen......
  • 「题解」Codeforces 1063F String Journey
    先reverse一下。不难看出选出的字符串长度为\(1,2,\cdots,k\)一定不劣,仅考虑这种形式的。然后考虑一手dp,设\(f_{i}\)表示最后一个子串是\(i\)为结尾,最长长度是多少。这样转移就是\(f_i\getsf_{j}+1,iff\s[j-f_j+1,j]\text{is}s[i-f_j,i]\text{'ssubstring}\)......