小C飲水記

2021-08-16 03:52:12 字數 1050 閱讀 4530

小c雖然沒有參加noi2016, 但當他看到"國王飲水記"這題時還是迅速秒掉了.

小c認為這題太水了,於是他決定對這題進行加強.

現在小c桌上有n杯水排成一行,第i杯水中有wi 單位體積的水. 他會選擇乙個區間[l, r],

並拿乙個初始為空的杯子(杯子的容積無限大),他可以重複無限次以下操作:

• 選定任意一杯水i,i ∈ [l, r].

• 使i和它拿著的杯子裡的水的體積變為它們的平均值.

小c希望進行若干操作後最大化杯子裡的水的體積,設g(l, r)為這個最大值.你需要求:

從檔案drink.in中讀入資料.

第一行乙個整數n.

第二行n個整數,第i個為wi.

輸出到檔案drink.out中.

輸出乙個實數表示答案.

你的答案被認為是正確的,當且僅當其與標準答案的絕對誤差不超過10^−2 .

這題告訴我們,答案為小數的題目,如果不mod,就要把卡精度視為一種ac策略

貪貪心就好了,卡卡精度就a了,好像國王飲水記是發了乙個高精度小數模板吧?

還有用陣列維護鍊錶,雖然只能刪但功能強大,模擬於只能加的並查集

accode:

#include#include#include#include#define maxn 1000005

#define s 23

using namespace std;

int n;

double wt[maxn],pow2[s+1];

int pre[maxn],suc[maxn],c[maxn];//用陣列維護的鍊錶雖然只支援刪除,但也支援o(1)下標查詢

inline bool cmp(const int &a,const int &b)

int main()

ans+=2*wt[c[i]]*sum1*sum2;

pre[suc[c[i]]]=pre[c[i]];

suc[pre[c[i]]]=suc[c[i]]; }

printf("%.12lf",ans/n/n);

}

雅禮集訓 小C飲水記

標籤 鍊錶,貪心 暴力做法 貪心,對於每個區間,從大到小排序,顯然,wi大的對答案貢獻越大 時間複雜度o n 3 log n 正解 因為題目輸出實數,所以當交換次數到一定時候,對答案的影響可以忽略不計 這個t大約是30次 對每個wi的貢獻單獨計算 每個wi只對相鄰的t個產生貢獻,所以取前後各t個 計...

2018雅禮集訓1 12 小C飲水記

題面 考場上sb用set,式子還沒化成o t 的,總複雜度o ntlogn n t2 70分滾粗。首先對於一段長度為 k 區間,假設按w1 wk的順序來選,貢獻為 i 1kw i2i 所以顯然要按從大到小的順序來選,然後發現本題不要求取模,所以當 i 很大時,wi 的貢獻就可以忽略不計了。所以我們只...

國王飲水記 題解

題目傳送門 step1 暴力 對於每次詢問,都進行一次krusal計算。include include define maxn 5039 using namespace std inline intread if flag return sum return sum struct jtz e max...