標籤:三分
題目傳送門
有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或皆可。題目裡的難度評分是個人評分,僅供參考開心就好。題意是給定期末考試每門課的出分時間和學生希望的出分時間,如果學生要等就會有不滿意度。你可以進行老師的增加和調換操作,但是都會產生不滿意度...