【动态规划去除冗余】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格是终点,游戏要求玩家控制一个乌 ...
随机推荐
- bzoj 1046 LIS
假设我们知道以每个点开始到最后的最长上升序列,设为w[i],这样首先我们在w值中取max,如果询问的值比max大,这样显然就是无解,如果小的话,我们需要求出来字典序最小的方案. 那么对于所有i,我们肯 ...
- ImportError: libQtTest.so.4: cannot open shared
错误: import cv2 File , in <module> from .cv2 import * ImportError: libQtTest.so.: cannot open s ...
- 阿波罗11号登月飞船电脑控制系统源码(AGC)
阿波罗11号登月飞船电脑控制系统源码(AGC) http://download.csdn.net/detail/downiis6/9574926 down url: https://github.co ...
- vue知识点(1)
处理用户输入 v-on指令添加一个事件监听器 div id="app-5"> <p>{{ message }}</p> <button v-on ...
- UNIX shell 学习笔记 一 : 几个shell的规则语法对比
1. 查看系统有哪些可用的shell cat /etc/shell 2. 每种shell都有一个特殊内置变量来存上一条命令的退出状态,例: C/TC shell $status % cp fx fy ...
- 2.C 基础
C 基础 原文地址:http://rypress.com/tutorials/objective-c/c-basics OC 可以说是C语言的一个超集,这样你可以无缝的和C语言结合编程也就是你可以这两 ...
- php设计模式三-----建造者模式
1.简介 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子 ...
- linux命令(11):df命令
1.查看磁盘空间和当前的磁盘数:df –lh或者df –i 2.显示指定类型磁盘:df -t ext4 3.列出各文件系统的i节点使用情况:df -ia 4.列出文件系统的类型:df -T
- IOS中div contenteditable=true无法输入 fastclick.js在点击一个可输入的div时,ios无法正常唤起输入法键盘
原文地址: https://blog.csdn.net/u010377383/article/details/79838562 前言 为了提升移动端click的响应速度,使用了fastclick.js ...
- Java实现POI读取Excel文件,兼容后缀名xls和xlsx
1.引入所需的jar包: maven管理项目的话直接添加以下坐标即可: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -- ...