wikioi p1163 訪問藝術館

2021-06-18 04:16:03 字數 1099 閱讀 2611

記得wikioi開站不久的時候,我做這題被嚇住了。後來發現沒什麼難度。

首先dfs序記錄結點資訊。

left為左孩子 right為右孩子

time表示走廊的時間 cost表示價值(如果為0 表示為分岔口)

int dfs()

這題要詳細說一下。

如果記錄到leaf結點

那麼記錄下編號old_leaf

leaf++

表示讀入就要讀入下乙個節點

那麼左孩子=dfs()

右孩子=dfs()

(dfs是有返回值的,表示節點的編號,在遞迴當中就可以記錄孩子節點。這是一種處理技巧,知道就好。)

如果f[r][s]表示r節點在剩餘s秒時的最大價值。

那麼通過這個通道需要tree[r][s].time的時間

因為不僅要進去,還有出來。那麼就剩餘s-tree[r].time*2

列舉i表示左子樹遍歷i秒,則右子樹剩餘s-tree[r].time*2-i

那麼f[r][s]=max;

如果r為葉子節點

那麼如果剩下的畫在有限的時間內拿完,就會剛剛好拿到tree[r].cost個

如果偷不完,說明剩下s-tree[r].time2的時間,那麼就可以拿int(s-tree[r].time*2)5個int()表示下取整

因為如果進去可能被警察抓到,所以有可能不進入這個分叉點。

所以可以簡寫為

max(0,min((s-tree[r].time*2)/5,tree[r].cost))

#include#include#includeusing namespace std;

const int max_n = 601;

const int root = 1;

struct node

tree[max_n];

int f[max_n][max_n];

int s;

int leaf = 0;

int input()

int init()

int work(int r,int s)

int put()

int main()

Wikioi P1135 選擇客棧

noip2011 day1 第二題 題目描述 description 輸入描述 input description 共n 1 行。第一行三個整數 n,k,p,每兩個整數之間用乙個空格隔開,分別表示客棧的個數,色調的數目和能接受的最低消費的最高值 接下來的 n 行,第i 1 行兩個整數,之間用乙個空格...

Wikioi P1137 計算係數

題目描述 description 給定乙個多項式 ax by k,請求出多項式展開後x n y m項的係數。輸入描述 input description 共一行,包含 5 個整數,分別為a,b,k,n,m,每兩個整數之間用乙個空格隔開。輸出描述 output description 輸出共 1 行,...

題目1163 素數

題目描述 輸入乙個整數n 2 n 10000 要求輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數,如果沒有則輸出 1。輸入 輸入有多組資料。每組一行,輸入n。輸出 輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數 素數之間用空格隔開,最後乙個素數後面沒有空格 如果沒有則...