【NOIP2010】【P1317】乌龟棋
2016-09-16 14:21
387 查看
似乎很像搜索的DP(应该也可以用搜索写)
原题:
小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。
乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。
View Code
原题:
小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。
乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; int f[50][50][50][50]; int n,m,a[1100],num[5]; int main(){//freopen("ddd.in","r",stdin); cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; int _id; for(int i=1;i<=m;i++){ cin>>_id; num[_id]++;} for(int i=1;i<=num[1]+1;i++) for(int j=1;j<=num[2]+1;j++) for(int p=1;p<=num[3]+1;p++) for(int q=1;q<=num[4]+1;q++){ f[i][j][p][q]=max(f[i][j][p][q],f[i-1][j][p][q]); f[i][j][p][q]=max(f[i][j][p][q],f[i][j-1][p][q]); f[i][j][p][q]=max(f[i][j][p][q],f[i][j][p-1][q]); f[i][j][p][q]=max(f[i][j][p][q],f[i][j][p][q-1]); f[i][j][p][q]+=a[i-1+(j-1)*2+(p-1)*3+(q-1)*4+1]; } cout<<f[num[1]+1][num[2]+1][num[3]+1][num[4]+1]<<endl; return 0; }
View Code
相关文章推荐
- 【NOIP2010提高组】乌龟棋(动态规划)
- NOIP2010提高组复赛 解题报告(C/C++)(机械翻译)(乌龟棋)(关押罪犯)(引水入城)
- [noip2010]乌龟棋
- NOIP2010 机器翻译 乌龟棋 关押罪犯
- noip2010 乌龟棋
- NOIp2010 乌龟棋
- ACM 519. [NOIP2010] 乌龟棋(dp)
- Noip 2010 解题报告(机器翻译,乌龟棋,关押罪犯,引水入城)
- NOIP提高组2010 乌龟棋
- 【动态规划】【原题】【noip2010 T2】乌龟棋
- 【洛谷1541】【CJOJ1087】【NOIP2010】乌龟棋
- 【dp】NOIP2010提高组乌龟棋
- NOIP2010提高组乌龟棋 -SilverN
- NOIP提高组2010 乌龟棋
- noip2010 乌龟棋
- |洛谷|NOIP2010|动态规划|P1541 乌龟棋
- CJOJ 1087 【NOIP2010】乌龟棋 / Luogu 1541 乌龟棋
- 【noip2010】乌龟棋
- NOIP 2010 - 提高组 乌龟棋 动态规划 重庆一中高2018级竞赛班第八次测试 2016.8.7 Problem 2
- NOIP 2010 解题报告(机器翻译,乌龟棋,关押罪犯,引水入城)