题:https://nanti.jisuanke.com/t/41420

定义 dp[x][y] 表示第 x 个数到最后一个数能组成和为 y 的方案数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=;
const int M=;
const int mod=1e9+;
int dp[N][M];
int a[N];
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,sum=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a+,a++n);
for(int i=;i<=sum;i++)
dp[n+][i]=;
int ans=;
dp[n+][]=;
for(int i=n;i>=;i--){
for(int j=;j<=sum;j++){
dp[i][j]=dp[i+][j];
if(j>=a[i]){//刚好能加当前的a[i],和为j
dp[i][j]+=dp[i+][j-a[i]];
//加之前的是因为dp[i][j]可能有多个来源,得从多个来源中选取符合条件的
if(j>=(sum-j)&&abs(j-(sum-j))<=a[i])
ans+=dp[i+][j-a[i]];
ans%=mod;
}
dp[i][j]%=mod;
}
}
printf("%lld\n",ans);
}
return ;
}

J. Stone game(背包问题)的更多相关文章

  1. The Preliminary Contest for ICPC Asia Shanghai 2019 J. Stone game

    题目:https://nanti.jisuanke.com/t/41420 思路:当a(a∈S′)为最小值 如果Sum(S′)−a≤Sum(S−S′)成立 那么(∀t∈S′,Sum(S′)−t≤Sum ...

  2. 2019 上海网络赛 J stone name (01背包)

    题目:https://nanti.jisuanke.com/t/41420 题意:给你一个集合,然后让你拆成两个集合 x,y    求满足  x>y  &&  x-(x集合中最小 ...

  3. [08山东省选]2298 石子合并 即POJ 1738 An old Stone Game

    2298 石子合并 2008年省队选拔赛山东  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在 ...

  4. 题解报告:poj 1738 An old Stone Game(区间dp)

    Description There is an old stone game.At the beginning of the game the player picks n(1<=n<=5 ...

  5. x01.Weiqi.8: 一点改进

    原来的代码全部删除,进行了深层次重构,得其意而忘其言.得意之处有二: 1.关于显示 以 StoneSize 属性为依托,在 set 中加了一句:Width = Height = m_StoneSize ...

  6. SA: 情感分析资源(Corpus、Dictionary)

    先主要摘自一篇中文Survey,http://wenku.baidu.com/view/0c33af946bec0975f465e277.html   4.2 情感分析的资源建设 4.2.1 情感分析 ...

  7. NYOJ 737 石子合并(一)

    分析: 本题为区间型动态规划,dp[i][j] 表示从第 i 堆合并到第 j 堆的最小代价, sum[i][i] 表示第 i 堆到第 j 堆的石子总和,则动态转移方程: dp[i][j] = min( ...

  8. NYOJ 737---石子归并(GarsiaWachs算法)

    原题链接 描述    有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求 ...

  9. python 五子棋

    http://www.skywind.me/blog/archives/1029 http://blog.csdn.net/skywind/article/details/8164713 https: ...

随机推荐

  1. soupui--替换整个case的url

    添加新的URL 随便进入一个case的[REST]step,添加新的url 更换URL 添加完之后双击想要更换url的case,在弹出的窗口中点击URL按钮 在弹出的set endpoint窗口中选择 ...

  2. group_concat用法以及字符串太长显示不全

    由于group_concat默认的长度是1024,所以要将最大长度修改 首先执行 SET SESSION group_concat_max_len = 10240;#一次查询有效 然后再进行拼接 se ...

  3. Windb实践之Script Command

    1.输出参数 .echo The first argument is ${$arg1}. .echo The fifth argument is ${$arg5}. .echo The fourth ...

  4. 【每日Scrum】第三天冲刺

    一.计划会议内容 登录和个人主界面开发布局实现. 二.任务看板 三.scrum讨论照片 四.产品的状态 登录与个人界面布局实现 五.任务燃尽图  

  5. 四、python杂项

    一.pycharm单行和多行注释快捷键                        多行注释就一个组合键:选中+Ctrl+/

  6. Java线程——线程池概念

    什么是线程池? 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间.那么有没有一种办法使得线程可以复用, ...

  7. Halcon函数总结(一)

    Halcon函数总结: read_image( :Image :FileName : )  //读入图像 crop_part(Image : ImagePart :Row,Column,Width,H ...

  8. 并发与高并发(七)-线程安全性-原子性-atomic

    一.线程安全性定义 定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程 ...

  9. Shell程序实例集锦一

    2007-12-13 07:51:40 标签:实例 程序 Shell 休闲 职场 Shell程序实例集锦一      前言:下面这些hell实例都是自己写的或者用过的一些Shell小程序.整理整理. ...

  10. udp和tcp通信

    一.参考文档 1.从UDP的”连接性”说起–告知你不为人知的UDP 2.Linux UDP通信例子