BJTU1935 鐵憨憨騎士團的購買裝備

2021-10-18 13:30:30 字數 1375 閱讀 8086

在遙遠的憨憨王國,有乙個鐵憨憨騎士團。

這天,憨帕斯正在參加騎士團第一屆全團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.這道題的思路確實是很巧妙,一開始我還是在想如何表示從某一點...