HDU5890_Eighty seven_排除物品的01背包&&bitset
来源:互联网 发布:centos mysql配置文件 编辑:程序博客网 时间:2024/06/06 04:19
题意
给出 n 个数,进行 m 轮判断。每一轮去掉最多三个数,问从剩下的数中选恰好10个数的和恰好是87。
思路
bitset暴力01背包。
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=5890
AC代码
#include<cstdio>#include<iostream>#include<bitset>#include<algorithm>#include<cstring>using namespace std;const int maxn = 60;int T, n, m;int A[maxn];int ans[maxn][maxn][maxn];bitset<90> dp[11];bool Judge(int a, int b, int c){ for(int i = 0; i <= n; i++) dp[i].reset(); dp[0][0] = 1; for(int i = 1; i <= n; i++) { if(i == a || i == b || i == c) continue; for(int j = 10; j >= 1; j--) dp[j] |= dp[j-1] << A[i]; } return dp[10][87];}int main(){ scanf("%d", &T); while(T--) { memset(ans, 0, sizeof ans); scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &A[i]); for(int i = 1; i <= n; i++) { for(int j = i; j <= n; j++) { for(int k = j; k <= n; k++) if(Judge(i, j, k)){ ans[i][j][k]=ans[i][k][j]=1; ans[j][i][k]=ans[j][k][i]=1; ans[k][i][j]=ans[k][j][i]=1; } } } scanf("%d", &m); while(m--) { int a, b, c; scanf("%d %d %d", &a, &b, &c); if(ans[a][b][c]) puts("Yes"); else puts("No"); } } return 0;}
阅读全文
0 0
- HDU5890_Eighty seven_排除物品的01背包&&bitset
- 输出01背包内物品的程序
- 泛化物品的背包问题
- 物品无限的背包问题
- 01背包基础详解(附求解选择的物品)
- Bottles(选择k个物品的01背包)
- 背包系列第二篇----01背包(求解最大价值时背包的物品)
- P08泛化物品的背包问题
- 有物品数量限制的背包问题
- 【Unity&NGUI】背包系统物品的累加
- Unity3d 简单的背包系统(物品交换)
- hiho1043(无限物品的背包问题)
- zstu 1032 拆分物品 再01背包
- 背包问题——“01背包”详解及实现(包含背包中具体物品的求解)
- 背包问题——“01背包”详解及实现(包含背包中具体物品的求解)
- 背包问题——“01背包”详解及实现(包含背包中具体物品的求解)
- 背包问题——“01背包”详解及实现(包含背包中具体物品的求解)
- hdu5890Eighty seven【bitset优化01背包】
- Xshell : Python实现的简单shell
- Eclipse使用总结
- 2017 Multi-University Training Contest
- Markdown通用模板
- Spring_控制反转(IOC)/依赖注入(DI)
- HDU5890_Eighty seven_排除物品的01背包&&bitset
- esxcfg-*命令集
- VS2015+QT5.7+opencv3.10图像处理
- C++中cstring和int互换
- Java源码分析-ArrayList
- 无线安全之破解WPA/WPA2 加密WiFi
- leetcode23. Merge k Sorted Lists总结
- HDU2680-Choose the best route(经典最短路问题dijkstra算法)
- HDU 1599 find the mincost route(Floyd无向图最小环)