zoukankan      html  css  js  c++  java
  • 漂亮字串

    【题目描述】
    Caima 认为 O 和 X 是最优美的两个字母,由 O、X 组成的串是最美的串。在这些
    最优美的串中,如果任意只包含 X 的子串,长度不超过 maxX,任意只包含 O 的子串,
    长度不超过 maxO,且整个串最多有 countO 个 O,countX 个 X。那么这个就是超级优
    美无敌串。
    现在 Caima 想知道最长的超级优美无敌串有多长,希望你告诉他。
    【输入格式】
    输入包含多行,至文件结束为止;
    每行四个数,依次是 CountO、CountX、maxO、maxX。
    【输出格式】
    每组数据输出一行,一个数表示最长的超级优美无敌串的长度。
    【数据规模】
    0<=CountO,CountX,maxO,maxX<=1000000
    【输入样例】
    10 10 0 0
    3 5 1 1
    【输出样例】
    0
    7
    【注意事项】
    第二个样例的解释:”XOXOXOX”
    最多 1000 组数据,其中 30%的数据 0<=CountO,CountX,maxO,maxX<=20,且数据组
    数不超过 20 组。

    模拟:

    首先修正MaxO和MaxC(和count取最小值)

    分成X不够和O不够的情况

    否则就是CountO+CountX

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 long long CO,CX,MO,MX;
     8 int main()
     9 {
    10  while (cin>>CO>>CX>>MO>>MX)
    11  {
    12    MX=min(MX,CX);
    13    MO=min(MO,CO);
    14    if (MO==0)
    15      cout<<MX<<endl;
    16    else if (MX==0)
    17      cout<<MO<<endl;
    18    else 
    19   if (CO>(CX+1)*MO)
    20     {
    21       cout<<CX+(CX+1)*MO<<endl;
    22     }
    23   else if (CX>(CO+1)*MX)
    24     {
    25       cout<<CO+(CO+1)*MX<<endl;
    26     }
    27   else 
    28     {
    29       cout<<CX+CO<<endl;
    30     }
    31  }
    32 }
  • 相关阅读:
    office的高级应用
    python基础
    maven 资源导出失败问题
    单向环形链表和约瑟夫问题
    JDBC连接MySQL
    环形队列
    稀疏数组
    数据库锁机制和事务隔离级别总结
    context的简单应用
    JDBC基本使用方法
  • 原文地址:https://www.cnblogs.com/Y-E-T-I/p/7763031.html
Copyright © 2011-2022 走看看