題解:
一道dp題,恩,沒錯,非常好,時間複雜度o(n*m*m),爆了,恩,沒錯,非常好,看了是要優化了
讓我看看,恩,不是線段樹優化,不是斜率優化,不是四邊形不等式優化,what? 那是什麼?
。。。。。。。。。。。。。行,我寫暴力(t2打成t1,原本70分**成功爆0)
所以說,我,這個,**i,應該忘記了,除了這些高大上的優化以外,還有乙個優化,叫單調佇列。。。。。。。。。。。。。。。。。。。。。。。。。
令dp[i][j]表示前i種龍珠,此時是第j個龍珠的最小體力耗費
dp[i][j]=min(dp[i-1][k]+abs(pos[i][j]-pos[i-1][k]))+cost[i][j]
我們假設狀態是由pos[i][j]的左邊轉移而來
有:dp[i][j]=min(dp[i-1][k]-pos[i-1][k])+cost[i][j]+pos[i][j]
右邊可以以此類推,就可以用單調佇列來優化了
code:
#include#include#include#include#include#include#includeconst int maxn=55;
const int maxm=5005;
using namespace std;
struct node
k=m; minv=0x3f3f3f3;
for(int j=m;j>=1;j--)
}int ans=0x3f3f3f3f;
for(int i=1;i<=m;i++)
ans=min(ans,dp[n][i]);
printf("%d",ans);
}
noip模擬賽 bzoj2932旅行
題解 話說這道題啊,是真的坑,正解不難,但是想歪是很簡單的,在常規的貪心不行的時候,本人就想到了dp,自我感覺 非常有道理,方程式也寫了出來,結果莫名wa了50 的資料,不懂,聽大牛說是因為不滿足最優子結構。表示 寫dp的時候從來沒有關注過這個東西 先說dp吧,dp i j 表示前i個人,有j個人在...
noip模擬賽 密碼
表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...
NOIP模擬賽 老師
題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...