Codeforces Round #555 (Div. 3)

Posted emcikem

tags:

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

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)的主要内容,如果未能解决你的问题,请参考以下文章

E Minimum Array ( Codeforces Round #555 (Div. 3) )

Codeforces Round #555 div3 C2

Codeforces Round #555 (Div. 3)[1157]题解

codeforces 555b//Case of Fugitive// Codeforces Round #310(Div. 1)

Codeforces Round # 555 (Div. 3) C2. Increasing subsequence (complicated version) (贪心)

Codeforces Round #555 (Div. 3) A B C1(很水的题目)