Codeforces Round #715 (Div. 2)(A-B)

简介: A. Average Height

A. Average Height


题意:设定两个相邻的整数相加之和能被2整除的数为“上镜”,求最多连续的“上镜”数。


思路:把奇和偶分开输出即可,相邻的奇数或者偶数一定是上镜。


#include <bits/stdc++.h>
#define llt long long
using namespace std;
bool cmp(int p,int q)
{
  return p%2<q%2;
}
int te,n,a[2010];
int main()
{
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin>>te;
  while(te--)
  {
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++) cout<<a[i]<<' ';
    cout<<'\n';
  }
}


B. TMT Document


题意:给你一个母串,求能否使得这个串拆分成为n个子串为TMT,可以输出YES,否则NO


思路:从头到尾扫一遍再从尾到头,因为之前一直卡一个样例,心态崩坏复制再加了一发就过了=。=贴出来警告愚蠢的自己明天正常点


const int maxn = 1e5 + 1000;
int a[maxn];
int main()
{
  std::ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n, i, j, t;
  cin >> t;
  string s1;
  while (t--) {
    cin >> n >> s1;
    int cnt = 0, cnm = 0;
    for (i = 0; i < n; i++) {
      if (s1[i] == 'T') {
        cnt++;
      }
      else {
        cnm++;
      }
    }
    if (cnm * 2 != cnt || n % 3 != 0) {
      scNO;
    }
    else {
      stack<int>mo;
      int cnt1 = 0, cc = 0, ff = 0;
for (i = 0; i < n; i++) {
        if (s1[i] == 'T') {
          if (cnt1 < cnm)
            mo.push(1);
          else
            cc++;
        }
        else {
          cnt1++;
          if (mo.size() == 0) {
            ff = 1; break;
          }
          if (mo.top() != 1) {
            ff = 1; break;
          }
          else {
            mo.pop();
          }
        }
      }
      if (ff == 1) {
        scNO;
      }
      else {
        cc += mo.size();
if (cc == cnm) {
          stack<int>m1;
          int cnt1 = 0, cc = 0, ff = 0;
          for (i = n-1; i >=0; i--) {
            if (s1[i] == 'T') {
              if (cnt1 < cnm)
                m1.push(1);
              else
                cc++;
            }
            else {
              cnt1++;
              if (m1.size() == 0) {
                ff = 1; break;
              }
              if (m1.top() != 1) {
                ff = 1; break;
              }
              else {
                m1.pop();
              }
            }
          }
          if (ff == 1) {
            scNO;
          }
else {
            cc += m1.size();
            if (cc == cnm) {
              scYES;
            }
            else
              scNO;
          }
        }
        else
          scNO;
      }
    }
  }
  return 0;
}
相关文章
|
6月前
Codeforces Round #567 (Div. 2)
【7月更文挑战第1天】
50 7
Codeforces Round #178 (Div. 2)
在n条电线上有不同数量的鸟, Shaass开了m枪,每一枪打的是第xi条电线上的第yi只鸟,然后被打中的这只鸟左边的飞到第i-1条电线上,右边的飞到i+1条电线上,没有落脚点的鸟会飞走。
56 0
|
人工智能 算法 BI
Codeforces Round #179 (Div. 2)A、B、C、D
我们每次加进来的点相当于k,首先需要进行一个双重循环找到k点和所有点之间的最短路径;然后就以k点位判断节点更新之前的k-1个点,时间复杂度降到O(n^3),而暴力解法每次都要进行floyd,时间复杂度为O(n^4);相比之下前述解法考虑到了floyd算法的性质,更好了运用了算法的内质。
58 0
Codeforces Round #186 (Div. 2)A、B、C、D、E
Ilya得到了一个礼物,可以在删掉银行账户最后和倒数第二位的数字(账户有可能是负的),也可以不做任何处理。
45 0
Codeforces Round #742 (Div. 2)
Codeforces Round #742 (Div. 2)
53 0
Codeforces Round 640 (Div. 4)
Codeforces Round 640 (Div. 4)A~G
101 0
|
索引
Codeforces Round 817 (Div. 4)
Codeforces Round 817 (Div. 4)A~G题解
118 0
Codeforces Round #675 (Div. 2) A~D
Codeforces Round #675 (Div. 2) A~D
161 0
|
机器学习/深度学习
|
人工智能