To My Girlfriend (DP)
题意:求选中若干个数,满足和为S,且不能选中下表i, j 和选中k, l的情况总数量。
思路:DP[i][j][k][l] i:前i个和为j,选中k个和不选中l个的情况数量,那么我们的转换应该是在必选/必不选中扩展,还有就是可以都不用,和最多不超过2个选和不选。然后由于i、j之间可以互换位置,k、l之间也可以互换位置所以结果需要乘以4.
#include<bits/stdc++.h>
using namespace std; typedef long long ll; const int maxn = 1e3 + ;
const int maxm = 1e6 + ;
const int mod = 1e9 + ; unsigned dp[maxn][maxn][][];
int a[maxn]; int main(){
int T, n, s;scanf("%d", &T);
while(T --) {
scanf("%d%d", &n, &s);
for(int i = ; i <= n; i ++) scanf("%d", &a[i]);
memset(dp, , sizeof(dp));
dp[][a[]][][] = ;
dp[][a[]][][] = ;
dp[][][][] = ;
dp[][][][] = ;
for(int i = ; i <= n; i ++){
for(int j = ; j <= s; j ++) {
int tmp = j + a[i];
if(tmp <= s)
for(int k = ; k <= ; k ++){
dp[i][tmp][][k] = (dp[i][tmp][][k] + dp[i - ][j][][k]) % mod;
dp[i][tmp][][k] = (dp[i][tmp][][k] + dp[i - ][j][][k]) % mod;
dp[i][tmp][][k] = (dp[i][tmp][][k] + dp[i - ][j][][k]) % mod;
dp[i][tmp][][k] = (dp[i][tmp][][k] + dp[i - ][j][][k]) % mod;
dp[i][tmp][][k] = (dp[i][tmp][][k] + dp[i - ][j][][k]) % mod;
}
for(int k = ; k <= ; k ++){
dp[i][j][k][] = (dp[i][j][k][] + dp[i - ][j][k][]) % mod;
dp[i][j][k][] = (dp[i][j][k][] + dp[i - ][j][k][]) % mod;
dp[i][j][k][] = (dp[i][j][k][] + dp[i - ][j][k][]) % mod;
dp[i][j][k][] = (dp[i][j][k][] + dp[i - ][j][k][]) % mod;
dp[i][j][k][] = (dp[i][j][k][] + dp[i - ][j][k][]) % mod;
}
}
}
long long ans = ;
for(int i = ; i <= s; i ++)
ans = (ans + dp[n][i][][]) % mod;
printf("%lld\n", ans * 4LL % mod); }
return ;
}
To My Girlfriend (DP)的更多相关文章
- hdu 5800 To My Girlfriend + dp
传送门:hdu 5800 To My Girlfriend 题意:给定n个物品,其中i,j必选,l,m必不选,问组成体积为s的方法一共有多少种 思路:定义dp[i][j][s1][s2],表示前i种物 ...
- hdu5800 To My Girlfriend dp 需要比较扎实的dp基础。
To My Girlfriend Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU5800 To My Girlfriend(DP)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5800 Description Dear Guo I never forget the mom ...
- HDU5800 To My Girlfriend 背包计数dp
分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i ...
- HDU 5800 To My Girlfriend(单调DP)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5800 [题目大意] 给出一个容量上限s,f[i][j][k][l][m]表示k和l两个物品不能选,i ...
- 2016暑假多校联合---To My Girlfriend
2016暑假多校联合---To My Girlfriend Problem Description Dear Guo I never forget the moment I met with you. ...
- POJ3211 Washing Clothes[DP 分解 01背包可行性]
Washing Clothes Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 9707 Accepted: 3114 ...
- HDU 5800 (DP)
Problem To My Girlfriend (HDU 5800) 题目大意 给定一个由n个元素组成的序列,和s (n<=1000,s<=1000) 求 : f (i,j,k,l, ...
- HDU 5800 To My Girlfriend 背包
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5800 To My Girlfriend Time Limit: 2000/2000 MS (Java ...
随机推荐
- NEO智能合约开发(二)再续不可能的任务
NEO智能合约开发中,应用合约比较简单,是的你没看错,应用合约比较简单. 应用合约三部曲,发布.调用.看结果.除了看结果工具比较缺乏,发布调用neogui最起码可以支撑你测试. 鉴权合约比较麻 ...
- typedef 摘自百度百科
1.typedef的最简单使用 1 typedef long byte_4; 给已知数据类型long起个新名字,叫byte_4. 2. typedef与结构结合使用 1 2 3 4 5 6 7 8 9 ...
- redis日志格式
在redis.conf中,在大概65行左右有个loglevel # 指定日志记录级别# Redis总共支持四个级别:debug.verbose.notice.warning,默认为verbose# d ...
- Java_并发工具包 java.util.concurrent 用户指南(转)
译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html.本 ...
- react_app 项目开发 (6)_后台服务器端-node
后台服务器端 负责处理前台应用提交的请求,并向前台返回 json 数据 前台应用 负责 展现数据与用户交互 发 ajax 请求与后台应用交互 yarn add axios /src/api/ajax. ...
- Web Service学习(一)
1.WebMethod特性包含哪些属性,都有什么用? 1.BufferResponse属性 该属性表明是否启用对Web Service方法响应的缓冲.当设置为true时,Web Service方法将响 ...
- Java+面向对象初学感想
在先导课之前我未曾接触C和Python之外的语言,在大一学年的课程中,用面向过程的思想方法足以完成绝大多数课程要求,故而我也对面向对象的编程思想知之甚少,虽然多有耳闻但是对它一直没有一个正式的学习了解 ...
- [math] 什么是双曲函数(转发)
我完全不记得上高中的时候学习过双曲函数...额,暴露了... 原文地址:https://zhuanlan.zhihu.com/p/20042215 可能是最好的讲解双曲函数的文章 零.写在前面 (近期 ...
- 我喜欢的几款不错的vim插件
插件安装组件 https://github.com/tpope/vim-pathogen supertab自动补齐 https://www.vim.org/scripts/script.php?scr ...
- this在java中的用法
this在java中的用法 1.使用this关键字引用成员变量 作用:解决成员变量与参数或局部变量命名冲突的问题 public class Dog { String name; public Dog( ...