背景【backboard】:
memphis等一群蒟蒻出題中,花神湊過來秒題……
描述【discribe】:
花花山峰巒起伏,峰頂常年被雪,memphis打算幫花花山風景區的人員開發乙個滑雪專案。
我們可以把風景區看作乙個nn的地圖,每個點有它的初始高度,滑雪只能從高處往低處滑【嚴格大於】。但是由於地勢經常變動【比如雪崩、滑坡】,高度經常變化;同時,**政策規定對於每個區域都要間歇地進行保護,防止環境破壞。現在,滑雪專案的要求是給出每個nn個點的初始高度,並給出m個命令,c a b c表示座標為a,b的點的高度改為c;s a b c d表示左上角為a,b右下角為c,d的矩形地區開始進行保護,即不能繼續滑雪;b a b c d表示左上角為a b,右下角為c d的矩形地區取消保護,即可以開始滑雪;q表示詢問現在該風景區可以滑雪的最長路徑為多少。對於每個q要作一次回答。
花神一看,這不是超簡單!立刻秒出了標算~
input
第一行n,第二行開始n*n的地圖,意義如上;接下來乙個m,然後是m個命令,如上
output
對於每乙個q輸出單獨一行的回答
sample input 1
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
c 1 1 3
qs 1 3 5 5
s 3 1 5 5
qsample output 1
樣例解釋:
第乙個q路線為:25->24->23->22….->3->2
第二個q的路線為:10->9->2
記憶化搜尋
ac**
#includeusing namespace std;
/*std::ios_base::sync_with_stdio;也超時
*/const int inf = 0x3f3f3f3f;
const int maxn = 1010;
int n;
int f[maxn][maxn];
int g[maxn][maxn];
int vis[maxn][maxn];
int dr[4][2] = ,,,};
bool in(int x,int y)
//f[x][y]含義:從這個點出發 所能走的最大長度
int dfs(int x,int y)
} return f[x][y] = res; //存
}int main()
} int m;
cin>>m;
while(m--)
}}else if(ch=='b')
} }else if(ch=='c')else
} cout<} }
return 0;
}
BZOJ 3208 花神的秒題計畫
time limit 16 sec memory limit 128 mb submit 704 solved 483 submit status discuss 背景 backboard memphis等一群蒟蒻出題中,花神湊過來秒題 描述 discribe 花花山峰巒起伏,峰頂常年被雪,memp...
BZOj 3208 食物 生成函式 廣義二項式定理
曾經搞過幾天的生成函式,也沒做幾道題,後來放棄了,今天講了生成函式和揹包問題的結合,趁著腦子清醒整理一下 題目描述 明明這次又要出去旅遊了,和上次不同的是,他這次要去宇宙探險!我們暫且不討論他有多麼nc,他又幻想了他應該帶一些什麼東西。理所當然的,你當然要幫他計算攜帶n件物品的方案數。當然,他又有一...
記憶化搜尋
演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...