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 (Div. 3)[1157]题解
codeforces 555b//Case of Fugitive// Codeforces Round #310(Div. 1)
Codeforces Round # 555 (Div. 3) C2. Increasing subsequence (complicated version) (贪心)