51nod 1611 金牌賽事

2022-04-29 22:12:13 字數 1466 閱讀 1147

被亮亮d飛啦!!qwq

這題明明是最大權閉合子圖+線段樹優化構圖好不好

被迫考慮dp,並且考慮f[i]表示到第i個位置的最大值(第i個位置可選可不選)

對於最終的答案,我們可以分割成一段一段的,也就是多段區間

列舉這個斷點,斷點以後的全選,前面的就通過繼承得到,f[i]=f[j]-(sc[i]-sc[j])+(j+1到i這個區間中可以承辦的比賽的價值和)

用資料結構優化的話,前面就可以nlogn了

而後面這乙個,我們可以弄乙個指標掃區間,看看當前是不是已經完全覆蓋了,然後選取區間起始到這個區間的左界-1作為決策,後面的價值和就會加上這個區間的價值

區間修改也是線段樹搞

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;struct

node

tr[410000];int

trlen;

void bt(int l,intr)}

void change(int now,int l,int

r,ll k)

int mid=(tr[now].l+tr[now].r)/2

;

int lc=tr[now].lc,rc=tr[now].rc;

if(tr[now].lazy!=0

)

if(r<=mid) change(lc,l,r,k);

else

if(mid+1

<=l)change(rc,l,r,k);

else change(lc,l,mid,k),change(rc,mid+1

,r,k);

tr[now].c=max(tr[lc].c,tr[rc].c);

}ll getmax(

int now,int l,int

r)

if(r<=mid) return

getmax(lc,l,r);

else

if(mid+1

<=l)return

getmax(rc,l,r);

else

return max(getmax(lc,l,mid),getmax(rc,mid+1

,r));

}ll sc[

210000

];struct gameg[210000

];bool cmp(game g1,game g2)

ll f[

210000

];int

main()

printf(

"%lld\n

",f[n]);

return0;

}

51nod 貪心入門

有若干個活動,第i個開始時間和結束時間是 si,fi 活動之間不能交疊,要把活動都安排完,至少需要幾個教室?分析 能否按照之一問題的解法,每個教室安排盡可能多的活動,即按結束時間排序,再貪心選擇不衝突的活動,安排乙個教室之後,剩餘的活動再分配乙個教室,繼續貪心選擇 反例 a 1,2 b 1,4 c ...

51nod 迷宮問題

1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...

51nod 硬幣遊戲

有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些直線相交 相切的情況也算是相交 有時候不會。請你來計算一下拋一次硬幣之後,該硬幣和直線相交數目的期望。...