題目
t組資料,n個數,m為目標數,判斷這n個數中任意幾個數之和能否等於m
看到資料規模(231)沒法用揹包
我們考慮所有的狀態,一共240種,也會超時
所以只需要暴力列舉前一半數存到雜湊表中,上限220;再列舉後一半數,查詢滿足目標數的另一半,上限也是220
用dfs列舉所有數,到達上限時插入或查詢
#include#define p 4000043//質數
#define h(x) x%p
using namespace std;
int n,m,mid;
int a[p],x[50];
bool flag;
int read()
//快讀
int loc(int x)
//查詢關鍵字在雜湊表的位置
void dfs1(int lev,int sum)
if(lev>mid)
if(sum+x[lev]<=m) dfs1(lev+1,sum+x[lev]);//不超過上限就加
dfs1(lev+1,sum);
}//列舉前一半數的狀態
void dfs2(int lev,int sum)
if(lev>n)
if(sum+x[lev]<=m) dfs2(lev+1,sum+x[lev]);//不超過上限就加
dfs2(lev+1,sum);
}//列舉後一半數的狀態
int main()
}
洛谷 T156530 儒略曆
在 1582 年之前,以 4 為倍數的年份為閏年。正常情況下,一年中一月到十二月的天數分別是 31,28,31,30,31,30,31,31,30,31,30,31 天。如果這年是閏年,那麼二月則有 29 天。但某位皇帝發現這麼做其實不夠準確,會造成誤差,因此規定從 1582 年開始,以 4 為倍數...
洛谷T51924 忘情
二分上界有多大開多大 二分上界有多大開多大 二分上界有多大開多大 重要的事情說三遍 又被bright神仙帶著做題了 先無腦上wqs二分 我們可以把這個柿子畫一下,區間的花費就變成 sigema l r i s i 1 2了 那麼這個東西經過我艱苦的畫柿子證明是滿足四邊形不等式的 然後就和貞魚那題一樣...
洛谷T96628 統計
給定 n m 求十進位制 n 位數每個位數之積等於k的方案數 dp 高精 數學 考慮 k 0 的情況,由於可以有若干個 0 所以方案數為 sum limits times 9 考慮另外的情況,我們將 k 分解質因數,如果 k 還有除了 2 3 5 7 之外的質因數那麼方案數為 0 其餘的情況我們考慮...