Beautiful string(rms2017模拟1-1)*【推理】
来源:互联网 发布:祝福婚姻的诗句知乎 编辑:程序博客网 时间:2024/06/06 20:10
Beautiful string(bs.cpp)
试题描述:
WSM 认为 O 和 X 是最优美的两个字母,由它们组成的串最优美。在这些最优美的串
中,如果任意只包含X的子串,长度不超过maxX,任意只包含O的子串,长度不超过maxO, 且整个串最多有 countO个O,countX个X。那么这个就是超级优美无敌串。 现在WSM想知道最长的超级优美无敌串有多长,希望你能告诉她。
输入格式:
输入包含多行,至文件结束为止; 每行四个数,依次是 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是零的话,说明就只有一段X。答案就是maxX,maxX是零也是同理。
现在考虑剩余的情况 ,我们先假设X不够用,说明就算是每次放maxO个O,然后用一个X把它们隔开,这种情况X还是不够用。
OOO…OOOXOOO…OOOXOOO…OOO…;
也就是说:CountO > (CountX+1) * maxO;
那么答案最大就只有可能是CountX + (CountX+1) * maxO。
同理O不够的情况也是如此。对于剩下的情况,答案就是CountX + CountO。值得注意的是,在计算(CountX + 1) * maxO的时候可能会超过int范围,所以建议使用除法来比较大小(用整除更好)。
时间复杂度:O(1) // 单组数据
空间复杂度:O(1)
代码
#include<bits/stdc++.h>#define F(i,a,b) for( int i=(a);i<=(b);i++ )#define N 101#define M 10001#define LL long long#define oo 0x7fffffffusing namespace std;LL read(){ LL f=1,s=0; char ch=getchar(); while( ch>'9' || ch<'0' ) { if( ch=='-' ) f=-1; ch=getchar(); } while( ch<='9' && ch>='0' ) { s=( s<<1 )+( s<<3 )+ch-'0'; ch=getchar(); } return f*s;}LL m,n,k;LL tot,cnt,ans;LL cnt_o,cnt_x,max_o,max_x;int main(){ freopen( "bs.in","r",stdin ); freopen( "bs.out","w",stdout ); while(cin>>cnt_o) { cnt_x=read(); max_o=read(); max_x=read(); if( cnt_o==0 || max_o==0) ans=min( cnt_x,max_x ); else if( cnt_x==0 || max_x==0 ) ans=min( cnt_o,max_o ); else { LL a1=cnt_o+( cnt_o+1 )*max_x; LL a2=cnt_x+( cnt_x+1 )*max_o; ans=min( a1,a2 ); tot=cnt_o+cnt_x; if( ans>tot ) ans=tot; } cout<<ans<<endl; } return 0;}
- Beautiful string(rms2017模拟1-1)*【推理】
- 中位数(rms2017模拟3-1)*【推理】
- 倒水(rms2017模拟2-1)* 【推理】
- 数位平方和(rms2017模拟14-2)* * *【推理】
- Prison (rms2017模拟1-3)* *【区间dp】
- 数 7(rms2017模拟14-1)* *【打表】
- 题目1 : Beautiful String
- Beautiful String
- Beautiful String
- FZU 2202 犯罪嫌疑人(模拟、推理)
- Tower( rms模拟4-3 ) * *(推理)
- HDU 4927 Series 1(推理+大数)
- hdu - 4782 - Beautiful Soup(模拟)
- HDU 4782 Beautiful Soup(模拟)
- HDU4782——Beautiful Soup(模拟)
- hdu 4782 Beautiful Soup(模拟)
- hdu 5062 Beautiful Palindrome Number(模拟)
- 经典推理题1
- 新手android学习之旅,个人总结
- Ice框架简介及Vs2013安装Ice 3.7.0步骤及实例
- git review
- 线上outofmemory查错
- aaaaaaaaabbbbbbbbbbbbbbbccccccccccccccccc
- Beautiful string(rms2017模拟1-1)*【推理】
- 图文并茂的Python教程-numpy.pad
- 基础中的基础,数据基本类型的练习
- 送给自己
- Oracle 数据远程导出、导入
- Linux学习(一):Linux 介绍
- Web基础架构:负载均衡和LVSpdf
- xieboke
- 《MySQL入门很简单》学习笔记(3)之第3章Linux平台下安装与配置MySQL(关键词:数据库/MySQL)