[ CodeVS冲杯之路 ] P1068
不充钱,你怎么AC?
题目:http://codevs.cn/problem/1068/
这是一道神DP题,一开始状态设计错了,用位置和剩余卡片做下标,过了样例数据WA了
好了,讲正解,设 f[i][j][k][l] 为1卡牌用了 i 次,2卡牌用了 j 次,3卡牌用了 k 次,4卡牌用了 l 次
那么转移:

这里 c 数组存的是对应的卡牌一共有多少张,末状态是 f[c[1]][c[2]][c[3]][c[4]]
时间复杂度:

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define C 41
#define N 351
using namespace std; int f[C][C][C][C],c[],n,m,a[N];
int main()
{
int i,j,k,l;
scanf("%d%d",&n,&m);
for (i=;i<=n;i++) scanf("%d",&a[i]);
for (i=;i<=m;i++)
{
scanf("%d",&k);
c[k]++;
}
f[][][][]=a[];
for (i=;i<=c[];i++)
{
for (j=;j<=c[];j++)
{
for (k=;k<=c[];k++)
{
for (l=;l<=c[];l++)
{
if (i>) f[i][j][k][l]=max(f[i][j][k][l],f[i-][j][k][l]+a[+i+j*+k*+l*]);
if (j>) f[i][j][k][l]=max(f[i][j][k][l],f[i][j-][k][l]+a[+i+j*+k*+l*]);
if (k>) f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k-][l]+a[+i+j*+k*+l*]);
if (l>) f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k][l-]+a[+i+j*+k*+l*]);
}
}
}
}
printf("%d\n",f[c[]][c[]][c[]][c[]]);
return ;
}
[ CodeVS冲杯之路 ] P1068的更多相关文章
- [ CodeVS冲杯之路 ] P1368
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1368/ 嗯……泡泡堂,很劲啊,其实就是个盗版的田忌赛马 http://www.cnblogs.com/hyfer/p/ ...
- [ CodeVS冲杯之路 ] P1092
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1092/ 嗯,这道题有一定难度啊,需要先用扩展欧几里得算法求出逆元,然后按照大小构一颗带边权为小时数的树 树链剖分后在树 ...
- [ CodeVS冲杯之路 ] P3955
不充钱,你怎么AC? 题目:http://codevs.cn/problem/3955/ 最长上升子序列的加强版,n 有1000000,n 方的 DP 肯定会 TLE,那么用二分栈维护 二分栈我讲不好 ...
- [ CodeVS冲杯之路 ] P1165
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1165/ 题目很简单,代码最好写朴实一点,不要想着哪些情况可以合并在一起啊等等 老老实实一个个判断,不然很容易出错 细节 ...
- [ CodeVS冲杯之路 ] P1053
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1053/ 直接扫一遍串,把字母对应的 ascii 码直接做数组下标,交给数组统计 最后查询一遍数组的 'a'-'z' , ...
- [ CodeVS冲杯之路 ] P1171
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1171/ 代码调了很久才调好啊,一开始题目都看错了(要是真的NOIP肯定没戏了QuQ) 后面发现CodeVS上的数据输入 ...
- [ CodeVS冲杯之路 ] P1197
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1197/ 密钥的字母可以全转换为小写字母,然后一一映射,a→0,b→1,c→2,依此类推 对于密文只需将每一位减去对应密 ...
- [ CodeVS冲杯之路 ] P2492
不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直 ...
- [ CodeVS冲杯之路 ] P2456
不充钱,你怎么AC? 题目:http://codevs.cn/problem/2456/ 用贪心的思想,木材当然要尽量分成多的木板,而大的木材能够分成大木板,但是小的木材不一定能够分成大的木板,所以木 ...
随机推荐
- python基础之面向对象编程介绍、类和对象
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
- 9.5web service基础知识
Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...
- Maven学习 (六) 搭建多模块企业级项目
首先,前面几次学习已经学会了安装maven,如何创建maven项目等,最近的学习,终于有点进展了,搭建一下企业级多模块项目. 好了,废话不多说,具体如下: 首先新建一个maven项目,pom.xml的 ...
- centos使用--防火墙
目录 1 切换到zsh 1.1 查看系统当前的shell 1.2 查看bin下是否有zsh包 1.3 安装zsh包 1.4 切换shell至zsh 2 安装oh-my-zsh 2.1 oh-my-zs ...
- 编译器错误消息: CS1617: 选项“6”对 /langversion 无效
编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS1617: 选项“6”对 /langversion 无效:必须是 ...
- [网站公告]1月10日1:00-7:00阿里云RDS维护会造成30秒闪断
大家好! 阿里云将于1月10号1:00-7:00(今天夜里)对杭州机房部分RDS实例所在的物理主机做维护操作,维护期间部分RDS实例会有1-2次闪断,每次闪断时间在30秒以内. 我们使用的RDS实例将 ...
- github+git提交 基础用法
git版本管理基本用法: 安装就不用说了 随便一搜 安装完 妥妥的.下边说的是在github从新建一个项目开始: 1.首先打开自己的github地址,如下图所示 点加号 选 New repositor ...
- 用js做的表单的增,删,以及全选
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>创 ...
- ssh.sh_for_ubuntu1604
#!/bin/bash sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config ...
- php 链接转二维码图片
// 类库下载地址 https://sourceforge.net/projects/phpqrcode/files/ $value = 'www.baidu.com';//二维码内容 $errorC ...