秦皇岛 I 题
有 n 个数字,你可以挑选其中任意个数字代表一个背包的体积,其余的数字表示的物品的体积,所挑选的背包必选完全装满,询问最终的方案数
思路分析 :
定义dp[i] 表示挑选 i 状态下的物品的方案数,f[i]表示 i 状态下某一个物品为背包的方案数
dp[ i | j ] += dp[ j ] * f[ i ]
代码示例 :
int n;
int a[20];
int sum[(1<<15)+50], f[(1<<15)+50];
int dp[(1<<15)+50]; void solve() {
memset(sum, 0, sizeof(sum));
memset(f, 0, sizeof(f));
for(int i = 0; i < (1<<n); i++) dp[i] = 1; for(int i = 0; i < (1<<n); i++){
for(int j = 0; j < n; j++){
if (i&(1<<j)) sum[i] += a[j+1];
}
}
for(int i = 0; i < (1<<n); i++){
for(int j = 0; j < n; j++){
if (i&(1<<j)) {
if (sum[i]-a[j+1] == a[j+1]) f[i]++;
}
}
}
for(int i = 1; i < (1<<n); i++){
int k = (1<<n)-1-i;
for(int j = k;j; j = (j-1)&k){
dp[i|j] += dp[j]*f[i];
}
}
printf("%d\n", dp[(1<<n)-1]);
} int main() {
int t;
cin >> t;
while(t--){
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
}
solve();
}
return 0;
}
秦皇岛 I 题的更多相关文章
- 2017 CCPC秦皇岛 M题 Safest Buildings
		
PUBG is a multiplayer online battle royale video game. In the game, up to one hundred players parach ...
 - 2017 CCPC秦皇岛 L题 One Dimensions Dave
		
BaoBao is trapped in a one-dimensional maze consisting of grids arranged in a row! The grids are nu ...
 - 2017 CCPC秦皇岛 A题 A Ballon Robot
		
The 2017 China Collegiate Programming Contest Qinhuangdao Site is coming! There will be teams parti ...
 - Codeforces Gym 102361A Angle Beats CCPC2019秦皇岛A题 题解
		
题目链接:https://codeforces.com/gym/102361/problem/A 题意:给定二维平面上的\(n\)个点,\(q\)次询问,每次加入一个点,询问平面上有几个包含该点的直角 ...
 - 2017CCPC秦皇岛 H题Prime Set&&ZOJ3988
		
题意: 定义一种集合,只有两个数,两个数不同且加起来为素数.要从n个数里抽出数字组成该集合(数字也可以是1~n,这个好懵圈啊),要求你选择最多k个该种集合组成一个有最多元素的集合,求出元素的数量. 思 ...
 - 2017CCPC秦皇岛 G题Numbers&&ZOJ3987【大数】
		
题意: 给出一个数n,现在要将它分为m个数,这m个数相加起来必须等于n,并且要使得这m个数的或值最小. 思路: 从二进制的角度分析,如果这m个数中有一个数某一位为1,那么最后或起来这一位肯定是为1的, ...
 - 2017CCPC秦皇岛 A题Balloon Robot&&ZOJ3981【模拟】
		
题意: 一个机器人在长为M的圆形轨道上送气球,当机器人到达M号点的时候下一站会回到1号点,且全程不会停止运动.现在在长为M的轨道上有N个队伍,队伍会在某个时间做需要一个气球,机器人需要送过去.一共有P ...
 - 2017CCPC秦皇岛 M题Safest Buildings&&ZOJ3993【复杂模拟】
		
题意: 给出两个半径R,r,R表示第一次的大圈半径,r表示第二次的小圈半径.第一次大圈的圆心位于(0,0),第二次小圈的圆心未知,但在大圈内,给你一个n,然后给出n个屋子的位置,问这些屋子中,第二次在 ...
 - 2017CCPC秦皇岛 E题String of CCPC&&ZOJ3985【模拟】
		
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985 题意: 给定一个字符串,由c和p组成,可以添加c或者p. 串中出现一 ...
 - 2017CCPC秦皇岛 C题Crusaders Quest&&ZOJ3983【模拟+STL】
		
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983 题意: 给定9个血槽,有三种物品,每次可以把连续相同的物品抵消 ...
 
随机推荐
- React 蚂蚁金服+ Antd  组件使用技巧
			
安装antd 组件 yarn add antd -D import { Card,Button,Table,From,Modal ,Select } from 'antd'; .引入就可以使用了 ...
 - Python--day37--多进程
			
1,创建多进程(父进程和子进程) import os import time #多进程都要导入multiprocessing from multiprocessing import Process d ...
 - SELECT command denied to user 'username'@'ip' for table 'user'错误处理
			
错误信息 使用RDS for MySQL,程序执行查询SQL时报错如下: SELECT command denied to user 'username'@'ip' for table 'user' ...
 - jquery银行电子账单表格填入和编辑插件
			
jquery银行电子账单表格填入和编辑 前段时间做的一个银行表格账单的jquery插件,用于金额写入和编辑的应用,希望对大家有所帮助,发现问题欢迎回复 ;(function($){ function ...
 - 【Linux】sed笔记
			
sed - stream editor for filtering and transforming text(用于过滤和转换文本的SED流编辑器),主要是以行为单位进行处理,可以将数据行进行替换. ...
 - pytorch代码调试工具
			
https://github.com/zasdfgbnm/TorchSnooper pip install torchsnooper 在函数前加装饰器@torchsnooper.snoop()
 - Linux(Centos)安装node及anyproxy
			
一.安装node //下载 wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz //解压 tar xf node-v1 ...
 - docker安装启动、配置MySql
			
1.安装mysql镜像 docker pull mysql/mysql-server 2.docker中启动Mysql容器 docker run --name mysql01 -d -p 3306:3 ...
 - 搭建高可用的flink JobManager HA
			
JobManager协调每个flink应用的部署,它负责执行定时任务和资源管理. 每一个Flink集群都有一个jobManager, 如果jobManager出现问题之后,将不能提交新的任务和运行新任 ...
 - CentOS 下 git 401 Unauthorized while accessing 问题解决
			
The requested URL returned error: 401 Unauthorized while accessing 这个一般是旧版git的问题,需要安装新版的.CentOS 想下载最 ...