P3612 [USACO17JAN]Secret Cow Code S 分治 (清楚思路 + 代码简洁)

2023-11-03

题目链接 :
P3612 [USACO17JAN]Secret Cow Code S

这道题的思路是给你一个字符串,这个字符串变长的规律是先加尾结点,然后再把前面的部分平移到后面

a + b 反 转 后 a + b + b + a a + b 反转后 a + b +b + a a+ba+b+b+a

b是原字符串的最后一个字符,变换规律如上所示,这道题给你第n个字符,让你输出相应的字符

思路 : 我们先把字符串扩展到第一次出现大于等于n的长度 , 然后根据最后一次扩展的位置,返回上一个扩展字符所在的位置

首先我们观察一下

现在的扩展的字符串 , 字符串由原字符串 + 新扩展的字符串 组成。
故我们可以推出,如果这个当前我们所需要的pos在右半边,我们就返回左半边对应的位置,如果在左半边直接返回当前位置(左半边是原字符串)。

故题意清晰,代码实现:

//#pragma GCC optimize(2)
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <stack>
#include <set>
#include <vector>
#include <unordered_map>
#include <map>
#include <unordered_set>
#include <ctime>

using namespace std ;

typedef long long LL ;
typedef pair<int , int> PII ;

const int N = 1e5 + 10 , INF = 0x3f3f3f3f ;
const double eps = 1e-8 ;

int read() 
{
	int res = 0 , flag = 1 ;
	char c = getchar();
	while(!isdigit(c)) 
	{
		if(c == '-') flag = -1 ;
		c = getchar() ;
	}
	while(isdigit(c))
		res = (res << 1) + (res << 3) + (c ^ 48) , c = getchar() ;
	return res * flag ;
}

LL n ;

LL get(LL k , LL len)
{
	LL pos = 0 ;
	if(len < n) pos = get(k + 1 , len * 2) ;
	if(k == 1) // 小细节
	{
		if(pos == 0) return n ;
		else return pos ;
	}
	if(pos == 0) // 小细节
	{
		LL ans = n - len / 2 ;
		if(ans == 1) return len / 2 ;
		else return ans - 1 ;		
	}	
	else // 代码实现操作
	{
		if(pos <= len / 2) return pos ;
		else 
		{
			LL ans = pos - len / 2 ;
			if(ans == 1) return len / 2 ;
			else return ans - 1 ;
		}
	}
}
int main()
{
	string s ;
	cin >> s >> n ;
	cout << s[get(1 , s.size()) - 1] ;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

P3612 [USACO17JAN]Secret Cow Code S 分治 (清楚思路 + 代码简洁) 的相关文章

  • 洛谷表达式求值

    题目描述 给定一个只包含加法和乘法的算术表达式 请你编程计算表达式的值 输入输出格式 输入格式 一行 为需要你计算的表达式 表达式中只包含数字 加法运算符 和乘法运算符 times 且没有括号 所有参与运算的数字均为 000 到 231 1
  • P2141 [NOIP2014 普及组] 珠心算测验

    题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术 珠心算训练 既能够开发智力 又能够为日常生活带来很多便利 因而在很多学校得到普及 某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法 他随机生成一个正整数集合
  • 分治算法(Java)

    想必大家通过算法的名字就已经明白了 这个算法的过程 一个是分 一个是治 那么我为什么要使用这种算法呢 因为当前的问题是我们使用现有的方法是解决不了的 所以我们需要将一个复杂的问题分成两个或者是更多个相同或相似的子问题 然后再一我们已有的方法
  • 在一个有序数组中,查找具体的某个数(二分查找)

    问题 给定已排序好的n个元素arr 0 n 1 现在要在这n 个元素中找出一特定元素x 基本思想 将n个元素分成个数大致相同的两半 取arr n 2 与x进行比较 如果x arr n 2 则找到x 算法终止 如果x
  • O(logN)求斐波那契数列第N项:动态规划、矩阵分治

    logN求Fibonacci数列第N项 斐波那契数列通项公式 F i F i
  • 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数,求组成的新数最小的删数方案(O((n-k)logk)优化)

    问题描述 给定n位正整数a 去掉其中任意k个数字后 剩下的数字按原次序排列组成 个新的正整数 对于给定的n和k 设计 个算法 找出剩下数字组成的新数最少的删数方案 这一道题来自zyq老师的算法分析与设计实验当中 因为做完以后发现网上没有类似
  • 全网最火Java面试题

    第一部分 JAVA 基础 第一节 IO NIO 第二节 反射 第三节 多线程 第四节 集合 第五节 Web 第六节 其他 第七节 关键字 第八节 操作符 第九节 基础类型 第十节 异常 第十一节 JDBC 第十二节 OOP 第二部分 JVM
  • Java分治算法经典案例之汉诺塔

    分治算法 思想 当我们求解某些问题时 由于这些问题要处理的数据相当多 或求解过程相当复杂 使得直接求解法在时间上相当长 或者根本无法直接求出 对于这类问题 我们往往先把它分解成几个子问题 找到求出这几个子问题的解法后 再找到合适的方法 把它
  • P3612 [USACO17JAN]Secret Cow Code S 分治 (清楚思路 + 代码简洁)

    题目链接 P3612 USACO17JAN Secret Cow Code S 这道题的思路是给你一个字符串 这个字符串变长的规律是先加尾结点 然后再把前面的部分平移到后面 a b 反 转 后
  • P3386 【模板】二分图最大匹配

    include
  • noip 2008 双栈排序

    题目大意 给定n和一串数字 这串数字是一个1 n的排列 现在要用两个栈给这些数字排序 首先先判断是否有解 有解的话再输出字典序最小的方案 入栈1 输出a 出栈1 输出b 入栈2 输出c 出栈2 输出d 分析 首先必然要先考虑是否有解 对于没
  • 【分治法】中位数问题和Gray码问题——武汉理工大学算法设计与分析课程实验

    1 中位数问题 问题描述 设X 0 n 1 和Y 0 n 1 为两个数组 每个数组中含有n个已排好序的数 找出X和Y的2n个数的中位数 编程任务 利用分治策略试设计一个O log n 时间的算法求出这2n个数的中位数 数据输入 由文件inp
  • P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

    题目描述 两只牛逃跑到了森林里 Farmer John 开始用他的专家技术追捕这两头牛 你的任务是模拟他们的行为 牛和 John 追击在10 10 的平面网格内进行 一个格子可以是 一个障碍物 两头牛 它们总在一起 或者 Farmer Jo
  • P2084 进制转换

    题目背景 无 题目描述 今天小明学会了进制转换 比如 10101 2 那么它的十进制表示的式子就是 1 2 4 0 2 3 1 2 2 0 2 1 1 2 0 那么请你编程实现 将一个M进制的数N转换成十进制表示的式子 注意 当系数为0时
  • 【算法实践】1.2 套圈(分治,点集最小距离)

    Have you ever played quoit in a playground Quoit is a game in which flat rings are pitched at some toys with all the toy
  • 分支算法应用2--快速排序

    快速排序 快速排序就是将一个需要排序的数组A a0 a n 1 顺序排列输出 首先从数组中随便找到一个元素x 然后将小于这个元素x的所有元素放到这个元素左边 将大于这个元素x的所有元素放到这个元素的右边 最后运用递归再对x左边和右边的元素进
  • HDU1007(最近点对问题)

    题意不难理解 就是找到最近的两个点 计算其距离 除以2就是所求的圆的半径 思路很简单 运用分治的思想 先划分区间 分别找到左右区间中的最近点对 再合并区间 找到区间间的最近点对 注意如果用qsort 进行排序可能会超时 include
  • P5731 【深基5.习6】蛇形方阵

    题目描述 给出一个不大于 9 的正整数 n 输出n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入格式 输入一个正整数 n 含义如题所述 输出格式 输
  • 分治法 ( Divide And Conquer ) 详解

    文章目录 引言 分治法的范式 递归式 求解递归式的三种方法 代入法 递归树法 主方法 引言 在这篇 blog 中 我首先会介绍一下分治法的范式 接着给出它的递归式通式 最后我会介绍三种方法 代入法 递归树 和主方法 求解递归式 分治法的范式
  • 分块查找算法思路、示例和实现

    分块查找 索引表 22 44 74 数组 22 12 13 9 8 33 42 44 38 24 48 60 58 74 47 算法步骤 通过索引表线性查找确定在数组的哪一 块 通过数组里所在 块 的线性查找确定是否存在 在哪个位置 算法代

随机推荐

  • 5:emmc response

    1 前言 response是由device发给host 作为对先前发送的command的回应 response通过cmd信号线传输 本文将详细介绍response相关 2 response的类型 response有6种类型 分别是R1 R1
  • IIC总线设计⑥——时钟模块DS1302

    目录 一 模块介绍 一 基本信息 二 芯片信息及模块原理图 1 芯片信息 2 原理图 三 指令格式及寄存器介绍 1 指令格式 2 寄存器介绍 四 单字节传输时序 非突发模式 二 程序控制 一 ds1302 h 二 ds1302 c 1 GP
  • 原码、反码、补码概念

    计算机中的整数有三种2进制表示方法 即原码 反码和补码 三种表示方法均有符号位和数值位两部分 符号位都是用0表示 正 用1表示 负 正整数的原 反 补码都相同 负整数的三种表示方法各不相同 原码 直接将数值按照正负数的形式翻译成二进制就可以
  • 解决TypeError: this.cliEngine is not a constructor问题 并解决eslint\bin\eslint-plugin.js___jb_tmp___ (拒绝访问)

    目录 问题 分析问题 找到原文件 定位问题所在的位置 分析拒绝访问的问题 解决问题 找到原文件路径 修改原文件 重新打开webStorm 其他解决方案 问题 今天打开webStorm 准备编写index tsx文件 便遇到如下问题 Type
  • Ceph17 安装部署

    一 系统资源初始化 ceph可以实现的存储方式 块存储 提供像普通硬盘一样的存储 为使用者提供 硬盘 文件系统存储 类似于 NFS 的共享方式 为使用者提供共享文件夹 对象存储 像百度云盘一样 需要使用单独的客户端 ceph 还是一个分布式
  • 实战:从零开始制作一个跑步微信小程序

    感谢作者王小树的授权 如需转载 请与作者联系 作者 王小树 现于悦跑圈任职iOS工程师 常用ID alanwangmodify 欢迎技术交流 除了移动端技术 也期待Python JS 深度学习相关的技术交流 Github https git
  • Harbor任意管理员注册漏洞复现

    一 Harbor简介 1 Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器 通过添加一些企业必需的功能特性 例如安全 标识和管理等 扩展了开源Docker Distribution 作为一个企
  • eve-ng学习笔记

    eve ng学习笔记 一 ubuntu下使用virtualbox搭建eve ng学习环境 为什么要学习eve ng eve ng是什么 eve ng支持的三大组件 Dynamips IOL QEMU 1 下载eve ng并导入virtual
  • 图像分割在医学影像学中的应用(一)

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文是专栏 图像分割应用 的第1篇文章 首先来聊聊医学领域的图像分割之一 脑区域分割 1 任务分析 医学领域中 为了满足病情诊断 治疗方案制定等需求 常常需要对病人进行扫
  • import tensorflow出现了问题:Descriptors cannot be created directly

    import tensorflow出现了问题 Descriptors cannot be created directly的原因可能是您使用的protobuf包的版本过高 与tensorflow或其他包不兼容 您可以尝试以下方法来解决这个问
  • Linux shell脚本详解及实战(五)——shell脚本函数

    今天继续给大家介绍Linux基础知识 本文主要内容是Linux shell脚本的函数 一 shell脚本函数 函数格式 与其他编程语言类似 为了使得程序模块化 增强程序的可读性 Linux的shell脚本中支持创建和使用函数 Linux的s
  • 用jQuery的load方法动态加载页面,以及脚本问题

    一 了解load方法 load url data callback 概述 载入远程 HTML 文件代码并插入至 DOM 中 默认使用 GET 方式 传递附加参数时自动转换为 POST 方式 jQuery 1 2 中 可以指定选择符 来筛选载
  • 查看手机里面的应用id(UID),查看应用信息

    adb shell ps 获取到当前手机的UID 值得一提的是 程序如果重启 那么它的UID是不一样的 需要重新使用指令获取 获取到的UID如下 cat proc id名称 status 查看id名称当前进程的各种情况 如下
  • 【华为OD机试真题 Java】上班之路 (A卷2022Q4)

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • MySQL架构原理(MySQL体系架构、MySQL运行机制、MySQL存储引擎)

    一 MySQL体系架构 MySQL Server架构大致可以分为 网络连接层 服务层 存储引擎层和系统文件层 网络连接层 客户端连接器 Client Connectors 提供与MySQL服务器建立连接的支持 目前主流服务器编程技术 例如
  • SpringBoot发送http请求

    SpringBoot发送http请求 添加依赖
  • 隐变量(Hidden Variables)

    在软件开发的过程中的确存在另外的变量 但是他们并不是隐变量的 我们只是忽略了它们 这些被称为 人 的变量很多人都有可能成为 它具有不可预知性除非你在寻找一种方法论来排除他们 应用方法论的目的是什么呢 我认为就是得到一个可以忽略掉任何相关的独
  • 【AI文本工具站】日活近4万

    前言 承蒙网友厚爱 AI文本工具站 目前日活已经近4万 每天对话超过30万次 作为一个免费的工具网站 能够得到这么多人的认可和使用 真的是莫大的荣幸 点击前往 AI文本工具站 功能介绍 ChatGPT对话 国内可用 免费 免登录 无限制 文
  • Acwing3508 最长公共子串

    Acwing3508 最长公共子串 一眼dp 定义f i j 为以a i 结尾的a的子串与以b j 结尾的b的子串的最大公共后缀串的长度 分析最后一步 用a i 1 lt i lt strlen a 与 b j 1 lt j lt strl
  • P3612 [USACO17JAN]Secret Cow Code S 分治 (清楚思路 + 代码简洁)

    题目链接 P3612 USACO17JAN Secret Cow Code S 这道题的思路是给你一个字符串 这个字符串变长的规律是先加尾结点 然后再把前面的部分平移到后面 a b 反 转 后