码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #555 (Div. 3)

时间:2019-09-07 13:35:15      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:第一个   std   一个   cin   字符串   div   字符   size   ==   

A

/*
题意是一直运算,直到运算结果没有重复,如果重复了,就退出
*/

#include <iostream>
#include <cstdio>
#include <vector>
#include <set>
#define ll long long
using namespace std;
set<int >v;
ll change(ll x){
    x++;
    while(x%10==0){
        x/=10;
    }
    return x;
}
int main(){
    ll n;
    cin>>n;
    v.insert(n);
    while(1){
        n=change(n);
        if(v.find(n)==v.end()){//没有重复
            v.insert(n);
        }else{
            break;
        }
    }
    printf("%d\n",v.size());
    return 0;
}

B

/*
给出一个数字字符串,然后9个数字变化公式,要求你进行变化,使得最后字典序最大
contiguous subsegment注意是连续的子字符串
从第一个可以变化的下标开始,后面的可以进行变化,也可以不变化,使得其为连续的即可
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=2e5+5;
int n;
char s[N];
int a[10];
void solve(int id){
    for(int i=id;i<n;i++){
        if(s[i]<=a[s[i]-'0']+'0'){
            s[i]=a[s[i]-'0']+'0';
        }else{
            return;
        }
    }
}
int main(){

    cin>>n;
    scanf("%s",s);
    for(int i=1;i<=9;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++){
        if(s[i]<=a[s[i]-'0']+'0'){
            solve(i);
            break;
        }
    }
    printf("%s\n",s);

    return 0;
}

Codeforces Round #555 (Div. 3)

标签:第一个   std   一个   cin   字符串   div   字符   size   ==   

原文地址:https://www.cnblogs.com/Emcikem/p/11480124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!