zoukankan      html  css  js  c++  java
  • CF1560 F1. Nearest Beautiful Number (easy version)

    https://codeforces.com/contest/1560/problem/F1

    题意:

    定义一个数字是k美丽的,当且仅当组成他的数字种类数<=k

    给出数字n,求最小的>=n的k美丽数

    k<=2

    k=1,直接枚举全是0-9即可

    k=2,枚举是哪两个数字a b,a<b

    然后枚举一个可以修改的位置,如果它<a,就改成a,否则改成b

    它后面的数全都改成a

    当出现一个数既不是a又不是b时,停止位置的枚举

    注意出现在数字里的a也是可能被修改的

    例如10999,最佳答案是当a=0 b=1时,把0改为1,后面全改0

    刚开始还在想答案位数超过n的位数怎么办

    这是不存在的, 因为全是9一定满足

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        int T,n,k,len;
        string s;
        bool tag;
        scanf("%d",&T);
        while(T--)
        {
            cin>>s;
            len=s.length();
            string ans(len,'9');
            scanf("%d",&k);    
            for(char i='8';i>='0';--i)
            {
                string t(len,i);
                if(t>=s)
                {
                    if(ans>t) ans=t;
                }
            }
            if(k==1) 
            {
                cout<<ans<<'
    ';
                continue;
            }
            for(char a='0';a<'9';++a)
                for(char b=a+1;b<='9';++b)
                {
                    tag=true;
                    for(int i=0;i<len;++i)
                    {
                        if(s[i]<b)
                        {
                            
                            string t=s;
                            if(s[i]<a) t[i]=a;
                            else t[i]=b;
                            for(int j=i+1;j<len;++j) t[j]=a;
                            if(ans>t) ans=t;
                        }
                        if(s[i]!=a && s[i]!=b)
                        {
                             tag=false; 
                            break;
                        }
                    }
                    if(tag)
                    {
                        if(ans>s) ans=s;
                    }
                }
            cout<<ans<<'
    ';
        }
    }
    作者:xxy
    本文版权归作者和博客园共有,转载请用链接,请勿原文转载,Thanks♪(・ω・)ノ。
  • 相关阅读:
    Day10
    Day9
    Day8
    Day 7
    Day-6
    java中的原子性
    java 原子性
    内存可见性
    JVM 常忘笔记
    JVM 解释执行 编译执行 JIT
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/15239935.html
Copyright © 2011-2022 走看看