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

    (核心思路就是分情况讨论)

    从整体上对题目进行分析,此题共有三种情况:

    (1)0

    有一方为0,则结果为另一方的max;

    两方都为0,则结果为0;

    (2)一方多,另一方不够用,满足((contx+1)*maxo<=counto)

    或则((conto+1)*maxx<=countx)

    结果为:((contx+1)*maxo+counto) (X不够用)

    或则

    ((cont0+1)*maxx+counto) (O不够用)

    也即,不够用的一方即使每次只取一个作为分隔符都不够用的。

    比如,20 5 2 2

    则最长的超级优美无敌串为:OOXOOXOOXOOXOOXOO

    (3)其它情况,则结果为 maxn+maxm

    除去(1)(2)两种特殊情况,则其他情况中所有的字母都可以用上。

    比如8 6 3 2

    则最长的超级优美无敌串为:OOOXXOOOXXOOXX

    (我的理解是这样的)

    (首先明确一点,最长的串长为maxx+maxo)

    (而且这是两种字母刚好用完的情况)

    (那我们先考虑一方不够用的情况)

    (也就是把少的那个字母每次只用一个作为分隔符依然不够用)

    (此时少的字母全部用完,多的字母是最大分割数,肯定最优)

    (特殊的,可能存在一方为0的情况,特判)

    (其余情况可以全部用完,为maxx+maxo)

    #include <iostream>
    using namespace std;
    int main()
    {
    	long long o,x,maxx,maxo;
    	while(cin>>maxo>>maxx>>o>>x)
    	{
    		if(o==0||maxo==0)	cout<<min(maxx,x);
    		else if(x==0||maxx==0)	cout<<min(maxo,o);
    		else if((maxx+1)*o<maxo)	cout<<(maxx+1)*o+maxx;
    		else if((maxo+1)*x<maxx)	cout<<(maxo+1)*x+maxo;
    		else cout<<maxx+maxo;//全部用完
    		cout<<endl; 
    	}
    	return 0;
    }
    
  • 相关阅读:
    github打开慢,甚至打不开
    在使用confluent-kafka-go 时遇到如下问题
    Istio Routing极简教程
    kubelet证书过期解决方法
    工具类docker for k8s
    selenium jar包 的下载地址,各版本都有
    使用TestNG进行多浏览器,跨浏览器和并行测试
    简单聊聊TestNG中的并发
    清除Git仓库多余文件及其历史记录 
    【MAVEN】maven系列--pom.xml标签详解
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12635944.html
Copyright © 2011-2022 走看看