Codeforces Round #555 (Div. 3) A B C1(很水的题目)
2024-08-24 14:42:47
A. Reachable Numbers
题意:设f(x)为 x+1 这个数去掉后缀0的数,现在给出n,问经过无数次这种变换后,最多能得到多少个不同的数。
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<vector>
#include<cmath> const int maxn=1e5+;
typedef long long ll;
using namespace std;
int sum=;
map<int,bool>mp;
int f(int x)
{
if(mp[x]==true)
{
return ;
}
//cout<<sum<<endl;
sum++;
mp[x]=true;
//cout<<x<<" "<<mp[x]<<endl;
x++;
while(x%==)
{
x/=;
}
return f(x);
}
int main()
{
int n;
cin>>n;
f(n);
cout<<sum<<endl;
return ;
}
B. Long Number
题意:给一个长度为n的字符串,给出 f 数组表示你可以把字符 x 变成对应的 f (x),你只能修改一段连续的子串,求修改后字典序最大的字符串。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<vector>
#include<cmath> const int maxn=1e5+;
typedef long long ll;
using namespace std;
map<char,char>mp;
int main()
{
int n;
cin>>n;
string str;
cin>>str;
char c[];
for(int t=;t<=;t++)
{
char ss=''+t;
cin>>c;
mp[ss]=c[];
}
int flag=;
for(int t=;t<n;t++)
{
if(mp[str[t]]>str[t])
{
str[t]=mp[str[t]];
flag=;
}
else if(flag==&&mp[str[t]]<str[t])
{
break;
}
} cout<<str<<endl;
return ;
}
C1. Increasing Subsequence (easy version)
题意:给一个长度为 n 的数组,每个数不一样,每次你可以从坐边界或者右边界取一个数,要求每一次取的数都要比上一次取得数要大,求最多可以取多少个数。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<vector>
#include<cmath> const int maxn=1e5+;
typedef long long ll;
using namespace std;
vector<int>vec;
int main()
{
int n;
cin>>n;
int x;
for(int t=;t<n;t++)
{
scanf("%d",&x);
vec.push_back(x);
}
vector<int>::iterator it1=vec.begin(),it2=vec.end()-;
vector<char>v;
int xx=;
for(int t=;t<n;t++)
{
if(*it2>xx||*it1>xx)
{
if(*it2<*it1&&*it2>xx&&*it1>xx)
{
xx=*it2;
v.push_back('R');
it2--;
}
else if(*it1<*it2&&*it2>xx&&*it1>xx)
{
xx=*it1;
v.push_back('L');
it1++;
}
else if(*it2>xx)
{
xx=*it2;
v.push_back('R');
it2--;
}
else if(*it1>xx)
{
xx=*it1;
v.push_back('L');
it1++;
}
// cout<<xx<<endl;
}
}
cout<<v.size()<<endl;
vector<char>::iterator it=v.begin();
for(it=v.begin();it!=v.end();it++)
{
cout<<*it;
}
return ;
}
最新文章
- winform窗体(一)——基本属性
- MySQL5.7.11安装
- 此博客主人已搬家访问新家地址:http://write.blog.csdn.net/postlist
- log4net配置与初始化
- FFmpeg编译出错_img_convert 找不到
- mat(Eclipse Memory Analyzer tool)之二--heap dump分析
- centos 安装ss-QT5
- JavaScript基础笔记一
- 查看Unix系统是32位还是64位
- C#创建、安装一个Windows服务
- 异步请求HTTP
- vs UNICODE 零散的笔记
- fcitx 输入框纵向
- 几句话弄清楚Java参数传值还是传引用
- C# - 线程操作
- 使用Boost库中的组件进行C++内存管理
- OWIN产生的背景以及简单介绍
- TSQL编程
- C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)
- c++11线程池
热门文章
- 邹欣,现代软件工程讲义:单元测试&;回归测试
- Jmeter Cookie管理器 获取JSESSIONID
- Oracle EBS不能正常启动的解决方案 >; Jinitiator 乱码
- CentOS 7上搭建Docker环境
- 什么是ODBC和JDBC?
- 升级到Sharepoint 2013后页面打开速度慢
- Neutron FWaaS 原理
- WORD wFormatTag; /* format type */ //设置波形声音的格式
- Spark Streaming初步使用以及工作原理详解
- codeforces 1093 题解