比賽 NOIP2018 鋪設道路

2022-05-25 10:42:14 字數 977 閱讀 8010

原題,而且還是ccf自己的

考慮對於一段最長不上公升序列,無論如何都至少有序列第乙個數的貢獻,可以知道,這個貢獻是可以做到且最少的

然後對於序列最後一位,也就是最小的那乙個數,可以和後面序列拼起來的就拼起來,所以後面的序列需要補償的貢獻就是差分

簡化一下, \(ans=\sum_^n\max\)\}\)

#include#define ui unsigned int

#define ll long long

#define db double

#define ld long double

#define ull unsigned long long

#define ft first

#define sd second

#define pb(a) push_back(a)

#define mp(a,b) std::make_pair(a,b)

#define rep(a,b,c) for(register int a=(b),a##end=(c);a<=a##end;++a)

#define dep(a,b,c) for(register int a=(b),a##end=(c);a>=a##end;--a)

const int maxn=100000+10;

int h[maxn],n;

ll ans;

templateinline void read(t &x)

templateinline void write(t x,char ch='\0')

templateinline bool chkmin(t &x,t y)

templateinline t min(t x,t y)

int main()

noip2018 鋪設道路

退役oier day1t1見ancestor 一道odt板子題都沒人寫?主要 考場 思路 從小到大解決深度 每次解決乙個深度,貢獻就是與上乙個深度之差乘上區間個數 之後就統統split 暴力列舉深度那裡珂以用hash優化暴列舉的常數,懶得搞 複雜度因為每次split會刪掉乙個點,所以是嚴格nlogn...

道路鋪設 NOIP2018

春春是一名道路工程師,負責鋪設一條長度為 n 的道路。鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區 域,一開始,第 i 塊區域下陷的深度為 di 春春每天可以選擇一段連續區間 l,r 填充這段區間中的每塊區域,讓其下陷深 度減少 1。在選擇區間時,需要保證,區間內的每塊...

貪心 NOIP2018 鋪設道路

春春是一名道路工程師,負責鋪設一條長度為 n 的道路。鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區域,一開始,第 i 塊區域下陷的深度為 d i 春春每天可以選擇一段連續區間 l,r 填充這段區間中的每塊區域,讓其下陷深度減少 i 在選擇區間時,需要保證,區間內的每塊區...