zoukankan      html  css  js  c++  java
  • [CF Contest] Codeforces Subsequences 题解

    这题目怕不是有毒,,,样例万恶之源...

    直接导致有人在谷群内询问如何在 1s 内输出 (10^{16}) 个字符。


    好了说题解。

    首先读题,不难发现是最少 (k) 个子串。我们开一个数组,存储 codeforces 每一个字母要输出几个。

    显然的,每个字母的数量应该尽可能接近对方,这样就可以使子串的数量尽可能多,现在可以简单地通过增加的方法得到最优分布,比如输出 cccdddeeefffooorrreeesss 之类的字符串。

    具体实现请查看代码。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main(){
        ll k,cnt=1,a[15];
        string s="codeforces";
        cin>>k;
        for(int i=0;i<10;i++)a[i]=1;
        while(cnt<k) {
            for(int i=0;i<10;i++){
                if(cnt<k){
                    cnt/=a[i],
                    cnt*=a[i]+1,
                    a[i]++;			//对每个字符进行处理
                }else break;
            }
        }
        for(int i=0;i<10;i++)
            for(int j=1;j<=a[i];j++)
            	cout<<s[i];
        return 0;
    }
    
  • 相关阅读:
    Redis 安装和启动
    有序的map类--LinkedHashMap
    Springmvc
    工厂模式
    Top K
    判断链表是否有环
    注解
    Spring 事务
    热点账户高并发解决方案
    sql优化
  • 原文地址:https://www.cnblogs.com/Inversentropir-36/p/13202028.html
Copyright © 2011-2022 走看看