貪心之不守交規 帶期限和罰款的單位時間任務排程

2021-08-19 02:20:45 字數 1194 閱讀 5100

描述

近些年來,生活水平越來越好,私家車也成了很多家庭必備之物。但某些司機總是不守交規,罰單也是接踵而至。

有一位不遵守交規的司機,在同一天收到了n條違章罰單簡訊(1≤n≤100),每條罰單簡訊中有兩個內容,一:交罰款的最後剩餘時間ti;二:過期未交的滯納金mi(1≤ti,mi≤1000),假設不管過期多少天,滯納金數量不會改變,而且,這位司機很忙,每天最多只能處理一張罰單,那麼,這位司機應該按怎樣的處理違章簡訊的順序,才能使滯納金總和最少?

輸入共n+1行

第1行:收到簡訊數n

後n行:每行分別兩個數,最後期限ti和過期滯納金mi,用空格隔開輸出最少的滯納金總和樣例輸入

4

1 50

1 100

2 60

3 60

樣例輸出
50
提示

貪心(排程問題)

解題思路

首先我們能夠想到按照滯納金的從大到小進行排序,但是真的是按照時間順序處理這些從大到小的滯納金嗎?其實不是的,我們最優貪心思想應該是按照滯納金的

按照滯納金的從大到小

進行排序,越大的滯納金能夠拖到最後一天處理就最後一天處理;如果最後一天已經處理過以其他的滯納金,則就從這一天倒著往前開始找,看看那一天沒有處理過滯納金,就在這一天處理該滯納金;如果沒有找到,則說明一定要繳納此滯納金。

參考程式

貪心(排程問題)

#include#includeusing namespace std;

struct message

s[105];

int cmp(message a,message b)

int n,i,j,flag[105],flag1,tot=0;//flag表示第i天是否交了滯納金

int main()

else//如果到了該滯納金的最後一天剩餘時間已經處理過其他的滯納金

for(j=s[i].time-1;j>=1;j--)//從這一天往前遍歷,如果有空閒的天,則處理此滯納金,flag置為1

}if(!flag1)//如果在之前沒有找到空閒天,則肯定要繳納此滯納金

tot+=s[i].money;

} cout

}

打車日記 交規和人情

今天打車的路上,快車司機和我聊天,他說起了轉型快車司機之前在公司上班遇到的事情,大概如下 從郊區回市裡的路上,老闆的車撞上了一輛電單車,他打 給我,告訴了我醫院的名字,讓我過去幫忙處理。我趕到醫院的時候,電單車主和乘坐人員一共兩人都已經做完了檢查,後排坐著的那位有點輕微骨折,選擇了住院,另一位則沒什...

貪心分治動規總結

概念看不懂是正常的,看懂了才不正常。有個小建議 先看一下概念,看完之後肯定感覺似懂非懂,沒關係去做題實踐出真知,每個型別做個8 9題,在回過頭來看概念會發現概念說的好像真是那麼回事兒,接著再去做題反覆練習就明白了。最優子結構 原問題的解包含子問題的解。子問題即規模更小的問題 例如,a b c,ab ...

貪心和動規的difference

很多同學在做動規題的時候,很容易做成貪心,的確,動規和貪心是很相近的,在很多時候,動規和貪心沒有明顯的界限,反而在很多時候,我們需要使用貪心的思想,對動規進行優化,不過這也就導致了很多同學分不清什麼題是動規,什麼題是貪心。現在我們來回憶一下,動規的思想是什麼,以前乙個或者多個狀態的最優值,加上現在這...