洛谷3745 六省聯考2017 期末考試

2021-08-17 05:54:12 字數 1823 閱讀 1750

標籤:三分

題目傳送門

有n位同學,每位同學都參加了全部的m門課程的期末考試,都在焦急的等待成績的公布。

第i位同學希望在第ti天或之前得知所有課程的成績。如果在第ti天,有至少一門課程的成績沒有公布,他就會等待最後公布成績的課程公布成績,每等待一天就會產生c不愉快度。對於第i門課程,按照原本的計畫,會在第bi天公布成績。

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

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

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

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

第一行三個非負整數 a; b; c ,描述三種不愉快度,詳見【問題描述】;

第二行兩個正整數 n; m(1 ≤ n; m ≤ 10^5) ,分別表示學生的數量和課程的數量;

第三行 n 個正整數 ti ,表示每個學生希望的公布成績的時間;

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

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

100 100 2

4 55 1 2 3

1 1 2 3 3

6
3 5 4

5 61 1 4 7 8

2 3 3 1 8 2

33
【樣例 1 說明】

由於調整操作產生的不愉快度太大,所以在本例中最好的方案是不進行調整; 全部

5 的門課程中,最慢的在第 3 天出成績;

同學 1 希望在第 5 天或之前出成績,所以不會產生不愉快度;

同學 2 希望在第 1 天或之前出成績,產生的不愉快度為 (3 − 1) ∗ 2 = 4;

同學 3 希望在第 2 天或之前出成績,產生的不愉快度為 (3 − 2) ∗ 2 = 2;

同學 4 希望在第 3 天或之前出成績,所以不會產生不愉快度;

不愉快度之和為 4 + 2 = 6 。

函式具有單峰性質,三分一下就好

#include

#define rep(i,a,b) for(int i=a;i<=b;i++)

#define dep(i,a,b) for(int i=a;i>=b;i--)

#define ll long long

#define mem(x,num) memset(x,num,sizeof x)

#define reg(x) for(int i=last[x];i;i=e[i].next)

using namespace std;

inline ll read()

while(ch>='0'&&ch<='9')

return

x*f;

}//**

****

****head by yjjr**

****

****

#define inf 1e16

const int maxn=2e5+6;

int n,m,t[maxn],b[maxn];ll a,b,c,ans=inf;

inline ll cal(int p)

int main()

int l=1,r=maxn;

while(r-l>5)

rep(i,l,r)

cout0;}

六省聯考2017

luogu lojbzoj 顯然我們只需要考慮最後公布成績的那一天。列舉這一天,預處理字首和之後即可 o 1 計算最小代價。注意倒數第二個subtask這最優的日期就是 min b i 直接計算即可。如果套用通法會爆long long,但是開unsigned long long就行了 include...

洛谷3746 六省聯考2017 組合數問題

組合數 cnmc n mc n m 表示的是從 n 個互不相同的物品中選出 m 個物品的方案數。舉個例子,從 1 2 3 三個物品中選擇兩個物品可以有 1 2 1 3 2 3 這三種選擇方法。根據組合數的定義,我們可以給出計算組合數 cnmc n mc n m 的一般公式 cnm n m n m c...

題解 六省聯考2017

題目順序不是做題順序也不是考試順序更不是難度順序,是隨機順序。為了不影響 體驗決定把 刪去,需要請私信我,qq或皆可。題目裡的難度評分是個人評分,僅供參考開心就好。題意是給定期末考試每門課的出分時間和學生希望的出分時間,如果學生要等就會有不滿意度。你可以進行老師的增加和調換操作,但是都會產生不滿意度...