漂亮字串

【题目描述】
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 }

 

posted @ 2017-10-31 18:58  Z-Y-Y-S  阅读(643)  评论(0编辑  收藏  举报