【动态规划去除冗余】NOIP2010-乌龟棋
【题目大意】
【思路】
最简单的思路是五维数组,但是当前走到的步数由已经取到的卡片决定,所以只需要四维。本来想要改一个滚动数组的,但是好像没有滚起来,算了(ノ`Д)ノ。
在学校要晚自习到21:15,回到家大概就22:00了,本来每天晚上想要切题的但是想到第二天五点多又要起床了,算了orz在努力问老师讨机房钥匙,虽然并没有成功。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
using namespace std;
const int MAXN=+;
const int MAXM=+;
int n,m;//棋子的数量和卡片的数量
int a[MAXN];//每一格的分数
int num[];
int f[MAXM][MAXM][MAXM][MAXM];//四张卡片分别取这四张时候的最多得分 int main()
{
//freopen("tortoise1.in","r",stdin);
scanf("%d%d",&n,&m);
for (int i=;i<n;i++) scanf("%d",&a[i]);
/*因为起点是第一个格子,所以下标从零开始设*/
for (int i=;i<m;i++)
{
int t;
scanf("%d",&t);
num[t-]++;
}
cout<<num[]<<endl;
memset(f,,sizeof(f));
for (int i1=;i1<=num[];i1++)
for (int i2=;i2<=num[];i2++)
for (int i3=;i3<=num[];i3++)
for (int i4=;i4<=num[];i4++)
{
int score=a[i1+i2*+i3*+i4*];
f[i1][i2][i3][i4]=;
if (i1>) f[i1][i2][i3][i4]=max(f[i1-][i2][i3][i4],f[i1][i2][i3][i4]);
if (i2>) f[i1][i2][i3][i4]=max(f[i1][i2-][i3][i4],f[i1][i2][i3][i4]);
if (i3>) f[i1][i2][i3][i4]=max(f[i1][i2][i3-][i4],f[i1][i2][i3][i4]);
if (i4>) f[i1][i2][i3][i4]=max(f[i1][i2][i3][i4-],f[i1][i2][i3][i4]);
f[i1][i2][i3][i4]+=score;
}
cout<<f[num[]][num[]][num[]][num[]]<<endl;
return ;
}
【动态规划去除冗余】NOIP2010-乌龟棋的更多相关文章
- NOIP2010乌龟棋[DP 多维状态]
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- NOIP2010 乌龟棋
2乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌 ...
- CH5E01[NOIP2010] 乌龟棋[暴力]
众所周知,由于这个人太菜了,所以她又来切上古水题了. 显然最多$40^4$种状态,暴力跑出可以拼出多少种状态,然后按序号从小到大对应的状态瞎转移即可. 我知道我想繁了,但是不想改了,因为思路一出来,没 ...
- tyvj 1402 乌龟棋 dp
P1402 [NOIP2010]乌龟棋 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2010提高组复赛第二题 描述 小明过生日的时候,爸爸送给他一 ...
- CJOJ 1087 【NOIP2010】乌龟棋 / Luogu 1541 乌龟棋(动态规划)
CJOJ 1087 [NOIP2010]乌龟棋 / Luogu 1541 乌龟棋(动态规划) Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个 ...
- NOIP2010提高组乌龟棋 -SilverN
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- [NOIP2010] 提高组 洛谷P1541 乌龟棋
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- 【NOIP2010】【P1317】乌龟棋
似乎很像搜索的DP(应该也可以用搜索写) 原题: 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物.乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N 格是终点, ...
- 【洛谷1541】【CJOJ1087】【NOIP2010】乌龟棋
题面 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌 ...
随机推荐
- TensorFlow中get_variable共享变量调用
import tensorflow as tf with tf.variable_scope('v_scope',reuse=True) as scope1: Weights1 = tf.get_va ...
- 关于Linux下s、t、i、a权限
文件权限除了r.w.x外还有s.t.i.a权限: 首先我们利用umask查看系统的权限为四位,首位就是特殊权限位,SetUID为4,SetGID为2,t为1 [root@iz2ze46xi6pjjj6 ...
- linux下终端游戏
sl 一列火车 oneko 一只淘气的小猫
- linux 设备树【转】
转自:http://blog.csdn.net/chenqianleo/article/details/77779439 [-] linux 设备树 为什么要使用设备树Device Tree 设备树的 ...
- 在 kernel 下打出 有帶參數的log。 怪異現象與解決方式。
code battery_log(BAT_LOG_CRTI, "youchihwang abc10010 xxxaaa8-2\r\n"); battery_log(BAT_LOG_ ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6152 Friend-Graph 暴暴暴暴力
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6152 题意:判定一个无向图是否有三个点的团或者三个点的独立集. 解法:Ramsey theorem,n ...
- ubuntu命令行操作mysql常用操作
登陆mysql harvey@harvey-Virtual-Machine:~/ruby/mydiary$ mysql -u root -p Enter password: Welcome to th ...
- HDU-5384
Danganronpa Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- 利用flex布局来column分布
html代码 <div class='items'> <div class='item'></div> <div class='item'></d ...
- 《java并发编程实战》读书笔记1--线程安全性,内置锁,重入,状态
什么是线程安全? 当多个线程访问某个类时,不管这些的线程的执行顺序如何,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的. 哈哈书上的解释,还是翻译过 ...