日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2016 TCO Algorithm 1B SettingShield

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2016 TCO Algorithm 1B SettingShield 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意

有h個普通柵欄,一個特殊柵欄和n棵植物
第i棵植物位于第i個單位
對于第i個普通柵欄有其保護的區間l[i]到r[i],特殊柵欄的保護區間是1到n
每個柵欄有一個非負整數s[i],表示它的強度
對于代價,普通柵欄需花費s[i],特殊柵欄需花費t*s[i]
對于第i棵植物有protection[i],需滿足:對于所有保護了植物i的柵欄的強度總和大于等于pretection[i]
求最小的代價
1<=n<=10^5
1<=s[i],t<=10^7

解法

首先考慮去掉普通柵欄中對答案沒有貢獻的柵欄,如果柵欄[a,b]被柵欄[c,d]包含,那么前者是沒有貢獻的
那么簡化后得到的柵欄是這樣的:

首先假定特殊柵欄的強度為0
那么如何構造最優的方案?
先給出構造方法:
從左到右處理柵欄[a,b],設c表示一個最大的區間[a,c]使得[a,c]不與后面的柵欄相交(即不會被后面的影響到),然后這個柵欄的強度就設為[a,c]之間的最大的protection,然后[a,b]之間的植物的protection減去這個強度
為什么是對的呢?
設p[]是最優方案,p[i]表示從左到右第i個柵欄選定的強度
由于p[1]不可能變小(因為最前面那一段不會被后面的影響)(其他位置的變動是類似的,所以只討論第一位就開始變動)
那么設p1[1]=p[1]+d(d>0),如果p[2]被影響到了,那么p1[2]=p[2]-d,如果p[3]被影響到了,那么p1[3]=p[3]+d…
就是說,這樣的影響是連續的且正負交替
由于開頭是正數,所以最后的代價不可能由于最開始p[]的代價
加入特殊柵欄的影響,顯然,特殊柵欄的強度越大,普通柵欄的代價就越小:

設f(x)表示特殊柵欄強度為x時普通柵欄的最小代價
我們要求的是tx+f(x)最小
設f(x)表示特殊柵欄強度為x時普通柵欄的最小代價
我們要求的是tx+f(x)最小
這個東西是可以三分的?!
證明
證明COST[x]=tx+f(x)滿足三分性
設p[x][]表示特殊柵欄強度為x時普通柵欄的最優方案
假設最優點為OPT,那么就是對于a

總結

以上是生活随笔為你收集整理的2016 TCO Algorithm 1B SettingShield的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。