HDU 5339 Untitled (狀態壓縮列舉)
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 integer
T≤5,
which represents the number of testcases.
For each testcase, there are two lines:
1. The first line contains two integers n and a (1≤n≤20,1≤a≤106).
2. The second line contains n integers b1,…,bn (∀1≤i≤n,1≤bi≤106).
For each testcase, there are two lines:
1. The first line contains two integers n and a (1≤n≤20,1≤a≤106).
2. The second line contains n integers b1,…,bn (∀1≤i≤n,1≤bi≤106).
Print
T
answers in T
lines.
Sample Input
2
2 9
2 7
2 9
6 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);
}
}
相關文章
- HDU 3006 The Number of set (狀態壓縮)
- HDU 5816 Hearthstone(狀態壓縮DP+概率)
- hdu--5418Victor and World+狀態壓縮DP
- 狀態壓縮
- 簡易狀態壓縮DP
- 論文閱讀 狀態壓縮
- HTTP狀態碼列舉(PHP)HTTPPHP
- POJ3279 Fliptile【狀態壓縮+DFS】
- 05@多用列舉表示狀態、選項、狀態碼
- 分組(狀壓dp+技巧:快速列舉子集)
- HDU 1074 Doing Homework(狀壓DP)
- 動態規劃中初識狀態壓縮(入門)動態規劃
- POJ 2777 Count Color (線段樹+狀態壓縮)
- 狀壓 + 網路流 -- Escape HDU - 3605
- bzoj4145: [AMPPZ2014]The Prices(狀態壓縮+Dp)
- 《Effective Objective-C 2.0》- 5:用列舉來表示狀態、選項、狀態碼Object
- 使用列舉實現狀態機來優雅你的狀態變更邏輯
- 動態規劃——用二進位制表示集合的狀態壓縮DP動態規劃
- 狀態列
- HDU 1541 & POJ 2352 Stars (樹狀陣列)陣列
- HDU 2689 Sort it【樹狀陣列求逆序對】陣列
- 語法糖甜不甜?巧用列舉實現“狀態”轉換限制
- Redshift關於列的壓縮格式
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- HDU 1556 Color the ball(線段樹|樹狀陣列)陣列
- 沉浸式狀態列
- 狀態列相關
- Android 狀態列透明Android
- [hyperf]分享記錄一下常用http狀態碼的列舉類HTTP
- Oracle Hybrid Columnar Compression(HCC) 混合列壓縮Oracle
- 檔案壓縮和解壓縮
- HDU 4135——Co-prime(容斥原理&&二進位制列舉)
- ACM-ICPC 2018 南京賽區網路預賽__E AC Challenge【狀態壓縮+DP】ACM
- Python實現壓縮和解壓縮Python
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- JS壓縮方法及批量壓縮JS
- HDU 6274 Master of Sequence(思維+樹狀陣列+二分)AST陣列
- HDU 1556【區間更新+單點查詢 樹狀陣列】陣列