NOIP模擬 上課 動態規劃

2021-08-28 16:15:58 字數 1164 閱讀 7830

問題描述

學校裡有許多節課,第 i 節課從 ti 時刻開始上,上課的時間為 si,如果上了第 i 節課,你的做題能力將變成 ci(是能力的數值,不是能力的增長值)。有 n 類作業,每類作業數量不限,每類作業完成乙份所需要的時間為 ai,做某類作業需要的做題能力達到 qi(>=qi)才能完成。在每個時刻你可以選擇上課、休息、做作業,如果選擇上課則必須上完整節課,如果選擇做作業必須花完整的 ai 時間做,同一時刻只能上一節課或做乙份作業。而且人的精力有限,在 t 時刻後必須停止學習(部分課可能上到 t 時刻後)。求在時限內最多可以完成幾份作業。在剛開始時,你的做題能力為 1,時刻為 1。

輸入格式
第一行三個整數 t,m,n,表示總時間,有 m 節課,有 n 類作業。

接下來 m 行每行三個整數 ti,si,ci。

接下來 n 行每行兩個整數 ai,qi。

輸出格式
共一行,乙個整數 ans,表示時限內最多可以完成幾份作業。

**基於題解:

#include #include #include #include #include #define ll long long

#define rep(i,x,y) for(ll i=(x);i<=(y);i++)

#define repl(i,x,y) for(ll i=(x);i<(y);i++)

#define repd(i,x,y) for(ll i=(x);i>=(y);i--)

using namespace std;

const ll n=1e5+5;

const ll m=1e2+5;

const ll inf=1e18;

ll t,m,n,ans=-inf,mi[m],f[n][m];

struct node a[n];

inline ll read()

while(ch>='0'&&ch<='9')

return f?-x:x;

}bool cmp(node p,node q)

rep(i,1,m-5) ans=max(ans,f[t][i]);

printf("%lld",ans);

return 0;

}

NOIP模擬 動態規劃 permut

題目描述 求由 1 到 n 一共 n 個數字組成的所有排列中,逆序對個數為 k 的有多少個。輸入格式 第一行為乙個整數 t 為資料組數。以下 t 行,每行兩個整數 n,k,意義如題目所述。輸出格式 對每組資料輸出答案對 10000 取模後的結果。樣例輸入 1 4 1 樣例輸出 3資料規模 對於 30...

NOIP模擬 table 動態規劃

source noip2016 rzz 2 t2 給定乙個 n m 的矩陣,行列均從 1 開始標號。乙個矩陣被認為是穩定的,當且僅當對於任意的 2 i n,第 i 行的數的和不小於第 i 1 行的數的和,且最後一行的數的和小於等於 m 並且要求矩陣中所有的元素都是非負的。求所有 n m 的穩定矩陣的...

NOIP模擬 記憶化搜尋 動態規劃 遊戲

題目描述 題目大意 有n個物品排成一排,從左往右第i個價值為a i 有兩個人從左往右輪流取物品。第乙個人可以拿一或兩個物品。如果前乙個人拿了k個,下乙個人只能拿k或k 1個。如果剩下的物品不夠拿,就結束。問如果大家都採取最優策略,那麼先手拿的物品的價值最多能比後手多多少。1 n 20000 樣例輸入...