不充钱,你怎么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的更多相关文章

  1. [ CodeVS冲杯之路 ] P1368

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1368/ 嗯……泡泡堂,很劲啊,其实就是个盗版的田忌赛马 http://www.cnblogs.com/hyfer/p/ ...

  2. [ CodeVS冲杯之路 ] P1092

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1092/ 嗯,这道题有一定难度啊,需要先用扩展欧几里得算法求出逆元,然后按照大小构一颗带边权为小时数的树 树链剖分后在树 ...

  3. [ CodeVS冲杯之路 ] P3955

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/3955/ 最长上升子序列的加强版,n 有1000000,n 方的 DP 肯定会 TLE,那么用二分栈维护 二分栈我讲不好 ...

  4. [ CodeVS冲杯之路 ] P1165

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1165/ 题目很简单,代码最好写朴实一点,不要想着哪些情况可以合并在一起啊等等 老老实实一个个判断,不然很容易出错 细节 ...

  5. [ CodeVS冲杯之路 ] P1053

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1053/ 直接扫一遍串,把字母对应的 ascii 码直接做数组下标,交给数组统计 最后查询一遍数组的 'a'-'z' , ...

  6. [ CodeVS冲杯之路 ] P1171

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1171/ 代码调了很久才调好啊,一开始题目都看错了(要是真的NOIP肯定没戏了QuQ) 后面发现CodeVS上的数据输入 ...

  7. [ CodeVS冲杯之路 ] P1197

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1197/ 密钥的字母可以全转换为小写字母,然后一一映射,a→0,b→1,c→2,依此类推 对于密文只需将每一位减去对应密 ...

  8. [ CodeVS冲杯之路 ] P2492

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直 ...

  9. [ CodeVS冲杯之路 ] P2456

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/2456/ 用贪心的思想,木材当然要尽量分成多的木板,而大的木材能够分成大木板,但是小的木材不一定能够分成大的木板,所以木 ...

随机推荐

  1. Linux系统Mini版配置相关

    一:修改ip 编辑:vi /etc/sysconfig/network-sc/ifcfg-eth0 配置如下图:

  2. 数据分析处理库Pandas——对象操作

    Series结构 索引 修改 旧数据赋值给新数据,旧数据不变. 对某一数值进行修改,可以选择保留修改前或修改后的数值. 替换索引 修改某一个索引 添加 在数据1后添加数据2,数据1不改变. 添加一个数 ...

  3. 010---Django的模型层(2)

    确定模型关系: ''' Publish ---- Book 多对一:一个出版社对应多本书,在多的那张表添加关联字段 Book ---- Author 多对多:一个书对应多个作者,多个作者对应一本书 会 ...

  4. [Bzoj1034][ZJOI2008]泡泡堂BNB(贪心)

    Description 题目链接 Solution 这题就是一个贪心, 如果最弱的能赢对方最弱的就赢 否则最强的能赢对面最强的就赢 否则最弱的换对面最强 Code #include <cstdi ...

  5. [CodeForces954G]Castle Defense(二分答案+差分)

    Description 题目链接 Solution 二分答案,套一个差分标记即可 每次放弓箭手显然越右边越优 Code #include <cstdio> #include <alg ...

  6. python QQ邮件发送邮件

    # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from email.header import ...

  7. Eclipse字体修改

    第一步: 第二步: 第三步: 第四步: 第五步: 第六步:

  8. ARabevaluator 颜色渐变控制类

    参考资料: http://blog.csdn.net/qq_33456552/article/details/52092865 实现渐变效果: ArgbEvaluator argbEvaluator; ...

  9. android 获取图片

    Android获取手机或者内存卡里面的图片有两种方式 1.这是通过一种action Intent intent=new Intent(); intent.setAction(Intent.ACTION ...

  10. 24、php知识点总结基础教程--part-2

    1.表单处理 ①post请求 <html> <body> <form action="welcome.php" method="post&q ...