漂亮字串
【题目描述】
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 }