小P的單調區間 解題報告

2021-08-29 07:23:03 字數 1155 閱讀 3226

題目鏈結

題目大意:給定乙個序列,選出若干個數,將其分成若干單調的子串行(可不連續),相鄰序列單調性不同,第乙個序列一定為單調遞增。求出所有方案中序列和的平均值的最大值。如3,7,9,2,4,5,把它劃分為[3,7,9],[2,4],[5],答案為:(3+7+9+2+4+5)/3=10。把它劃分為[3,9],[5],答案為:(3+9+5)/2=8.5。

題目分析

1.我們很明顯可以通過列舉選取第i個點時,共分成了j個序列來進行轉移,那麼我們可以在列舉上乙個選擇的數來進行轉移。我們就可以愉快的暴力dp了。如下:

//dp[i][j]表示選擇第i個數後,分為j個單調序列時,數的總和的最大值

for(ll i=1;i<=n;i++)//列舉當前選擇的數

else//當前序列要求單調遞增

ll mid=(l+r)>>1;

if(pla<=mid)

change(pos<<1,l,mid,pla,val);

else

change(pos<<1|1,mid+1,r,pla,val);

tree[pos]=max(tree[pos<<1],tree[pos<<1|1]);

}ll getans(ll pos,ll l,ll r,ll s,ll e)

int main()

temp[0]=0;

sort(temp,temp+1+n);

ll cnt=unique(temp,temp+1+n)-temp-1;

for(ll i=0;i<=cnt;i++)

mp[temp[i]]=i+1;

dp[0][1]=0;

f[0][1]=0;

double ans=-inf;

cnt++;

for(ll j=1;j<=2;j++)

else

change(1,1,cnt,mp[a[i]],dp[i][j]);

f[i][j]=max(f[i][j],dp[i][j]);

ans=max(ans,dp[i][j]/(double)j);

} }printf("%.3lf",ans);

return 0;

}

小奇挖礦 解題報告

小奇挖礦 題目背景 小奇要開採一些礦物,它駕駛著一台帶有鑽頭 初始能力值w 的飛船,按既定路線依次飛過喵星系的n個星球。問題描述 星球分為2類 資源型和維修型。1.資源型 含礦物質量a i 若選擇開採,則得到a i p的金錢,之後鑽頭損耗k 即p p 1 0.01k 2.維修型 維護費用b i 若選...

洛谷P1993 小K的農場 解題報告

小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 農場a比農場b至少多種植了c個單位的作物,農場a比農場b至多多種植了c個單位的作物,農場a與農場b種植的作物數一樣多。但是,由於小k的記憶有些偏差,所以...

POJ 3250 解題報告 (單調棧)

看題傳送門 這題單調棧裸題,模擬棧就行。有個little trick就是可以在輸入末尾多加乙個inf,這樣可以保證棧中所有的有效元素全部被彈出。poj不支援萬能頭好煩 include include using namespace std const int maxn 80010 const int...