真是非常可惜……一是閾值不會用;二是期望不熟悉。考場的idea已經直逼標算了。樂滋滋經常參加各種拍賣會,前不久,他收到了來自滋滋國最大的商店——奧義商店的拍賣會邀請函。
為了讓拍賣會看起來更加奧妙重重,奧義商店設定了乙個極為複雜的拍賣規則:一共 $n$ 個物品排成一排,第 $i$ 個物品**是 $v_i$ 。對於一次拍賣,商店會指定 $t$ 種顏色,並對每種顏色指定乙個數目 $c_j$ 滿足 $\sum_^c_j=n-1$ ,另外還會指定乙個下標 $k$ 和乙個公差 $d$ 。
買家需要給第 $k$ 個物品染上一種顏色(在 $t$ 種顏色中選擇一種)
。接著,把剩下的 $n-1$ 個物品隨機染成 $t$ 種顏色之一,並保證這 $n-1$ 個物品中第 $j$ 種顏色的恰好有 $c_j$個。
買家需要購買的物品按這樣的方式計算:找到 $k$ 所在的最長的以 $d$ 為公差的等差數列 $a_x=kx+d(x\in [l,r],l\le 0 \le r)$ 滿足其中所有物品都與第 $k$ 個物品同色。買家需要買下這個等差數列中的所有物品,顯然花費就是 $\sum_^v_$ 。
樂滋滋最近出現了點「經濟危機」,希望你能幫他給第 $k$ 個物品選擇合適的顏色,以此來最小化他花費的期望,你只需要輸出這個期望即可。
當然商品的**是可能出現變動的,你需要維護這些變化。
$1 \leq n,m \leq 10^5$
我考試時候在想什麼,為什麼現在看這題覺得好簡單啊……
不知道過幾天還會不會做
這裡是一些零碎的做完題的想法:
既然要求期望代價最小,那麼每一次第$k$個物品應該染成$min$ $c_j$。然後把期望拆開,就是每乙個位置被統計到的概率乘以它的權值。這個概率不是很難算,就是從前乙個位置轉移過來的概率。
以上就是乙個正確但是非常慢的想法。
演算法的複雜度是$o(mn/d)$的,當$d$比較小時,複雜度就接近$o(nm)$。
可能會說:那麼把d閾值一下就好了嘛,d小的時候用$s[d][j]$表示模$d$為j的vi總和。然而只閾值d只能在$t=1$時有效。若$t!=1$還是需要列舉計算期望。然後非常玄學的精度閾值就來了:
但是要注意!最好不要形如 if (sta*v[k-i*d] < 1e-13) break; 的精度閾值。因為儘管看上去增量已經很小了,但實際上是不能這樣「意會」的。
所以以上就是這題的兩個玄學閾值。
1 #include2 #include3鬼知道我考試時候在寫什麼……const
int maxn = 100035;4
5double ans,sta,s[103][103];6
intn,m,t,k,d,mn;
7int
v[maxn],c[maxn];89
intread()
1021
int min(int a, int b)
22int
main()
2333
while (m--)
34else
50 }else
56 sta = 1.0;57
for (int i=1; i<=100&&k-i*d>=1; i++)
5862
}63 printf("
%.6lf\n
",ans);64}
65}66return0;
67 }
#includeconst鬼畜**int maxn = 100035
;double
ans,sta;
intn,m,t,k,d,mn;
intv[maxn],c[maxn];
intread()
intmain()
else
printf(
"%.6lf\n
",ans);}}
return0;
}
end
小學奧數思維訓練題(二)
同學和老師共16人去郊遊,有男同學 女同學 男老師 女老師。出發前,清點了一下人數,發現 學生比老師人數多 男老師比男同學人數多 男同學比女同學多 女同學比女老師多 問 女同學有多少人?分析 從題中可以得到以下資訊 男同學 女同學 男老師 女老師 老師人數 16 2 8 男老師 男同學 女同學 女老...
小學奧數思維訓練題(三)
甲 乙兩人分別從相距 300 公尺的 a b 兩地同時出發,相向而行,已知甲的速度為乙的 2 倍。那麼,甲 乙第一次相遇的地點距離 ab 中點 公尺。分析 相遇問題中比較基礎的典型問題。兩人同時出發,意味著 到相遇的時候,兩人行進的時間是相同的 而甲的速度是乙的 2 倍,意味著 甲行進的距離是乙的 ...
小學奧數思維訓練題(四)
有乙個雇主約定每年給工人 60 元錢和一件衣服,工人做到 7 個月的時候想要離開,雇主給了他 25 元錢和一件衣服。這件衣服值多少錢?分析 方法一 分數思路 一年 12 個月,要給 60 元錢和 一件衣服,就是說 每個月要給 錢 60 12 5 元 衣服 1 12 1 12 件 就是把衣服裁成 12...