HDU 5339 Untitled (状态压缩枚举)
来源:互联网 发布:htc d820u数据连接 编辑:程序博客网 时间:2024/04/29 07:21
Untitled
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 570 Accepted Submission(s): 291
Problem Description
There is an integer a and n integers b1,…,bn . After selecting some numbers from b1,…,bn in any order, say c1,…,cr , we want to make sure that a mod c1 mod c2 mod… mod cr=0 (i.e., a will become the remainder divided by ci each time, and at the end, we want a to become 0 ). Please determine the minimum value of r . If the goal cannot be achieved, print −1 instead.
The first line contains one integerT≤5 , which represents the number of testcases.
For each testcase, there are two lines:
1. The first line contains two integersn and a (1≤n≤20,1≤a≤106 ).
2. The second line containsn integers b1,…,bn (∀1≤i≤n,1≤bi≤106 ).
For each testcase, there are two lines:
1. The first line contains two integers
2. The second line contains
Print T answers in T lines.
Sample Input
22 92 72 96 7
2-1
BestCoder Round #49 ($)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5339
题目大意:重排列bi,问a对重排列的数不断取模最快能为0的取模次数
题目分析:其实是水题,首先对数字小的取完余后再对数字大的取余等于没取,所以先对大数字取余,从大到小排序,因为n很小,DFS随意搜,也可以用状态压缩做,把每个数字选或不选的状态二进制压缩
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5339
题目大意:重排列bi,问a对重排列的数不断取模最快能为0的取模次数
题目分析:其实是水题,首先对数字小的取完余后再对数字大的取余等于没取,所以先对大数字取余,从大到小排序,因为n很小,DFS随意搜,也可以用状态压缩做,把每个数字选或不选的状态二进制压缩
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int const MAX = 1 << 22;int const INF = 0x3fffffff;int b[25], sta[MAX];int lowbit(int x){ return x & (-x);}bool cmp(int a, int b){ return a > b;}int main(){ int T; scanf("%d", &T); while(T --) { memset(sta, 0, sizeof(sta)); int n, a; scanf("%d %d", &n, &a); for(int i = 1; i <= n; i++) scanf("%d", &b[i]); sort(b + 1, b + n + 1, cmp); for(int i = 1; i <= n; i++) sta[1 << (i - 1)] = b[i]; int cnt, ans = INF; for(int i = 1; i < (1 << n); i++) { int tmp = a; cnt = 0; for(int j = i; j > 0; j -= lowbit(j)) { tmp %= sta[lowbit(j)]; cnt ++; } if(tmp == 0) ans = min(ans, cnt); } if(ans == INF) printf("-1\n"); else printf("%d\n", ans); }}
0 0
- HDU 5339 Untitled (状态压缩枚举)
- HDU 5339 Untitled 状态压缩 BC round49 A
- hdu 5339 Untitled(枚举 || DFS)
- HDU 5339 Untitled(枚举)
- hdu 4033 状态压缩枚举
- hdu 5339 Untitled
- HDU 5339 Untitled
- hdu 5339 Untitled【搜索】
- hdu 5339 Untitled
- HDU 5339-Untitled(dfs)
- HDU 5339 Untitled
- HDU-5339 Untitled
- HDU 5339 Untitled
- HDU 5339Untitled
- HDU 5339 Untitled
- hdu 5339 Untitled (dfs)
- 【DFS】hdu 5339 Untitled
- HDU-4462(状态压缩,枚举)
- 第一个python程序(os模块使用)
- 112.Path Sum
- dyld: Library not loaded: @rpath/Dynamic.framework/Dynamic Referenced from: /Users/XXX/Librar
- java入门基础笔记
- Floyd-Warshall算法
- HDU 5339 Untitled (状态压缩枚举)
- 华为是怎样研发的(15)——如果初创公司生搬华为
- 常用的Mysql数据库操作语句大全
- CvMat、Mat、IplImage之间的转换及实例源码
- JPA实体基本映射
- 第一周周日
- leetcode之路035 Search Insert Position
- 【凸包构造】LightOJ 1203 Guarding Bananas
- 暑假集训第三周周六赛 搜索 F - Oil Deposits 油块