w12選做 E做作業

2021-10-06 02:29:45 字數 1418 閱讀 8045

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

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

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

輸入格式:

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

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

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

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

輸出格式:

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

樣例輸入:

2

3computer 3 3

english 20 1

math 3 2

3computer 3 3

english 6 3

math 6 3

樣例輸出:

2

computer

math

english

3computer

english

math

狀壓dp

(1)狀態定義

f[s]表示完成 s 作業集合後被扣的最少分數 (s是被2進製壓縮後的十進位制數,把每乙個任務做與不做用 0/1表示 第i位為1表示該狀態中已經做了該任務)

(2)狀態方程

定義 c[x] = 作業 x 完成所需時間 ,d[x] = 作業 x 的 ddl ,sum = s 作業集合對應的總時間

tmp = max ( sum + c[x] – d[x], 0 ) (temp是作業 x 被扣的分數)

所以得到 f[s|(1<#include

#include

#include

#include

using

namespace std;

const

int msize=

1<<15;

int f[msize]

,pre[msize]

,sum[msize]

;string task[20]

;int c[20]

,d[20];

int m,n;

void

output

(int n)

intmain()

} cout<

(k);

}return0;

}

SSLOJ 1299 選做作業

傳送門 在一堆大部分有先決條件的作業中選擇一部分,使得開心值最大 我們留意到,若出現乙個關於先決條件的環,那麼在其中的作業是永遠也不會達成的 我們可以使用拓撲把環找出,然後對於剩下的圖進行網路流求解 include include include include include include in...

選做題 2 Week12作業E題

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

w15作業 ZJM 與生日禮物(選做)

zjm 收到了 q老師 送來的生日禮物,但是被 q老師 加密了。只有 zjm 能夠回答對 q老師 的問題,q老師 才會把密碼告訴 zjm。q老師 給了 zjm 一些僅有 01 組成的二進位制編碼串,他問 zjm 是否存在乙個串是另乙個串的字首.輸入格式 多組資料。每組資料中包含多個僅有01組成的字串...