CodeForces 132C Logo Turtle 四维DP 递推
来源:互联网 发布:阿里云 域名解析到网址 编辑:程序博客网 时间:2024/04/30 19:02
好吧,这道题目居然是动态规划。。涨姿势了。。。原来也可以这样设置状态。。
需要开一个bool数组来表示这个状态是不是可以到达,最后在所有状态里面遍历一遍,取最大的。
arr[i][j][k][l]表示执行到i条指令离坐标j变换了k条指令方向为l的状态可不可达(l表示方向,0表示和原点相同,1表示相反)
因为从原点可以往两边走,所以把原点设在坐标为100的地方了,所以一开始是arr[0][0][100][0]=true。
状态转移方程: if str[i] is 'T'
if arr[i][j][k][l^1] is true -> arr[i][j][k][l] := true
if k>0&&arr[i-1][j+(l==0?-1:1)][k-1][l] -> arr[i][j][k][l] := true //此处在考虑把T变换成F,同时需要考虑到方向的问题
str[i]是F的情况在此不予列出,自己动手推一下很快的。
最后就是题目要求的变换n次时候的最大值,但是仔细想一下,这个变换变两次之后又回来了,因此可以通过这个来故意浪费变换次数,要注意的应该就这些了
挺不错的一道题目。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char str[110];int n,ans,len;bool arr[110][220][55][2];int main(){ scanf("%s%d",str+1,&n); len=strlen(str+1); arr[0][100][0][0]=true; for(int i=1;str[i];++i) for(int j=100-i;j<=100+i;++j) for(int k=0;k<=i&&k<=n;++k) for(int l=0;l<=1;++l){ if(str[i]=='T'){ if(arr[i-1][j][k][l^1]) arr[i][j][k][l]=true; if(k>0&&(arr[i-1][j+((l==0)?-1:1)][k-1][l])) arr[i][j][k][l]=true; } else{ if(arr[i-1][j+((l==0)?-1:1)][k][l]) arr[i][j][k][l]=true; if(k>0&&arr[i-1][j][k-1][l^1]) arr[i][j][k][l]=true; } } for(int j=100-len;j<=100+len;++j) for(int k=n;k>=0;k-=2) for(int l=0;l<=1;++l) if(arr[len][j][k][l]) ans=max(ans,abs(100-j)); printf("%d\n",ans); return 0;}
- CodeForces 132C Logo Turtle 四维DP 递推
- 四维dp(codeforces 132C - Logo Turtle)
- codeforces 132C Logo Turtle--- dp dfs
- Codeforces 132C.Logo Turtle【DP,dfs】
- Codeforces 132C. Logo Turtle
- codeforces 132 C. Logo Turtle
- 【Codeforces 132C】 Logo Turtle
- codeforces 132C Logo Turtle dp DFS 搜索答案
- codeforces 132C Logo Turtle (记忆优化)
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle (DP)
- 132C Logo Turtle
- CF 132C Logo Turtle[dp+记忆化搜索]
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle —— DP
- F-Logo Turtle codeforces
- codeforce 132c C. Logo Turtle
- codeforces 212 C DP 递推 计数 破环
- Codeforces Round #90 C题(三维递推DP)
- CodeForces Round#229 DIV2 C 递推DP
- opencv实现类似MATLAB中find功能的方法
- hdu2255——奔小康赚大钱(二分图最优匹配+KM算法)
- Android中SP与DP区别的自我理解
- PHP生成唯一字符串的方法,产生唯一码的方法分析
- DescriptionResourcePathLocationType Cannot change version of project facet Dynamic Web Module to
- CodeForces 132C Logo Turtle 四维DP 递推
- Voucher Key 相关SELinux
- iOS简单直播实现(二:推流)
- 进程管理实验
- [codeforces724e]Goods transportation 解题报告
- 三子棋的C语言实现
- 【JZOJ4807】破解
- 集合入门介绍第四章——Map集合
- Tomcat项目跨域问题(Tomcat7)