題意:
思路:
先搞乙個vector 存以t2結尾的結構體 (結構體裡面有開始工作的時間和花費)
f[i]表示取區間[m,i)的代價
易得f[i]=min(f[k]+w,f[i]);t1<=k
//by siriusren
#include
#include
#include
#include
using
namespace
std;
#define int long long
int n,s,e,f[88888],tree[666666];
struct nodejy;
vector
v[88888];
void insert(int l,int r,int pos,int xx)
int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
if(xx<=mid)insert(l,mid,lson,xx);
else insert(mid+1,r,rson,xx);
tree[pos]=min(tree[lson],tree[rson]);
}int query(int l,int r,int pos,int l,int r)
signed main()
memset(tree,0x3f,sizeof(tree)),memset(f,0x3f,sizeof(f));
f[s]=0,insert(0,e,1,s);
for(int i=1;i<=e;i++)
if(f[e]1])printf("%lld\n",f[e]);
else
puts("-1");
}
線段樹優化dp
等離子炮有n個操作訊號,第i個操作訊號的強度為b i 總體強度為各操作訊號的強度之和。由於有些訊號太弱了了 強度 0 水寶寶想把它們刪除。但是水寶寶自己不會刪除訊號,所以他找來了同船的隊友幫忙。有 m位隊友,第ii 位隊友只會刪除編號在 l i 和 r i 之間的訊號,且每刪除乙個訊號,花費 c i...
降臨(線段樹優化dp)
選定點i會有代價 c i 如果乙個區間j內的點全被選擇,就可以獲得回報 p j 點數和區間個數 1e5 還以為是線段樹優化網路流 50萬個點200萬條邊看上去很可做的樣子畢竟lbn說過網路流20萬萬條邊完全沒問題 沒想到是個線段樹dp。雖然這兩個線段樹完全扯不上關係 用 f i j 表示考慮到第i個...
線段樹優化DP之Monotonicity
定義f i 為處理到第i位,所得匹配的最長長度,根據f i 我們可以求出它後面要跟的符號 可以用符號填滿,避免一些取模運算 對於i,我們列舉每乙個i前面的j,判斷是否合法,那麼 n 2 的做法就可以寫出來了 includeusing namespace std const int maxn 2000...