刷題記錄(LA4850 貪心)

2021-10-06 23:55:13 字數 1147 閱讀 2076

題目

如果是問最大懲罰值的最小值的話,只需要按截止時間從小到大排一下序就可以了。但問的是最大兩個懲罰值的最小值。有點沒辦法,一度以為有什麼操作能直接優化兩個數的和最小,好像不太行。在網上搜了題解看到乙個思路。先按截止時間排序,在嘗試把乙個任務a調到任務b後這樣a+1到b的懲罰值都得到優化而a的懲罰值提高,不過最大兩值的和有可能減小。另外每次移動後a的懲罰值直接變得比原本a~b中最大的懲罰值還要大,因為交換後a的理想結束點最靠前,但完成點在區間終點。所以只會移動一次,要不然會造出兩個比原來大的值。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pr;

const

int maxn=

500+5;

const

int inf=

1e9;

const

int mod=

2520

;int n;

int s[maxn]

,d[maxn]

,op[maxn]

;bool

cmp(

int x,

int y)

intsolve

(int x,

int y)

if(i==y)

}return max1+max2;

}int

main()

sort

(op+

1,op+n+

1,cmp)

;int ans=

1e9;

for(

int i=

1;i<=n;i++)}

printf

("%d\n"

,ans);}

return0;

}

CF貪心刷題記錄

339a 把乙個由數字和加號組成的字串按照數字從小到大的順序排序 思路 把字串s中的所有 過濾掉,然後對數字排序輸出。160a 給n個物品,每件物品有乙個價值,現在要求選擇最少的物品使得你所選擇的物品價值和大於剩餘物品的價值和 思路 排序,按照價值從大到小貪心 58a 給乙個字串,判斷是否刪除若干位...

OI刷題記錄

2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...

面試刷題記錄

寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...