題目鏈結:
題目大意:給定乙個序列,選出若干個數,將其分成若干單調的子串行(可不連續),相鄰序列單調性不同,第乙個序列一定為單調遞增。求出所有方案中序列和的平均值的最大值。如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...