選做題 2 Week12作業E題

2021-10-07 23:18:58 字數 1301 閱讀 4607

馬上假期就要結束了,zjm還有 n 個作業,完成某個作業需要一定的時間,而且每個作業有乙個截止時間,若超過截止時間,一天就要扣一分。

zjm想知道如何安排做作業,使得扣的分數最少。

tips: 如果開始做某個作業,就必須把這個作業做完了,才能做下乙個作業。

輸入:有多組測試資料。第一行乙個整數表示測試資料的組數

第一行乙個整數 n(1<=n<=15)

接下來n行,每行乙個字串(長度不超過100) s 表示任務的名稱和兩個整數 d 和 c,分別表示任務的截止時間和完成任務需要的天數。

這 n 個任務是按照字串的字典序從小到大給出。

輸出:每組測試資料,輸出最少扣的分數,並輸出完成作業的方案,如果有多個方案,輸出字典序最小的乙個。

樣例:input:

2

3computer 3 3

english 20 1

math 3 2

3computer 3 3

english 6 3

math 6 3

output:

2

computer

math

english

3computer

english

math

在第二個樣例中,按照 computer->english->math 和 computer->math->english 的順序完成作業,所扣的分數都是 3,由於 english 的字典序比 math 小,故輸出前一種方案。

本題使用狀態dp,設f表示當前狀態最少扣的分數。

採用列舉方法,列舉所有的作業,若某作業包含在當前情況中,則計算出當前作業被扣除的分數,更新當前狀態的最小值,同時記錄前驅,最後遞迴輸出。由於需要字典序最小,因此逆序列舉作業,從而避免了排序。

#include

#include

#include

using

namespace std;

const

int maxx=

1e9;

int n,f[

1<<16]

,pre[

1<<16]

,sum[

1<<16]

;struct node

a[16];

void

output

(int x)

intmain()

}}cout<

(tot-1)

;}return0;

}

Week12作業 E 選做題 2 狀壓dp

馬上假期就要結束了,zjm還有 n 個作業,完成某個作業需要一定的時間,而且每個作業有乙個截止時間,若超過截止時間,一天就要扣一分。zjm想知道如何安排做作業,使得扣的分數最少。tips 如果開始做某個作業,就必須把這個作業做完了,才能做下乙個作業。有多組測試資料。第一行乙個整數表示測試資料的組數 ...

Week12作業 必做題

a給出n個數,zjm想找出出現至少 n 1 2次的數,現在需要你幫忙找出這個數是多少?input 本題包含多組資料 每組資料報含兩行。第一行乙個數字n 1 n 999999 保證n為奇數。第二行為n個用空格隔開的整數。資料以eof結束。output 對於每一組資料,你需要輸出你找到的唯一的數。實現 ...

Week13作業 選做題D

題意 在大家的三連助攻下,tt 一舉獲得了超級多的貓咪,因此決定開一間貓咖,將快樂與大家一同分享。並且在開業的那一天,為了紀念這個日子,tt 在貓咖門口種了一棵蘋果樹。一年後,蘋果熟了,到了該摘蘋果的日子了。已知樹上共有 n 個節點,每個節點對應乙個快樂值為 w i 的蘋果,為了可持續發展,tt 要...