Moo

题目描述

奶牛Bessie最近在学习字符串操作,它用如下的规则逐一的构造出新的字符串:

S(0) = “moo”

S(1) = S(0) + “m”+ “ooo” + S(0) = “moo” + “m” + “ooo” + “moo” = “moomooomoo”

S(2) = S(1) + “m” + “oooo” + S(1) = “moomooomoo” + “m” + “oooo” + “moomooomoo” = “moomooomoomoooomoomooomoo”

………

Bessie就这样产生字符串,直到最后产生的那个字符串长度不小于读入的整数N才停止。

通过上面观察,可以发现第k个字符串是由:第k-1个字符串 + “m” + (k+2个o) + 第k-1个字符串连接起来的。

现在的问题是:给出一个整数N (1 <= N <= 10^9),问第N个字符是字母‘m’还是‘o’?

输入格式

一个整数N。

输出格式

一个字符,m或者o

输入 #1

11

输出 #1

m

第 i 个字符串的长度为 a[i]=2*a[i-1]+i+3; 先预处理出长度为 n 的字符串是第几个字符串;也就是说要连接几次;

解法一:
根据要连接几次,然后把字符串连接起来,求n的位置的字符;

但是只有80分,因为n的范围为1e9;爆了空间;

#include<bits/stdc++.h>
using namespace std;
int n;
int a[100000];
string dfs(int p){string s="";if(p==0){return "moo";}string ss="";for(int i=1;i<=p+2;i++) ss+="o";string b=dfs(p-1);return b+"m"+ss+b;
}
int main(){scanf("%d",&n);a[0]=3;int ans;for(int i=1;;i++){a[i]=2*a[i-1]+i+3;if(a[i]>=n){ans=i;break;}}string s=dfs(ans);cout<<s[n-1]<<endl;return 0;
}

解法二:

看代码模拟一下,应该就可以了吧;

#include<bits/stdc++.h>
#define LL long long
#define pa pair<int,int>
#define lson k<<1
#define rson k<<1|1
#define N 500100
#define M 2000010
using namespace std;
int n;
int a[100000];
void dfs(int p,int q){//p为剩余的长度,q为第几个字符串 while(a[q-1]>p) q--;if(p==a[q-1]+1){cout<<"m"<<endl;return;} else if(p<=a[q-1]+q+3){cout<<"o"<<endl;return;}dfs(p-a[q-1]-q-3,q-1);
}
int main(){scanf("%d",&n);a[0]=3;int ans;for(int i=1;;i++){a[i]=2*a[i-1]+i+3;if(a[i]>=n){ans=i;break;}}dfs(n,ans);return 0;
}

dfs暴力模拟 Moo(洛谷 P1885)相关推荐

  1. DFS(剪枝与优化) - 洛谷 P1361 - 小猫爬山

    DFS(剪枝与优化) - 洛谷 P1361 - 小猫爬山 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_&l ...

  2. 模拟——乒乓球(洛谷 P1042)

    模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷P1042 根据题意,只要对读入的内容就行统计即可. 分别对两种赛制进行计算. 需要注意的是,读到'E'就停止了,每局结束也得输 ...

  3. 【模拟】洛谷 P1000 超级玛丽游戏

    题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...

  4. 洛谷 P1885 Moo

    P1885 Moo 题目描述 奶牛Bessie最近在学习字符串操作,它用如下的规则逐一的构造出新的字符串: S(0) = "moo" S(1) = S(0) + "m&q ...

  5. WUST 2090 HLD与停车场(bfs||dfs||暴力模拟||巧妙思维)

    2090: HLD与停车场 Time Limit: 1 Sec   Memory Limit: 128 MB   64bit IO Format: %lld Submitted: 21   Accep ...

  6. 引水入城(dfs的做法)洛谷p1514

    在这道题中, 由于每个点所能到达的地方是一定的,并且若底层能够填满,那么到达底层的位置一定 所以我们可以把每个点所到达的最底层记录下来,若访问到某一之前到达过的点,直接用这个点所到达的底层的点更新即可 ...

  7. 【模拟】洛谷 P1058 立体图

    题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每 ...

  8. Java实现 LeetCode 827 最大人工岛(DFS+暴力模拟)

    827. 最大人工岛 在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地. 进行填海之后,地图上最大的岛屿面积是多少?(上.下.左.右四个方向相连的 1 可形成岛屿 ...

  9. 巧用记忆化搜索代替暴力递归(洛谷P1464题题解,Java语言描述)

    题目要求 P1464题目链接 分析 如果--你信了这题干,真的写了递归--TLE警告!!! 所以,就需要优化嘛-- [−9223372036854775808,9223372036854775807] ...

最新文章

  1. PHP 给图片制作水印的方法
  2. 简单粗暴的“Debug模式”
  3. Jobdu MM分水果
  4. python dlib学习(十二):面部表情跟踪
  5. android 解决listview.notifyDataSetChanged刷新时Imageloader加载图片闪烁问题
  6. 微型计算机及接口技术试卷,微机原理及接口技术试题以及答案
  7. 手把手教你使用Numpy、Matplotlib、Scipy等5个Python库
  8. num_workers设置
  9. 2020统计局的行政划分表_湖州市有几个区和县?湖州市2020年县级以上区划名单...
  10. Sorting a Three-Valued Sequence
  11. 《灵飞经5·龙生九子》 第二十二章 河咸海淡(上)
  12. Unity5.6 VideoPlayer用法
  13. [视频编码] BD-rate和BD-PSNR
  14. 吐槽一下typora
  15. SAMSUNG,三星,N8000升级
  16. 【有利可图网】设计配色方案之紫色系篇
  17. logger日志系统
  18. 查看计算机上隐藏用户,Win732位旗舰版系统下如何查看与删除隐藏账户【图】
  19. 加解密与HTTPS(1)
  20. 音频信号处理(一)语音录制

热门文章

  1. 绘图---PS使用教程总结(一)基本操作
  2. TensorFlow by Google 使用排序 APIMachine Learning Foundations: Ep #9 - Using the Sequencing APIs
  3. 计算机在我们生活中有哪些应用,计算机在生活中的应用有哪些?
  4. 在win10安装pip
  5. 状态模式之观察者和状态模式
  6. 解决 Windows 无法访问共享
  7. 执行SQL语句的时候唯一约束字段异常Duplicate entry '33382-1-0' for key xxx
  8. 组合逻辑电路二——数字逻辑实验
  9. 2022年基础设施行业10大技术应用趋势
  10. 此起彼伏 竞相盛放?!!