Tak and Cards(DP,二维背包)
问题 K: Tak and Cards
时间限制: 1 Sec 内存限制: 128 MB
提交: 107 解决: 34
[ 提交][ 状态][ 讨论版][命题人: admin]
题目描述
Constraints
1≤N≤50
1≤A≤50
1≤xi≤50
N,A,xi are integers.
Partial Score
200 points will be awarded for passing the test set satisfying 1≤N≤16.
输入
N A
x1 x2 … xN
输出
样例输入
4 8
7 9 8 9
样例输出
5
提示
The following are the 5 ways to select cards such that the average is 8:
Select the 3-rd card.
Select the 1-st and 2-nd cards.
Select the 1-st and 4-th cards.
Select the 1-st, 2-nd and 3-rd cards.
Select the 1-st, 3-rd and 4-th cards.
题意:给出n个数,从其中至少拿一个,使得平均数为k的拿法有多少种?
题解:dp[i][j]代表拿i个物品和为j的拿法,很明显状态转移方程可以为dp[j][kk]+=dp[j-1][kk-a[i]];必须倒着进行,否则就变成完全背包了。
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#include<vector>
#include<stdlib.h>
#include<math.h>
#include<queue>
#include<deque>
#include<ctype.h>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<algorithm>
#define gcd(a,b) __gcd(a,b)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define FAST_IO ios::sync_with_stdio(false)
#define mem(a,b) memset(a,b,sizeof(a))
const double PI = acos(-1.0);
const double eps = 1e-6;
const int MAX=1e5+10;
const long long INF=0x7FFFFFFFFFFFFFFFLL;
const int inf=0x3f3f3f3f;
const unsigned long long mod=2000000000000000003;
typedef unsigned long long ll;
using namespace std;int a[105];
ll dp[55][3005];
int main()
{int n,k;cin>>n>>k;for(int i=1;i<=n;i++)scanf("%d",&a[i]);ll tot=0;dp[0][0]=1;for(int i=1;i<=n;i++){tot+=a[i];for(int j=i;j>=1;j--)for(int kk=tot;kk>=a[i];kk--)dp[j][kk]+=dp[j-1][kk-a[i]];}ll ans=0;for(int i=1;i<=n;i++)ans+=dp[i][i*k];printf("%lld\n",ans);return 0;
}
Tak and Cards(DP,二维背包)相关推荐
- HDU 2159 FATE (DP 二维费用背包)
题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...
- HDU-2159 FATE 二维背包
这题是一个二维背包的题目,刚开始并没有那样去做,只开了一维的空间来存储状态,结果很多的数据都没有跑过去.其实这题这样来问的话可能就明了很多了,求在指定的容忍值和指定的杀怪数下,求最大能够得到了经验数, ...
- HDU-2159 FATE 二维背包
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 杭电2159-FATE (二维背包运用+详细解释)
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- c++ 动态规划-二维背包 and 潜水员问题
动态规划 - 二维背包 1.普通二维(费用)背包 01背包问题:给定 n 种物品和一个重量(容量)(限定条件)为 w 的背包,物品 i 的重量是 wi,其价值为 vi.(每种物品只有一个)问:如何选择 ...
- 【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组
测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组. 首先,我们发现每次拔高的区间都是一个后缀.这个自己画一画就大概能证出来了. 那么我们就有了一个状态定义:令 f(i,j) f ( i ...
- dp之二维背包poj1837(天平问题 推荐)
题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长 -15~~15)上,并使得天平平衡的方法数..... ...
- HDU2159 FATE(二维背包、带限制条件的背包问题)
题目传送门 题意很明显,就不细说了 我们这里可以把剩下的忍耐度看作背包容量,然后价值就是杀了怪所得的经验 用第二维表示杀了q只怪,这样就能用dp[j][q]表示已消耗j点忍耐度,杀了q只怪时的经验值 ...
- UVA 10306 e-Coins (二维背包)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
最新文章
- OpenCV中CV_IS_MAT_CONT(src->type dst->type) 的含义
- Math.random()
- restore还原不同名称的数据库_Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法...
- Struts学习之手动验证
- 用递归计算一个数字每一位相加的结果。_leetcode 2 两数相加(c++)
- java 基础第一季
- MAC修改保存bash_profile文件
- java 使用 lamba 表达式处理二维数组
- r语言 append_Python爬取近十年TIOBE编程语言热度数据并可视化可视化
- FFmpeg基础库编程开发学习笔记——视频常见格式
- 我的世界服务器权限组权限修改器,我的世界权限组指令介绍
- 推荐几款大家常使用的 SSH 客户端工具
- 基于SSM的课设管理小程序源码(课程设计源码)
- 如何在腾讯云搭建自己的网站
- 学习方法-北大学霸(02)初级技能
- c语言 愚人节题目,愚人节整人题目大全
- 蜂鸟E203开源RISC-V开发板:蜂鸟FPGA开发板和JTAG调试器介绍
- 一位宝石爱好者的零起点建站攻略
- 蓝桥杯评分标准_蓝桥杯软件设计大赛自测评分标准
- 解决idea上传文件到svn频繁报错 “Error:Node remians in conflict”、“remains in conflict”
热门文章
- 好程序员web前端教程分享js中的模块化一
- cmi码型变换matlab程序_CMI码形变换实验完整实验报告.doc
- docker启动mysql报错
- BCELoss和BCEWithLogitsLoss的区别
- 五款电动车充电器原理图(重点图2分析过程UC3842的VCC启动电压和稳定供电电压说明,12V由稳压二极管得到做外围电源LM358比较器可被控制输出12V 和0V切换)UC3842电源管理芯片详解
- reactJS入门学习
- python利用pandas对两张excel表合并(一)
- 互联网快讯:QQ音乐推出领养宠物功能;极米高性能投影产品获用户青睐;北京证券交易所正式开市
- c语言二次函数拟合,用一个简单2次函数拟合标准正态分布的研究
- 【华人学者风采】陈晓峰 西安电子科技大学