CF#132 C. Logo Turtle DP
C. Logo Turtle
题意
有一个海龟在一个x轴的0点,给出一个由'F','T'组成的字符序列。
海龟要按照这个序列进行行动,如果第i个字符为'F',表示沿当前方向走,'T'表示转身。
现在你必须改变n个操作,把'F'变成'T',或者把'T'变成'F',同一个操作可以改变多次,问终点距离起点最大距离。
思路
看数据范围就是DP。
先说正解。
dp[i][j][0]表示执行完前i步,改变了j次,方向为正对起点的最大距离
dp[i][j][1]表示执行完前i步,改变了j次,方向为背对起点的最大距离
对于每个操作,枚举改变的次数num,然后分别讨论为F,T的情况
str[i]=='F':
num%2==0 :改变偶数次相当于没改变,向前走了一步
dp[i][j][0]=max(dp[i][j][0],dp[i-1][j-num][0]-1);正对起点向前走,距离减小1dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-num][0]+1);与上相反num%2==1:改变奇数次相当于改变一次,转身
dp[i][j][0]=max(dp[i][j][0],dp[i-1][j-num][1]);dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-num][0]);
str[i]=='T': 就和F中num的奇偶性相反
初始化dp[0][0][0]=dp[0][0][1]=0.,其他为负无穷
这题我想了两个DP方程,上面是第二个。
第一个是dp[i][j][k][l]表示前i个命令距离起点为j改变了k次朝向为l是否可行
GG了,写了好久混乱了
代码
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
typedef long long ll;
const int N=1e4+10;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
int dp[110][110][55];
/*
dp[i][j][k]前i条命令改变了j次,朝向为k的最远距离
*/
char str[N];
int main()
{
scanf("%s",str+1);
int len=strlen(str+1),k;
scanf("%d",&k);
memset(dp,0x8f,sizeof(dp));
dp[0][0][1]=0;
dp[0][0][0]=0;
for(int i=1; i<=len; i++)
{
for(int j=0; j<=k; j++)
{
for(int l=0; l<=j; l++)
{
if(str[i]=='F')
{
if(l%2)
{
dp[i][j][0]=max(dp[i][j][0],dp[i-1][j-l][1]);
dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-l][0]);
}
else
{
dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-l][1]+1);
dp[i][j][0]=max(dp[i][j][0],dp[i-1][j-l][0]-1);
}
}
else
{
if(l%2==0)
{
dp[i][j][0]=max(dp[i][j][0],dp[i-1][j-l][1]);
dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-l][0]);
}
else
{
dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-l][1]+1);
dp[i][j][0]=max(dp[i][j][0],dp[i-1][j-l][0]-1);
}
}
}
}
}
printf("%d\n",max(dp[len][k][0],dp[len][k][1]));
return 0;
}
CF#132 C. Logo Turtle DP的更多相关文章
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle —— DP
题目链接:http://codeforces.com/contest/132/problem/C C. Logo Turtle time limit per test 2 seconds memory ...
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle DP
C. Logo Turtle A lot of people associate Logo programming language with turtle graphics. In this c ...
- codeforces 132C Logo Turtle(dp)
可以用三维dp来保存状态, dp[i][j][k]表示在前i个字符变换了j步之后方向为k(k = 1 or k = 0)的最优解,也就是离原点的最大距离.这里规定0方向为正方向,1位负方向,表示的是当 ...
- Codeforces Beta Round #96 (Div. 2) E. Logo Turtle dp
http://codeforces.com/contest/133/problem/E 题目就是给定一段序列,要求那个乌龟要走完整段序列,其中T就是掉头,F就是向前一步,然后开始在原点,起始方向随意, ...
- [CF132C] Logo Turtle
[CF132C] Logo Turtle , Luogu A turtle moves following by logos.(length is \(N\)) \(F\) means "m ...
- CF 983B XOR-pyramid(区间dp,异或)
CF 983B XOR-pyramid(区间dp,异或) 若有一个长度为m的数组b,定义函数f为: \(f(b) = \begin{cases} b[1] & \quad \text{if } ...
- CodeForces 132C Logo Turtle (记忆化搜索)
Description A lot of people associate Logo programming language with turtle graphics. In this case t ...
- CF 9D. How many trees?(dp)
题目链接 以前做过类似的,USACO,2.3,开始数组开小了,导致数据乱了,然后超数据范围了,.. #include <cstdio> #include <iostream> ...
- CF 346B. Lucky Common Subsequence(DP+KMP)
这题确实很棒..又是无想法..其实是AC自动机+DP的感觉,但是只有一个串,用kmp就行了. dp[i][j][k],k代表前缀为virus[k]的状态,len表示其他所有状态串,处理出Ac[len] ...
随机推荐
- Product Owner交流记录1
Abstract 最终我们选择了UWP版必应词典功能开发. 项目:“单词挑战”功能 然后我们今天中午我们和Product owner聊了聊. Content Product owner是Travis ...
- api_DZFPKJ & api_DZFPCX(get_AES_url代码优化)
通过AES加密网站的接口来传值,不需要手动加密字符串后复制过来传值. #coding:utf-8 import requests import re def get_aes_url(key, text ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之九(四十五)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- Shelve:对象的持久化存储
目的:Shelve模块为任意能够pickle的Python对象实现持久化存储,并提供一个类似字典的接口. 在关系型数据库还过于复杂的情境中,Shelve为你提供了Python对象持久化的另一种方案. ...
- python数据结构之栈的构建
class Stack(object): def __init__(self): self.stack=[] def pop(self): return self.stack.pop() def pu ...
- 关于Sysinternals Suite
sysinternals 的网站创立于1996年由Mark russinovich和布赖科格斯韦尔主办其先进的系统工具和技术资料·微软于2006年7月收购sysinternals公司 . 不管你是一个 ...
- 百度云虚拟空间(BCH)
百度云虚拟空间(BCH)上的一些默认配置 :first-child { margin-top: 0;}blockquote > :last-child { margin-bottom: 0;}i ...
- elementaryos5安装mysql5.7、php7.2、nginx1.14.0
一.mysql5.7 安装mysql5.7: sudo apt-get install mysql-server-5.7 查看安装的mysql版本: mysql -V 5.7版本mysql安装过程中以 ...
- Android Studio常用配置
目录 1. 主题颜色设置 2. Logcat颜色设置 3. 类注释 4. 编译器添加背景图 4.1 第一种方式 Background Image 4.2 第二种方式 Sexy Editor 5. 修改 ...
- MATLAB 之MATLAB2016b 安装破解教程
MATLAB2016b 安装破解教程 安装包: 链接: https://pan.baidu.com/s/1RNwRGRjR-bHQEq1OMJ57OA 提取码: r663 步骤: (1)R2016b_ ...