hdu5800 To My Girlfriend dp 需要比较扎实的dp基础。
To My Girlfriend
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1288 Accepted Submission(s): 492
I
never forget the moment I met with you.You carefully asked me: "I have a
very difficult problem. Can you teach me?".I replied with a smile, "of
course"."I have n items, their weight was a[i]",you said,"Let's define
f(i,j,k,l,m) to be the number of the subset of the weight of n items was
m in total and has No.i and No.j items without No.k and No.l
items.""And then," I asked.You said:"I want to know
Sincerely yours,
Liao
Each case contains 2 integers n, s (4≤n≤1000,1≤s≤1000). The next line contains n numbers: a1,a2,…,an (1≤ai≤1000).
4 4
1 2 3 4
4 4
1 2 3 4
8
/**
题目:To My Girlfriend
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5800
题意:如原题公式所示。
思路: 来源出题方给的题解。 令dp[i][j][s1][s2]表示前i个物品填了j的体积,有s1个物品选为必选,s2个物品选为必不选的方案数
(0<=s1,s2<=2),则有转移方程
dp[i][j][s1][s2] = dp[i - 1][j][s1][s2] + dp[i-1][j-a[i]][s1][s2] + dp[i - 1][j - a[i]][s1 - 1][s2] + dp[i - 1][j][s1][s2 - 1],
边界条件为dp[0][0][0][0] = 1,时间复杂度O(NS*3^2)。 dp[i - 1][j][s1][s2]: 不选第i个
dp[i-1][j-a[i]][s1][s2]: 选第i个
dp[i - 1][j - a[i]][s1 - 1][s2]: 第i个必选
dp[i - 1][j][s1][s2 - 1]: 第i个必不选 最终结果为ans += dp[n][x][2][2]*4;(1<=x<=s)
因为:
dp[n][x][2][2]算出来的都是没有排列时候选的i,j,k,l;
经过排列即:(i,j),(j,i),(k,l),(l,k)共四种。所有*4;
*/ #include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long LL;
const int mod=1e9+;
const int maxn=1e6+;
const double eps = 1e-;
int dp[][][][];
int a[];
int n, s;
int main()
{
int T;
cin>>T;
while(T--)
{
scanf("%d%d",&n,&s);
for(int i = ; i <= n; i++) scanf("%d",&a[i]);
memset(dp, , sizeof dp);
dp[][][][] = ;
for(int i = ; i <= n; i++){
for(int j = ; j <= s; j++){
for(int s1 = ; s1 <= ; s1++){
for(int s2 = ; s2 <= ; s2++){
dp[i][j][s1][s2] = dp[i-][j][s1][s2];
if(s1!=&&j>=a[i]){
dp[i][j][s1][s2] += dp[i-][j-a[i]][s1-][s2];
dp[i][j][s1][s2] %= mod;
}
if(j>=a[i]){
dp[i][j][s1][s2] += dp[i-][j-a[i]][s1][s2];
dp[i][j][s1][s2] %= mod;
}
if(s2!=){
dp[i][j][s1][s2] += dp[i-][j][s1][s2-];
dp[i][j][s1][s2] %= mod;
}
}
}
}
}
LL ans = ;
for(int i = ; i <= s; i++) {
ans = (ans+dp[n][i][][])%mod;
}
printf("%lld\n",ans*%mod);
}
return ;
}
hdu5800 To My Girlfriend dp 需要比较扎实的dp基础。的更多相关文章
- HDU5800 To My Girlfriend 背包计数dp
分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i ...
- 万能的林萧说:一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。
来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,"招人啦." 然某群友曰,"群主,俺想去." LZ回之,"你 ...
- 一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础
来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,“招人啦.” 然某群友曰,“群主,俺想去.” LZ回之,“你年几何?” 群友曰,“两年也.” LZ憾言之,“惜 ...
- dp乱写2:论dp在不在dp中(但在dp范畴)内的应用
最近正儿八经的学习了dp,有一些题目非常明显看出来就是dp了比如说:过河卒.方格取数.导弹拦截.加分二叉树.炮兵阵地更加明显的还有:采药.装箱问题.过河.金明的预算方案.今天来谈谈dp的dp在不在dp ...
- [提升性选讲] 树形DP进阶:一类非线性的树形DP问题(例题 BZOJ4403 BZOJ3167)
转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/7337179.html 树形DP是一种在树上进行的DP相对比较难的DP题型.由于状态的定义多种多样,因此解法也五 ...
- 程序人生:01如何做到招聘要求中的“要有扎实的Java基础”
本文摘自左潇龙博客,原文出处:http://www.zuoxiaolong.com/html/article_232.html 来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日 ...
- 【转】斜率优化DP和四边形不等式优化DP整理
(自己的理解:首先考虑单调队列,不行时考虑斜率,再不行就考虑不等式什么的东西) 当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重 ...
- POJ2411Mondriaan's Dream(DP+状态压缩 or 插头DP)
问题: Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after prod ...
- <DP> (高频)139 375 374 (DP hard)312
139. Word Break 返回结果较为简单可用dp, 复杂用dfs class Solution { public boolean wordBreak(String s, List<Str ...
随机推荐
- CHBTC
蛙人高频交易拆单策略-带手续费拆单策略及原理说明 - 王宇 warensoft - 博客园 CHBTC
- 理解SQL原理,写出高效代码
做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,数据量大,人员流动大,那么我们还能保证下一段时间系统还能流畅的运行吗?我们还能保证下 ...
- 网络采集软件核心技术剖析系列(2)---如何使用C#语言获得任意站点博文的正文及标题
一 本系列随笔概览及产生的背景 本系列开篇受到大家的热烈欢迎,这对博主是莫大的鼓励,此为本系列第二篇,希望大家继续支持,为我继续写作提供动力. 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受 ...
- 转载:win10 下安装32位的Oracle 11g 客户端(问题:环境不满足最低要求)
1. 在安装文件夹中,找 stage->cvu->cvu_prereq.xml文件. 2. 用记事本打开其xml文件进行编辑,加下面一段保存. <OPERATING_SYSTEM R ...
- DELPHI HMAC256
DELPHI HMAC256 unit HMAC;interfaceuses System.SysUtils, EncdDecd, IdHMAC, IdSSLOpenSSL, IdHas ...
- 两个IP实现IIS和Apache公用80端口的设置方法
1. 打开命令提示符并确保您位于 X:\Inetpub\Adminscripts 文件夹(其中 X 是 IIS 安装驱动器)中.为此,请在命令提示符下键入以下命令行: X: CD \Inetpub ...
- redis学习笔记——应用场景
最近在看redis入门指南,现在就自己的学习情况说说自己的理解. 字符串类型(String) 字符串类型是Redis中最基本的类型,能存储任意形式的字符串,包括二进制数据.如一张照片也可以用字符串类型 ...
- python abstractmethod 对象比较
from functools import total_ordering from abc import ABCMeta,abstractmethod @total_ordering class Sh ...
- Vue 过滤器filters
1.示例代码 采用vue单文件组件,使用moment插件格式化日期 <template> <div> <h1>{{date | dateFormat}}</h ...
- python列表解析和正同表达式
正则表达式 [i for i in ['1232','233','22'] if re.match('^233$', i)] return ['233']