Codeforces Round #607 题解

Posted ctyakwf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #607 题解相关的知识,希望对你有一定的参考价值。

A题

签到题

B题

只需要贪心的调换成只能经过一次调换的最小字符串,再与目标串比较

技术图片
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
    int t;
    cin>>t;
    while(t--){
        string s;
        string p;
        cin>>s>>p;
        string t=s;
        int fa=0;
        sort(t.begin(),t.end());
        for(int i=0;i<s.size();i++){
            if(t[i]!=s[i]){
                for(int j=s.size()-1;j>i;j--){
                    if(s[j]==t[i]){
                        swap(s[j],s[i]);
                        fa=1;
                        break;
                    }
                }
            }
            if(fa)
            break;
        }
        if(s<p)
        cout<<s<<endl;
        else{
            cout<<"---"<<endl;
        } 
    }
}
View Code

C题

本题如果直接暴力会超时,因此我们发现,我们无需关心在比X大的字符串的内容,因为不会被用到,那么当字符串比x大的时候,只需要通过公式计算答案即可

注意因为我们在过程中不断取模,所以很可能导致负数,经过多年的做题经验,我发现模数是很神奇的东西,所以我们应当尽量多的地方加模数,防止差错,并且本题要注意爆int

技术图片
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main(){
    int t;
    cin>>t;
    while(t--){
        string s;
        int x;
        cin>>x>>s;
        int i;
        ll ans=s.size();
        for(i=0;i<x;i++){
            if(s.size()>x){
                 ans=(ans+(ans-(i+1)+mod)%mod*(s[i]-1))%mod; // 因为ans在不断取模,所以可能小于0 
            }
            else{
                if(s[i]==2)
                s+=s.substr(i+1);
                else if(s[i]==3)
                s+=s.substr(i+1)+s.substr(i+1);
                ans=s.size();
            }
        }
        cout<<ans%mod<<endl;
        
    }
}
 
View Code

 

以上是关于Codeforces Round #607 题解的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #607 (Div. 2) D. Beingawesomeism

Codeforces Round #607 (Div. 1) Solution

Codeforces Round #607 (Div. 2) C. Cut and Paste

ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) A Palindromic Supersequence(代

Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) BWeakened Common Diviso(代

Codeforces Round #815 (Div. 2) 题解