题目:P1541 乌龟棋

感谢大神的题解(他的写的特别好)

写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...)

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll num[+];
ll p[];
ll f[][][][];
int main()
{
ios::sync_with_stdio(false);
ll n,m;//n格子数,m牌数
cin>>n>>m;
for(ll i=;i<=n;i++)
cin>>num[i];
ll x;
for(ll i=;i<=m;i++)
cin>>x,p[x]++;//偷懒用逗号隔开 f[][][][]=num[];
for(ll a=;a<=p[];a++)
for(ll b=;b<=p[];b++)
for(ll c=;c<=p[];c++)
for(ll d=;d<=p[];d++)
{
ll r=+*a+*b+*c+*d;
if(a>=) f[a][b][c][d]=max(f[a][b][c][d],f[a-][b][c][d]+num[r]);//如果有牌出
if(b>=) f[a][b][c][d]=max(f[a][b][c][d],f[a][b-][c][d]+num[r]);
if(c>=) f[a][b][c][d]=max(f[a][b][c][d],f[a][b][c-][d]+num[r]);
if(d>=) f[a][b][c][d]=max(f[a][b][c][d],f[a][b][c][d-]+num[r]);
}
cout<<f[p[]][p[]][p[]][p[]]<<endl;
}

点击加号展开代码

思路:

每个牌有四种,建立一个四维数组f[a][b][c][d]表示当现在使用了a张走一位牌,b...,c...,d张走四位牌后能获得的最大数字

然后输入数据的时候准备一个数组p[5],把a,b,c,d牌数量分别放入1,2,3,4位

然后

for(a=~p[])
   for(b=~p[])
    for(b=~p[])
      for(b=~p[])//表示遍历a,b,c,d全部情况,我们要的是答案f[p[1]][p[2]][p[3]][p[4]]

所以要想办法递推到f[p[1]][p[2]][p[3]][p[4]]

用4个max,计算每一次的最大f[a][b][c][d],

那个递推式中:

ll r=+*a+*b+*c+*d;//r表示当前的位置,+1是,比如说a=b=c=d=0,但是他是在第一位,所以初始位是1
if(a>=) f[a][b][c][d]=max(f[a][b][c][d],f[a-][b][c][d]+num[r]);//如果有牌出
if(b>=) f[a][b][c][d]=max(f[a][b][c][d],f[a][b-][c][d]+num[r]);
if(c>=) f[a][b][c][d]=max(f[a][b][c][d],f[a][b][c-][d]+num[r]);
if(d>=) f[a][b][c][d]=max(f[a][b][c][d],f[a][b][c][d-]+num[r]);

中,a>=1是判断是否可以出牌

对于f[a-1][b][c][d]+num[r]的意思就是如果更新出了a牌之后的的数字总数,f[a][b][c][d]就是不出牌的数字总数,其实就是不变

P1541 乌龟棋 题解(洛谷,动态规划递推)的更多相关文章

  1. NOIP2000方格取数(洛谷,动态规划递推)

    先上题目: P1004 方格取数 下面上ac代码: ///如果先走第一个再走第二个不可控因素太多 #include<bits/stdc++.h> #define ll long long ...

  2. P1616 疯狂的采药(洛谷,动态规划递推,完全背包)

    先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...

  3. P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)

    题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里 ...

  4. P1048 采药(洛谷,动态规划递推,01背包原题)

    题目直接放链接 P1048 采药 这题只是01背包+背景故事而已 原题来的 PS:我写了一篇很详细的01背包说明,如果下面ac代码有看不懂的地方可以去看看 对01背包的分析与理解(图文) 下面上ac代 ...

  5. P1091 合唱队形题解(洛谷,动态规划LIS,单调队列)

    先上题目 P1091 合唱队形(点击打开题目) 题目解读: 1.由T1​<...<Ti​和Ti​>Ti+1​>…>TK​可以看出这题涉及最长上升子序列和最长下降子序列 2 ...

  6. 洛谷 p1541乌龟棋

    洛谷 p1541乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行NN个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第NN格是终点,游戏 ...

  7. 【洛谷】P1541 乌龟棋(四维背包dp)

    题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...

  8. 洛谷P1541 乌龟棋 [2010NOIP提高组]

    P1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家 ...

  9. codevs1068 乌龟棋==洛谷P1541 乌龟棋

    P1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家 ...

随机推荐

  1. HDU 5073 数学题

    题目传送门 http://acm.hdu.edu.cn/showproblem.php?pid=5073 这道题RE了好多发啊囧,RE到精神不振. Galaxy的质心并不是一成不变的,随着一些星球的移 ...

  2. HTTP权威指南阅读记录 - 第一章

    最近终于开始看<HTTP权威指南>了,第一章主要是简介一些基本的概念.下面列出一些常用,但还不是很了解的简单概念. 一.常见概念: 1.媒体类型 因特网上有数千种不同的数据类型,HTTP仔 ...

  3. bzoj3561

    3561: DZY Loves Math VI Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 240  Solved: 163[Submit][Sta ...

  4. 关于mysql的索引原理与慢查询优化

    大多情况下我们都知道加索引能提高查询效率,但是应该如何加索引呢?索引的顺序如何呢? 大家看一下下面的sql语句(在没有看下面的优化的方法之前)应该如何优化加索引以及优化sql语句: 1.select  ...

  5. 15_传智播客iOS视频教程_OC语言完全兼容C语言

    OC支持C语言所有的运算符并且效果是一样的.C语言中所有的运算符OC都支持.这些所有的运算符OC当中全部都支持. 包括C语言的结构体.枚举全部都可以写在OC当中,没有任何问题,并且效果是一样的. 比如 ...

  6. bzoj 2427: [HAOI2010]软件安装【tarjan+树形dp】

    一眼最大权闭合子图,然后开始构图,画了画之后发现我其实是个智障网络流满足不了m,于是发现正确的打开方式应该是一眼树上dp 然后仔细看了看性质,发现把依赖关系建成图之后是个奇环森林,这个显然不能直接dp ...

  7. python/shell脚本报异常^M: bad interpreter: No such file or directory

    问题:在Windows写了一python脚本,上传Linux服务器执行,报异常*****^M: bad interpreter: No such file or directory 原因:window ...

  8. HDU4947GCD Array(莫比乌斯反演+树状数组)

    题面 传送门 题解 orz ljz 相当于每一个数要加上 \[v\times [\gcd(i,n)=d]=v\times [\gcd(i/d,n/d)=1]=v\times \sum_{p|{i\ov ...

  9. Javascript 排序算法(转)

    1.快速排序 class QuickSort { Sort(originalArray) { // 复制 originalArray 数组防止它被修改 const array = [...origin ...

  10. C# 从服务器下载文件并保存到客户端

    参考代码: using System; using System.Net; namespace HT.SIHONG.Common.Utility { public class DownloadFile ...