首页 > 其他分享 >洛谷 P5595 歌唱比赛

洛谷 P5595 歌唱比赛

时间:2024-06-16 12:33:20浏览次数:13  
标签:ansx ansy 洛谷 int P5595 当前 歌唱 字符串 数位

题目链接:歌唱比赛



思路

       根据题目分析可得,假如小x的点赞数是123111,小y的点赞数是234111,则字符串的第4为到第6位结果都为Z,分别为对比(111,111),(11,11),(1,1),字符串的第三位为Y,为对比(3111,4111),则结果字符串为YYYZZZ。
       此时可以轻易判断出字符串中第一个Z后面的所有字母都是Z,所以当出现X和Y之前有Z的时候肯定无法构造出小x和小y对应的点赞数,此时需要输出-1,其他情况简单判断当前字符串元素为X时,则说明小x的后缀数字大于小y的后缀数字,此时令小x的当前数位为2,小y的当前数位为1,当前字符串元素为Y时,小y的当前数位为2,小x的当前数位为1,当前为X时,两个人的当前数位都为1。


代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int x[N], y[N], ansx, ansy, flag;
int main() {
  string s;
  cin >> s;

  int len = s.length();
  for (int i = len - 1; i >= 0; i--) {
    if (s[i] == 'X') {
      ansx++;
      x[i] = 2;
      y[i] = 1;
    } else if (s[i] == 'Y') {
      ansy++;
      x[i] = 1;
      y[i] = 2;
    } else {
      x[i] = 1;
      y[i] = 1;
      if (ansx || ansy) {
        flag = 1;
        break;
      }
    }
  }
  
  if (flag) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < len; i++) {
    cout << x[i];
  }
  cout << endl;
  for (int i = 0; i < len; i++) {
    cout << y[i];
  }
  return 0;
}

标签:ansx,ansy,洛谷,int,P5595,当前,歌唱,字符串,数位
From: https://www.cnblogs.com/againss/p/18250474

相关文章

  • 洛谷P8807 [蓝桥杯 2022 国 C] 取模
    题目:解读(思路与分析):题目总结:对于给定的整数n和范围m,要找到两个不同的x和y,它们除以n后的余数相等。思路:对于每组给出的n,m询问,可以通过遍历范围从1到m的所有可能的j,并计算n对j取模的余数。使用一个集合来存储已经出现过的余数,如果当前余数已经存在于集......
  • 洛谷 P2015 二叉苹果树
    题目链接:二叉苹果树思路    本题使用链式向前星存储树上的边,然后DFS搜索+简单dp。    dp数组,dp[i][j]表示节点i及其子树保留k根树枝得到的最大苹果数。son数组存储当前节点的孩子节点的编号和当前节点与孩子节点之间的树枝上的苹果个数。    对于dp递......
  • 洛谷 P1352 没有上司的舞会
    题目链接:没有上司的舞会思路题解#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=1e5+10;intdp[N][2],happy[N],subordinate[N],cnt,head[N],nex[N],edge[N];//链式向前星存储边voidadd(intx,inty){nex[++cnt]=......
  • 洛谷 P1219 八皇后
    题目链接:八皇后思路    这是一个典型的搜索题目,从前往后依次枚举行数,从第一行开始依次枚举皇后的纵坐标,并判断当前坐标是否满足题目要求,满足题目要求则标记将答案存储,并继续向下枚举下一行。由分析可得每条对角线上的任意一点的横纵坐标满足公式i-j+n的值与对角......
  • 洛谷P1601 A+B Problem(高精)
    #include<iostream>#include<string>#include<cstring>#include<cstdio>usingnamespacestd;constintN=1005;structbign{intlen,s[N];bign(){memset(s,0,sizeof(s));len=1;}bign(intnum){*this=num;}......
  • 子集和加总问题(从洛谷博客同步)
    给出\(\{a_{1\dotsn}\}\),找出一个子集和为\(0\)。这是NPC的,当\(|a_i|\leqn\)的时候可以\(n^3\)背包,当然地可以使用bitset压位至\(\frac{n^3}w\)。值域还是太难受了,考虑怎么压下来值域,因为和为\(0\),值域又是\(n\),通过调整顺序总是存在一种方案使得值域在\([-......
  • 一般图边覆盖计数(从洛谷博客同步)
    今天模拟赛中出现了一个题,需要对一个\(n\)个点,\(m\)条边的图做边覆盖计数,边覆盖是一个边集\(S\subseteqE\)使得任意一个点\(i\)都存在一条边\((u,v)\inE\)满足\(u=i\)或\(v=i\),即覆盖所有的点。\(n\leq40,m\leq60\),1s512M。然后被我使用神秘做法冲过去了(然后莫......
  • 数学森林/洛谷P1750 出栈序列
    原创新思路求解出栈序列问题。问题描述:数学家小王经过千辛万苦长途跋涉终于来到了数学森林。无奈森林入口有很多个小矮人镇守。小矮人拿出一套题目让小王抽取一道题目说解出题目方能进入数学森林。题目如下:给定一个大小为c(最多可以同时存储c个元素)的堆栈,输入n个入栈的数,请输......
  • 洛谷估值
    达成时间基础信用练习情况社区贡献比赛情况获得成就总咕值202406031005441193024420240527100532719302292024052010049282030227202405131004630213022720240506100472321302212024042910045172230214......
  • 洛谷P4017 最大食物链计数
    题目信息题目要求样例输入/输出 算法简介 要知道题目需要用到什么样的算法,首先得捋清楚题目的意思比如这个题目,我们读题后可以获得这样的信息:(1)节点之间构成有向边(2)所有边不会构成环(3)需要求的所有的边没有边权而且一定是从入度为零的节点到出度为零的节点基......