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);
}
}
相關文章
- hdu1074動態規劃狀態壓縮動態規劃
- hdu3001 狀態壓縮dp+三進位制
- HTTP狀態碼列舉(PHP)HTTPPHP
- 論文閱讀 狀態壓縮
- HDU 4770 Lights Against Dudely(列舉所有狀態 當然壯壓dp會很簡單)AI
- POJ3279 Fliptile【狀態壓縮+DFS】
- 狀態壓縮動態規劃 -- 炮兵陣地動態規劃
- 分組(狀壓dp+技巧:快速列舉子集)
- 2014上海網路賽1004||hdu5045 contest【狀態壓縮dp】
- 動態規劃中初識狀態壓縮(入門)動態規劃
- 演算法學習之路|狀態壓縮dp演算法
- NOIP2005過河[DP 狀態壓縮]
- hdu 3874 樹狀陣列陣列
- 《Effective Objective-C 2.0》- 5:用列舉來表示狀態、選項、狀態碼Object
- 2014廣州網路賽1002||hdu5023 線段樹&&狀態壓縮
- hdu 5147 樹狀陣列陣列
- 狀壓 + 網路流 -- Escape HDU - 3605
- 使用列舉實現狀態機來優雅你的狀態變更邏輯
- URAL 1152 False Mirrors(簡單的狀態壓縮dp)False
- 動態規劃——用二進位制表示集合的狀態壓縮DP動態規劃
- HDU 5067 Harry And Dig Machine(狀壓dp)Mac
- HDU 4937 Lucky Number(列舉進位制)
- UVA 11825 dp、狀態壓縮、二進位制法表示集合
- 2014上海網路賽1004||hdu5045 二分圖的最佳匹配 或 狀態壓縮dp
- PHP動態壓縮js,cssPHPJSCSS
- 語法糖甜不甜?巧用列舉實現“狀態”轉換限制
- android狀態列一體化(沉浸式狀態列)Android
- untitled
- HDU-3635 Dragon Balls 並查集路徑壓縮Go並查集路徑壓縮
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- hdu4325 樹狀陣列+離散化陣列
- hdu 4368 樹狀陣列 離線維護陣列
- [hyperf]分享記錄一下常用http狀態碼的列舉類HTTP
- JAVA壓縮和解壓縮Java
- zip壓縮和解壓縮
- JAVA動態增加列舉項Java
- [快速搞定]android 狀態列一體化 沉浸式狀態列Android
- 【轉】7Z命令列解壓縮命令列