期末考試 單峰函式三分

2022-02-18 15:50:50 字數 2705 閱讀 2325

description

有n位同學,每位同學都參加了全部的m

門課程的期末考試,都在焦急的等待成績的公布。

第i位同學希望在第ti

天或之前得知所有課程的成績。如果在第ti

天,有至少一門課程的成績沒有公布,他就會等待最後公布成績的課程公布成績,每等待一天就會產生c

不愉快度。

對於第i門課程,按照原本的計畫,會在第bi

天公布成績。

將負責課程i的部分老師調整到課程 j,調整之後公布課程i成績的時間推遲一天,公布課程j成績的時間提前一天;每次操作產生a

不愉快度。

增加一部分老師負責學科i,這將導致學科i的出成績時間提前一天;每次操作產生b

不愉快度。

上面兩種操作中的引數i,j均可任意指定,每種操作均可以執行多次,每次執行時都可以重新指定引數。

現在希望你通過合理的操作,使得最後總的不愉快度之和最小,輸出最小的不愉快度之和即可。

input

第一行三個非負整數xyz,描述三種不愉快度,詳見【題目描述】;

第二行兩個正整數n,m,分別表示學生的數量和課程的數量;

第三行 個正整數ti

,表示每個學生希望的公布成績的時間;

第四行 個正整數bi,表示按照原本的計畫,每門課程公布成績的時間。

output

輸出一行乙個整數,表示最小的不愉快度之和。

sample input 1

100 100 2

4 55 1 2 3

1 1 2 3 3

sample output 1

6
sample input 2

3 5 4

5 6

1 1 4 7 8

2 3 3 1 8 2

sample output 2

33
hint

a,b<=1e9,c<=1e16,n,m,bi,ti

<=1e5

剛向cbx頹標籤做完宅男計畫完之後做的這道題,所以做得比較水。

但是這類三分的題還是需要寫乙個題解來記錄一下的。

這題其實看了標籤之後就沒什麼意思了?

首先,最終對答案產生影響的就是出分最晚的那一科的時間,我們把這個作為費用函式的引數。

呃,比較顯然,如果你把出成績的天數推遲地太晚,那麼學生受不了不滿意度會很高。

但是如果你讓老師加班出分太早,那麼老師受不了不滿意度也會很高。

所以可以嗅到單峰函式的味道了嗎?

暫時不會證明它的確是乙個嚴格的單峰函式。網上也沒有。。。

暫且這麼理解。反正也沒有反例。實在不行你打乙個模擬退火。先繼續讓我講下去。。。

那麼現在我們就可以三分答案了,每次用o(n+m)的複雜度統計總的不滿意度,三分即可。

至於怎麼統計,還好吧?統計那些出分早的學科一共能派出多少老師支援其它學科設為a,再統計出分晚的學科達到那個天數需要多少援助為b。

那麼我們就是要用a個**為a的物品,無數個**為b的物品,買b件的最小代價。

稍微分類討論一下不成問題。

然後對於已經確定的天數,再列舉每乙個同學統計不滿意度,這也不用多說。

那麼就沒什麼問題了吧?

1 #include2 #include3

using

namespace

std;

4#define int long long

5int a,b,c,n,m,w[100005],re[100005];6

long

double q(int

d)13

signed main()

但是還沒有完

好像還有一種做法,更加草率。

因為統計不滿意度時,這其實是乙個序列上的問題,前驅後繼字首和什麼的,可以用資料結構/stl什麼的來達到log複雜度來統計答案的效果。

好像需要的操作也就是查b陣列裡有多少數比mid大,它們的和是多少,小的同理。sort後字首和與lower_bound可以解決。

以及要查t陣列裡比mid大的和它們的和,依舊字首和。然後好像就沒了,的確可以log?

沒有實測,可能是我在yy?

那麼就可以o(1e6)列舉所有的天數了,就沒有三分答案了,直接取min就行。這個相較於那個沒有被證明的單峰函式更可靠一些?

但是我沒有打。。。

哦對了值得注意的一點是運算過程中那個c那麼大很可能會爆long long,推薦用double。

因為無論是什麼資料答案都不會超過long long,所以用double計算後如果太大直接捨棄就好,否則再細算。

宅男計畫 單峰函式三分

description 自從迷上了拼圖,jyy 就變成了個徹底的宅男。為了解決溫飽問題,jyy 不得不依靠叫外賣來維持生計。外賣店一共有n種食物,分別由1到n編號。第i種食物有固定的價錢pi和保質期si。第i種食物會在si天後過期。jyy 是不會吃過期食物的。比如 jyy 如果今天點了乙份保質期為0...

三分求單峰函式最值

二分可以求解單調函式最值,模擬不難想到三分可以求解單峰函式。何為單峰函式,如果函式f x 在區間 a,b 上只有唯一的最大值點 或最小值點 c,而在最大值點 或最小值點 c的左側,函式單調增加 減少 在點c的右側,函式單調減少 增加 則稱這個函式為區間 a,b 上的單峰函式 如果函式f x 在區間 ...

Luogu P3745期末考試(三分)

題目鏈結 我是怎麼把 期末考試 在本地寫成 假期計畫 的 qwq?本題把學生和卷子都排個序,按出成績最晚時間三分。三分之後可以o n 的時間統計答案,因為修改卷子出成績的時間可以貪心計畫。這裡著重了解一下為什麼可以三分。我們可以發現隨著出成績的時間推遲,學生的不偷稅愉悅度肯定是越來越大的,換句話說這...