题意:求选中若干个数,满足和为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)的更多相关文章

  1. hdu 5800 To My Girlfriend + dp

    传送门:hdu 5800 To My Girlfriend 题意:给定n个物品,其中i,j必选,l,m必不选,问组成体积为s的方法一共有多少种 思路:定义dp[i][j][s1][s2],表示前i种物 ...

  2. hdu5800 To My Girlfriend dp 需要比较扎实的dp基础。

    To My Girlfriend Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  3. HDU5800 To My Girlfriend(DP)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5800 Description Dear Guo I never forget the mom ...

  4. HDU5800 To My Girlfriend 背包计数dp

    分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i ...

  5. 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 ...

  6. 2016暑假多校联合---To My Girlfriend

    2016暑假多校联合---To My Girlfriend Problem Description Dear Guo I never forget the moment I met with you. ...

  7. POJ3211 Washing Clothes[DP 分解 01背包可行性]

    Washing Clothes Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 9707   Accepted: 3114 ...

  8. HDU 5800 (DP)

    Problem To My Girlfriend (HDU 5800) 题目大意 给定一个由n个元素组成的序列,和s (n<=1000,s<=1000) 求 :   f (i,j,k,l, ...

  9. HDU 5800 To My Girlfriend 背包

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5800 To My Girlfriend Time Limit: 2000/2000 MS (Java ...

随机推荐

  1. exit()

    exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束,跳回操作系统. exit(0) 表示程序正常退出,exit⑴/exit(-1)表示程序异常退出. exit() 结束当前进程/当前程 ...

  2. JavaScript(六)

    定时器 定时器在javascript中的作用1.制作动画2.异步操作3.函数缓冲与节流 定时器类型及语法 /* 定时器: setTimeout 只执行一次的定时器 clearTimeout 关闭只执行 ...

  3. Linux 内核参数 arp_ignore & arp_announce 详解

    arp_ignore定义了对目标地址为本机IP的ARP询问的不同应答模式. arp_announce对网络接口(网卡)上发出的ARP请求包中的源IP地址作出相应的限制:主机会根据这个参数值的不同选择使 ...

  4. 转 MYSQL SELECT ... FOR UPDATE and SELECT ... LOCK IN SHARE MODE Locking Reads

    原文: http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html In some circumstances, a consis ...

  5. JavaScript 常见错误

    1. 严格缩进 JavaScript 会自动添加句末的分号,导致一些难以察觉的错误 return { key: value }; // 相当于 return; { key: value }; 2. 括 ...

  6. Go语言基础之切片

    Go语言基础之切片 本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x ...

  7. CentOS裸机环境下安装php-7.3.1

    安装步骤如下 安装必要的软件 获取源码 编译安装 安装过程可能遇到的一些问题 编译参数详解 安装步骤如下 安装必要的软件 yum install -y autoconf automake libtoo ...

  8. [LeetCode] Insert into a Binary Search Tree 二叉搜索树中插入结点

    Given the root node of a binary search tree (BST) and a value to be inserted into the tree, insert t ...

  9. Java演算法-「馬踏棋盤問題」

    /* * 馬踏棋盤問題:(貪婪法求解) * 棋盤有64個位置,“日”字走法,剛好走滿整個棋盤 */ //下一個走法的方向類 class Direction{ int x; int y; int way ...

  10. php 一行代码解决二维数组去重

    array_unique($array, SORT_REGULAR);