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 ;
}

最新文章

  1. winform窗体(一)——基本属性
  2. MySQL5.7.11安装
  3. 此博客主人已搬家访问新家地址:http://write.blog.csdn.net/postlist
  4. log4net配置与初始化
  5. FFmpeg编译出错_img_convert 找不到
  6. mat(Eclipse Memory Analyzer tool)之二--heap dump分析
  7. centos 安装ss-QT5
  8. JavaScript基础笔记一
  9. 查看Unix系统是32位还是64位
  10. C#创建、安装一个Windows服务
  11. 异步请求HTTP
  12. vs UNICODE 零散的笔记
  13. fcitx 输入框纵向
  14. 几句话弄清楚Java参数传值还是传引用
  15. C# - 线程操作
  16. 使用Boost库中的组件进行C++内存管理
  17. OWIN产生的背景以及简单介绍
  18. TSQL编程
  19. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)
  20. c++11线程池

热门文章

  1. 邹欣,现代软件工程讲义:单元测试&amp;回归测试
  2. Jmeter Cookie管理器 获取JSESSIONID
  3. Oracle EBS不能正常启动的解决方案 &gt; Jinitiator 乱码
  4. CentOS 7上搭建Docker环境
  5. 什么是ODBC和JDBC?
  6. 升级到Sharepoint 2013后页面打开速度慢
  7. Neutron FWaaS 原理
  8. WORD wFormatTag; /* format type */ //设置波形声音的格式
  9. Spark Streaming初步使用以及工作原理详解
  10. codeforces 1093 题解