在遙遠的憨憨王國,有乙個鐵憨憨騎士團。
這天,憨帕斯正在參加騎士團第一屆全團ogsc大賽。在當前的版本,ogsc一共有 ?
種裝備可供購買,其中第 ? 種裝備的**是 ??
元。在一局遊戲中 ,每一種裝備最多只能被購買一次。注意,裝備的**有可能相同,但仍然視作不同的裝備,可以被同時購買。
憨帕斯現在手中有 ?
塊錢。現在,他想要知道,自己有多少種購買裝備的方案,能夠正好花光手裡的 ? 塊錢?
第一行兩個整數 ?,? (1≤?≤20,1≤?≤1018) ,分別表示裝備的種類數和憨帕斯手裡的錢。
第二行一共 ? 個整數,其中第 ? 個整數 ?? (1≤??≤1016) 表示第 ? 種裝備的**。
乙個整數,表示正好花光 ? 塊錢的方案數。
輸入:
7 4750
4750 2700 1000 400 300 200 150
輸出:
2
資料量不大20,並且要進行決策並判斷,顯然是深搜遞迴的思路,20個迴圈,所以一開始我就每乙個迴圈寫的從a[1]
到a[20]
的遍歷,使用過的就vis[i] = true
。tle…想想也是,20組資料的話,每乙個迴圈20次運算,20個迴圈…
所以思考一下怎麼優化,20個迴圈,我們把每次的迴圈修改為對於第i
個裝備是否購買的決策,這樣基數就是2了,最大o(2^20)。
**:
#include
#include
#include
#include
#include
#include
using
namespace std;
bool vis[21]
;int n;
long
long m;
long
long ans =0;
long
long a[21]
=;long
long temp =0;
void
dfs(
int now)
return;}
if(temp ==0)
if(temp <0)
}for
(int i =
1;i >=
0;i--
)else}}
intmain()
temp = m;
memset
(vis,
false
,sizeof
(vis));
dfs(1)
; cout
}
1935 查詢學生資訊
時間限制 1 sec 記憶體限制 32 mb 提交 1546 解決 347 提交 狀態 討論版 命題人 外部匯入 輸入n個學生的資訊,然後進行查詢。輸入的第一行為n,即學生的個數 n 1000 接下來的n行包括n個學生的資訊,資訊格式如下 01 李江 男 21 02 劉唐 男 23 03 張軍 男 ...
bzoj 1935(樹狀陣列)
傳送門 題解 由於是靜態問題所以可以離線處理,所有點 詢問拆成4個 按x排序,二維可以轉成一維,相當於每次query到的就是當前已插入的點,而只有這些點能對query的返回值造成貢獻。p.s.對於x座標相同的插入 詢問,要考慮這幾個操作的先後順序 include using namespace st...
poj 1935 搜尋 回溯
解題思路 先我們考慮從源點出發到所有自己想要經過的點然後在回到源點sum,顯然每條邊都必須經過源點 這個我們可以一次dfs求出 但題目的意思是可以不用回到源點,那麼我們可以再求源點到所有要經過的點的最遠距離ans,於是答案便是sum ans.這道題的思路確實是很巧妙,一開始我還是在想如何表示從某一點...