FZU 2079 最大獲利(線段樹 DP)

2022-03-14 12:18:03 字數 2548 閱讀 7368

description

sean準備投資一些專案。有n個投資專案,投資第i個專案需要花費ci元。sean發現如果投資了某些編號連續的專案就能賺得一定的錢。現在給出m組連續的專案和每組能賺得的錢,請問採取最優的投資策略的最大獲利是多少?

樣例最佳策略是全部專案都投資,然後第1,2組都滿足了,獲利為2+2-3=1。最佳策略可能是不投資,即最大獲利為0。

input

每組資料第一行輸入兩個整數n和m , n表示專案數,m表示能獲利的連續的專案組數,1 <= n <= 20000,1 <= m <= 20000 , 接下來一行輸入n個數,表示每個專案投資需要的花費ci,1<=ci<=10^9。

接下來m行,每行3個數li,ri,pi,1<=li<=ri<=n,1<=pi<=10^9,表示投資從第li到第ri這些連續的專案的獲利。每組連續投資的獲利互不影響,如果投資的多組連續投資都包含專案i,專案i只需要投資一次。

output

對於每組資料輸出一行,即最大獲利。

sample input

3 21 1 1

1 2 2

2 3 2

sample output

1設dp[i]表示,前i個專案的最大獲利。

轉移方程 : dp[i] = max( dp[i-1] , dp[j-1] + w[j][i] ) , ( 1<=j <=n ).

列舉狀態費用o(n) , 用線段樹優化取最值,更新費用為o(log n ) , 總複雜度為o(n log n )。

線段樹的每個節點i表示 ,  從i連續投資到當前節點的最大利潤

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int n = 200010

;const

int inf = 1e9+7

;const

double pi = acos(-1.0

);const

double eps = 1e-6

;#define root 1,n,1

#define lson l,mid,rt<<1

#define rson mid+1,r,rt<<1|1

#define lr rt<<1

#define rr rt<<1|1

intn , m ;

struct

node

}e[n];

ll dp[n] , cost[n] ;

void

init()

ll date[n

<<2] ,lazy[n<<2

];void build( int l , int r , int

rt )

void down( int l , int r , int

rt )

}void up( int rt )

void update( int l , int r , int rt , int l , int

r , ll val)

down(l,r,rt);

int mid = (l+r) >> 1

;

if( r <=mid ) update(lson,l,r,val);

else

if( l >mid ) update(rson,l,r,val);

else update(lson,l,mid,val) , update(rson,mid+1

,r,val);

up(rt);

}ll query(

int l , int r , int rt , int l , int

r )

down(l,r,rt);

int mid = (l+r)>>1

;

if( r <= mid ) return

query(lson,l,r);

else

if( l > mid ) return

query(rson,l,r);

else

return max( query(lson,l,mid),query(rson,mid+1

,r) );

}void

run ()

for( int i = 0 ; i < m ; ++i )

sort( e , e +m );

int head = 0

;

for( int i = 1 ; i <= n ; ++i )

printf(

"%i64d\n

",dp[n]);

}int

main()

view code

題解 最大獲利

題目傳送門 給出 n 個使用者,m 個基站,每個使用者的需求為用 a,b 兩個基站,會產生 c 的收益。修基站也需要花費。問最大收益。n le 5000,m le 50000 這個東西要用乙個叫做最大權閉合子圖的東西。大概意思就是求解,對於乙個圖,每個點有點權,你選了乙個點則它的後繼都必須選,問選出...

網路流 最大獲利

time limit 5 sec memory limit 64 mb submit 760 solved 377 submit status discuss 新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu集團旗下的cs t通訊公司在新一代通訊技術血戰的前夜,需要做太...

NOI 06 最大獲利

新的技術正衝擊著手機通訊市場,對於各大運營商來說,這既是機遇,更是挑戰。thu 集團旗下的cs t 通訊公司在新一代通訊技術血戰的前夜,需要做太多的準備工作,僅就站址選擇一項,就需要完成前期市場研究 站址勘測 最優化等專案。在前期市場調查和站址勘測之後,公司得到了一共n 個可以作為通訊訊號中轉站的位...