1636 教育改革
codeforces
基準時間限制:1 秒 空間限制:131072 kb 分值: 20
難度:3級演算法題
最近a學校正在實施教育改革。
乙個學年由n天組成。a學校有m門課程,每天學生必須學習一門課,一門課程必須在一天內學習完。在學習完第i門課程後,學生們會收到 xi
個家庭作業,其中 xi
是區間[
ai,b
i]裡的
乙個整數
。每門課還有乙個屬性,就是複雜度 ci
。a學校現在要制他們的課程表,具體要求如下:
·在課程表中,隨著天數的增加,課程的複雜度是嚴格遞增的。
·除了第1天,每天的作業量必須是前一天的k倍,或者比前一天多k個作業。(假設第i天的作業量為 xi
,則對於i(1<i≤n)到滿足 xi
=k+x
i−1 或 xi
=k⋅x
i−1 );
現在,給定天數n,係數k,和m門課程的ai,bi,ci(1≤i≤m)。要求計算乙個學年可以安排最大的總作業量( 總作
業量的表
達式是∑
ni=1
xi)是多少。
input
單組測試資料output第一行,三個由空格隔開的整數n,m,k(1≤n≤m≤50,1≤k≤100),表示乙個學年的天數,課程的數量,和作業增量係數。
接下來的m行,
每行有三個整數,ai,bi,ci(1≤ai≤bi≤10^16,bi-ai≤100,1≤ci≤100)
分別表示第i門課程的最小作業量,和最多作業量,以及複雜度。
不同的課程可以有相同的複雜度。課程編號從1到m。
如果有可行方案,第一行輸出「yes」(沒有引號),第二行輸出最大的作業量。input示例如果沒有可行方案,則輸出一行「no」(沒有引號)。
4 5 2output示例1 10 1
1 10 2
1 10 3
1 20 4
1 100 5
yes題解:動態規劃一般步驟:分解子問題,得到轉移方程。在本題中,首先按照複雜度c進行公升序排序。對於i位置,我們定義dp[i]為0 ~ i - 1能到達i位置的容器(即滿足p[i] > p[j] && j位置有元素 + k或者*k後範圍在p[i].b ~ p[i].b之間)很明顯i是能到達i的(即以i位置的左右區間元素為開始元素)對於能滿足+k或者*k在p[i].a ~ p[i].b區間的元素,將新元素加入容器中,並且更新dp[i]的num值(+1)。當num值等於n時,表示能夠滿足n天的課程,將ok變成1(ok初始為0,最終為0則是no,反之為yes)78
接下來的問題是怎麼獲得最大值,我們發現,當num等於n時,當前放入容器的新元素的最大值是不受任何約束的(即它取最大值不受之前範圍的影響),而在它取最大值時,約束了num等於n - 1時的取值範圍,在範圍內去任何元素都是不受約束的,基於此我們從最大值開始逆推,當當前維護的最大值元素 - k1 或者 /k1在num - 1 元素的範圍內時,取較大值,反之,哪個不符合取另外乙個(不可能兩個都不符合)
ac**
#include #include #include #include #include #include #include #include #include using namespace std;
typedef long long ll;
const int maxn = 111;
struct nodep[maxn];
struct node1
};vectordp[maxn];
vectora[maxn][10 * maxn];
bool cmp(node a1, node a2)
bool check(ll l, ll r, ll a, ll b)
int main()
for(ll i = 0; i < m; i++)
for(ll j = 0; j < i; j++)
cc = a[j][k][l] * k1;
if(cc >= p[i].a && cc <= p[i].b && !s[cc])
}if(a[i][dp[i].size()].size() > 0)
else if(t_ans / k1 < l || t_ans / k1 > r)
else
l = dp[x][y].prex;
r = dp[x][y].prey;
x = l;
y = r;
}if(sum > ans)
ans = sum;
a[i][dp[i].size()].clear();}}
}}
} }if(ok)
else
printf("no\n");
return 0;
}
51 Nod 1636 教育改革 dp
1636 教育改革 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 最近a學校正在實施教育改革。乙個學年由n天組成。a學校有m門課程,每天學生必須學習一門課,一門課程必須在一天內學習完。在學習完第i門課程後,學生們會收到 xi 個家庭作業,其中 xi是區間 ai,...
51NOD 1636 教育改革 (DP 思維)
題意 題解 根據題意,很容易寫出dp i j 表示第 i 天,作業量為 j 的最大的總作業量。但是 j 為1e16很大,空間 所以需要想辦法,把每天的作業量表示出來。根據資料可知,每天的作業量的最大值最小值不超過100,根據這個條件。我們顯然能推出 dp i j l 表示第 i 天選 第 j 門,且...
當今中華之教育改革勢在必行矣
吾曾師從川內名校,修計算機,出師數年,回首大學光陰,常懊惱不已,悔 虛耗光陰,惱 被騙金錢無數,怒 苦心修研卻無所用,修習之術,竟為屠龍之技,致初入社會,一腔躊躇之志盡同秋水東去 尚喜吾於沉淪處尚能自拔,遂訪名師 勤自修,終始成材。一日偶得思科學院之教材,觀之,與吾當年之所學對照,則如絲綢緞面之比麻...