C. Logo Turtle (DP,思维)

news2024/10/6 10:40:33

传送门

题意:

给一个含有T、F的字符串,T表示转向,F表示前进1格。现在可以把其中的T改为F,或F改为T,改变n次(可重复改变某一位置的字母),问相对于起点最远能走多远。

思路:

  考虑每一个命令,选择改变或者不改变,当前的决策对于以后产生的影响就是,停在了哪个位置,正朝着哪个方向。由此可以设出状态:dp[i][j][k][d]表示前i个命令,使用了j次机会,当前停留在k位置,正朝着d方向。不妨设初始位置为L,则最右可到达2×L,最左可达到0位置

AC代码:

//
//                                                    ................                                                .................,`..,`.................
//                                                    .....=^..=^..=^.                                                .=^..=^..=^..=^..=^..=^..=^...*.........
//                                            ...*,/\`,/\^,\..,\..,\..,/\`,/\`,/\`...*...*                        ...*,\..,\..,\..,\..,\..,\..,\..=^=^,`,`,`,`
//                                            .,].=^..=^=^,`=^,`=^,`=^=^..=^..=^...,]..,].                        .,].,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^*.........
//                                    .....................,`..,`..,`.....................................        .....,`..,`..,`..,`..,`..,`..,`.
//                                    .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.        .=^..=^..=^..=^..=^..=^.........
//                                ,[\^,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,/\`,/\`,\..,\..,\..,\..,\..,\..,`,`
//                                ,/*.,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..=^..,`=^,`=^,`=^,`=^,`=^,`=^....
//                        .............,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..........,`..,`..,`..,`..,`..,`.
//                        .....=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.........
//                    ...*,/\^,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,`,`
//                    .,].=^=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^....
//                .............,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.........
//                .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.
//            ...*,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,/\`...*...*
//            .,].,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^...,]..,].
//        .........,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.....................................
//        .=^..=^..............................................=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.....
//    ...*,\..,\...\/`.\/`.\/`.\/`,`,`,`,`,`,`,`,`.\/`.\/`.\/`,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..=/\`,/\`...*
//    .,].,`=^,`=^.[,`.[,`.[,`.[,`.................[,`.[,`.[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^=^=^...,].
//        .,`..,`.                                            .,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.................
//        ........                                            .............................=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.....
//                                                                        ,`,`,`,`.\/`.\/`,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..=^..
//                                                                        .........[,`.[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..
//                                                                                    .....,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.....
//                                                                                    .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.
//                                                                                ,[\^,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..
//                                                                                ,/*.,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^
//                                                                            .........,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.
//                                                                            .=^..=^..=^..=^..=^..=^..=^..=^.. ...........=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.
//                                                                        ...*,\..,\..,\..,\..,\..,\..,\..,\..=^=^.\/`.\/`,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..
//                                                                        .,].,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^*..[,`.[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^
//                                                                    .........,`..,`..,`..,`..,`..,`..,`..,`.            .,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.
//                                                                    .....=^..=^..=^..=^..=^..=^..=^.........            .............................................=^..=^..=^..=^..=^.
//                                                                    ,/\^,\..,\..,\..,\..,\..,\..,\..,`,`                                                        .@=^,\..,\..,\..,\..,\..
//                                                                    =^=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^....                                                        ,[\/,`=^,`=^,`=^,`=^,`=^
//                                                                .........,`..,`..,`..,`..,`..,`..,`.                                                                .,`..,`..,`..,`..,`.
//                                                                .=^..=^..=^..=^..=^..=^..=^..=^..=^.                                                                .=^..=^..=^.. ......
//                                                            ,[\^,\..,\..,\..,\..,\..,\..,\..,\..,\..                                                                ,\..,\..,\..=^=^,`,`
//                                                            ,/*.,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^                                                                ,`=^,`=^,`=^=^*.....
//                                                        .........,`..,`..,`..,`..,`..,`..,`..,`..,`*                                                                .,`..,`..,`.
//                                                        .....=^..=^..=^..=^..=^..=^..=^..=^..=^....*                                                                .=^.. ......
//                                                        ,/\^,\..,\..,\..,\..,\..,\..,\..,\..,\..=^..                                                                ,\..=^=^,`,`
//                                                        =^=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..                                                                ,`=^=^*.....
//                                                        .....,`..,`..,`..,`..,`..,`..,`..,`..,`....*                                                                .,`.
//                                                        .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^...*.                                                                ....
//                                                        ,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..=^..
//                                                        ,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..
//                                                        .,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.....
//                                                        .........=^..=^..=^..=^..=^..=^..=^..=^.....
//                                                            .\/`,\..,\..,\..,\..,\..,\..,\..,\..,`,`
//                                                            .[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^....
//                                                                .,`..,`..,`..,`..,`..,`..,`..,`.
//                                                                ................................
//                                                                    ,`,`.\/`.\/`.\/`,`,`,`,`
//   
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int dx[3];
int dp[150][65][3][3]; 
const int INF=1e9+10;
void solve(){
	string s;
	cin>>s;
	int n;
	cin>>n;
	for(int i=0;i<128;i++){
		for(int j=0;j<64;j++){
			for(int k=0;k<2;k++){
				dp[i][j][k][0]=-INF;
				dp[i][j][k][1]=INF;
			}
		}
	}
	dx[0]=1;
	dx[1]=-1;
	dp[0][0][0][0]=0;
	dp[0][0][0][1]=0;
	for(int i=0;i<s.size();i++){
		for(int j=0;j<=n;j++){
			for(int k=0;k<2;k++){
				for(int p=0;p<2;p++){
					int op=dp[i][j][k][p];
					if(abs(op)<(INF/2)){
						if(s[i]=='F'){
							dp[i+1][j][k][0]=max(dp[i+1][j][k][0],op+dx[k]);
							dp[i+1][j][k][1]=min(dp[i+1][j][k][1],op+dx[k]);
							dp[i+1][j+1][!k][0]=max(dp[i+1][j+1][!k][0],op);
							dp[i+1][j+1][!k][1]=min(dp[i+1][j+1][!k][1],op);
						}
						else if(s[i]=='T'){
							dp[i+1][j][!k][0]=max(dp[i+1][j][!k][0],op);
							dp[i+1][j][!k][1]=min(dp[i+1][j][!k][1],op);
							dp[i+1][j+1][k][0]=max(dp[i+1][j+1][k][0],op+dx[k]);
							dp[i+1][j+1][k][1]=min(dp[i+1][j+1][k][1],op+dx[k]);	
						}
					}
				}
			}
		}
	}
	int ans=-1e9;
	int op=n%2;
	for(int i=op;i<=n;i+=2){
		for(int j=0;j<2;j++){
			for(int k=0;k<2;k++){
				int pp=abs(dp[s.size()][i][j][k]-0);
				if(pp<INF/2){
					ans=max(ans,pp);
				}
			}
		}
	}
	cout<<ans<<"\n";
}
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int t=1;
//	cin>>t;
	while(t--){
		solve();
	}
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

quilt data 安装 数据包 框架

安装 Quilt 有两个用户可见的组件&#xff1a; 一个 Python 客户端一个 Web 目录 Python 客户端 需要 Python 3.7 或更高版本。 $ pip install quilt3[pyarrow]Mental Model Quilt 数据包的思维模型 Quilt 将数据集表示为数据包。一个数据包是一个不可变的相关文件集合&a…

Redis的主从复制、哨兵、cluster集群

Redis 主从复制 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。 默认情况下&#xff0c;每台Redis服务…

JAVA关于多线程的学习

1.创建线程的方法(这里不考虑继承Thread类) 通过实现Runnable接口的方式实现 public class MyRunnable implements Runnable{Overridepublic void run() {for (int i 0; i < 5; i) {System.out.println(Thread.currentThread().getName()"执行了....");}} }pub…

基于.Net Core微服务-第1章:说明及技术栈

微服务是一种架构模式&#xff0c;提倡将单一应用程序划分为一组小的服务&#xff0c;服务相互协调、互相配合&#xff0c;为用户提供最终价值。

vulnhub-ripper(易)

打靶练习Ripper&#xff0c;这是一个中低的靶场 0x00 部署0x01 信息收集&#xff1a;端口扫描、服务发现0x02路径扫描0x03 总结 0x00 部署 靶机&#xff1a;下载地址 宿主机&#xff1a;kali2021版本 0x01 信息收集&#xff1a;端口扫描、服务发现 sudo arp-scan -l #探测存…

【每日随笔】摩托车驾驶 ④ ( 德州增驾摩托车 D 本记录 | 考场位置 “ 德州市公安局交警支队直属四大队车辆管理所 “ )

文章目录 一、进入考场二、科目一三、科目二1、推车 ( 找准车辆停放位置 )2、上车前检查 ( 开始考试前准备 )3、科目二考试开始4、科目二路线要求5、坡起6、绕桩7、单边桥 四、科目三教学1、推车 ( 找准车辆停放位置 )2、上车前检查 ( 开始考试前准备 )3、科目三考试开始4、科目…

NSS [SWPUCTF 2021 新生赛]Do_you_know_http

NSS [SWPUCTF 2021 新生赛]Do_you_know_http 先看题目&#xff0c;应该是伪造XFF&#xff0c;UA等东西。 postman一把梭。

Bootloader Design of PIC18 series MCU

注意&#xff1a;下列描述是在PIC单片机上启用Bootloader的一个相关知识的近似完备集。所有需要了解的&#xff0c;bootloader与用户态程序交互的理论知识都已给出。 1.概述 嵌入式产品化后&#xff0c;需要考虑现场升级&#xff0c;单片机如果需要添加现场升级功能&#xff…

linux+win——嵌套虚拟机性能测试

参考博文&#xff1a;CSDN-Violent-Ayang&#xff08;作者&#xff09;-UNIX BENCH详细安装及使用步骤 unix bench wget http://175.6.32.4:88/soft/test/unixbench/unixbench-5.1.2.tar.gz tar -xzvf unixbench-5.1.2.tar.gz cd unixbench-5.1.2 vim Makefile # 将 Makefile 中…

虹科方案 | Redis Enterprise:适用于任何企业的矢量数据库解决方案

用户希望他们遇到的每个应用程序和网站都具有搜索功能。然而&#xff0c;超过80%的业务数据是非结构化的&#xff0c;以文本、图像、音频、视频或其他格式存储。因此&#xff0c;我们需要一种跨非结构化数据的搜索方式。 什么是矢量数据库&#xff08;vector database&#xff…

【自动化测试教程】 —— pytest 框架详解 ~

pytest框架 特点: 容易上手, 入门简单, 文档丰富, 文档中有很多参考案例支持简单的单元测试和复杂的功能测试支持参数化执行测试用例过程中, 支持跳过操作支持重复失败的case支持运行Nose, unittest编写测试用例pytest支持很多第三方插件方便和持续集成工具集成 1. pytest断…

如何搭建独享的IP代理池?

随着互联网技术的日趋成熟&#xff0c;爬虫已经成为一种常见的数据获取方法。在采集业务中&#xff0c;建立本地IP代理池是非常重要的。今天将与您探讨IP代理池的选择以及如何搭建独享的IP代理池。 独享IP代理池是指由客户单独使用的IP池&#xff0c;优点是客户可以享受池中所…

关于opencv中cv2.imread函数读取的图像shape问题

图像坐标系是&#xff08;w,h&#xff09;,w为x轴&#xff0c;h为y轴,(x,y) 但opencv读出来的数组却正好相反&#xff0c;是&#xff08;h,w,3&#xff09;,(y,x,3) 所以这里会有一个转换 image cv2.imread(1.jpg) print(image.shape[0:2]) ##输出&#xff08;365,500&#x…

【操作系统】Linux编程 - 多线程的创建和使用 II (临界区 、互斥量、信号量的使用)

临界区的概念 之前的实例中我们只尝试创建了1个线程来处理任务&#xff0c;接下来让我们来尝试创建多个线程。 不过&#xff0c;还是得先拓展一个概念——“临界区” 临界区指的是一个访问共用资源&#xff08;例如&#xff1a;共用设备或是共用存储器&#xff09;的程序片段&…

哈工大计算机网络课程网络层协议详解之:Internet路由BGP协议详解

哈工大计算机网络课程网络层协议详解之&#xff1a;BGP协议详解 在之前的网络层协议中&#xff0c;我们介绍了Internet网络两个自治系统内的路由协议&#xff1a;RIP协议和OSPF协议。这两个协议应该来说是自治系统内协议的两个代表性协议&#xff0c;前一个基于距离向量路由算…

优化内存利用:深入了解垃圾回收算法与回收器

&#x1f52d; 大家好&#xff0c;我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&#xff1a;JVM &am…

机器学习面试题- 特征工程

目录标题 1、为什么要对特征做归一化2、对特征归一化的方法2.1 线性函数归一化2.2 零均值归一化 3、对数据预处理时&#xff0c;如何处理类别型特征3.1 序号编码3.2 独热编码3.3 二进制编码 4、什么是组合特征&#xff1f;如何处理高维组合特征&#xff1f;5、怎样有效地找到组…

​python接口自动化(十)--post请求四种传送正文方式(详解)​

简介 post请求我在之前的文章已经讲过一部分了&#xff0c;主要是发送一些较长的数据&#xff0c;还有就是数据比较安全等。我们要知道post请求四种传送正文方式首先需要先了解一下常见的四种编码方式&#xff1a; HTTP 协议规定 POST 提交的数据必须放在消息主体&#xff08;…

SpringBoot处理全局异常详解(全面详细+Gitee源码)

前言&#xff1a;在日常的开发工作中&#xff0c;项目在运行过程中多多少少是避免不了报错的&#xff0c;对于报错信息肯定不可以把全部信息都抛给客户端去显示&#xff0c;这里就需要我们对常见的七种异常情况统一进行处理&#xff0c;让整个项目更加优雅。 目录 一、基本介绍…

AMEYA360:航顺芯片产品有哪些 航顺家族介绍

经济型 HK32M050 家族 采用ARM Cotex-M0内核&#xff0c;最新工艺标准&#xff0c;最高48M主频&#xff0c;内置16K FALSH&#xff0c;4K SRAM&#xff0c;支持DMA&#xff0c;内置4个模拟比较器&#xff0c;2路运放&#xff08;PGA&#xff09;&#xff0c;支持多种通讯包括2个…