Miners】的更多相关文章

[Ioi2007]Miners 矿工配餐 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 214  Solved: 128 Description 现有两个煤矿,每个煤矿都雇用一组矿工.采煤工作很辛苦,所以矿工们需要良好饮食.每当一辆食品车到达煤矿时,矿工们便会产出一定数量的煤.有三种类型的食品车:肉车,鱼车和面包车. 矿工们喜欢变化的食谱.如果提供的食品能够不断变化,他们的产煤量将会增加.每当一个新的食品车到达煤矿时,矿工们就会比较这种新的食品和前…
dp... ------------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<cctype> #include<iostream>   #define rep( i , n ) for( int i = 0 ;  i <…
[bzoj1806][Ioi2007]Miners 矿工配餐 2014年7月10日1,7870 Description 现有两个煤矿,每个煤矿都雇用一组矿工.采煤工作很辛苦,所以矿工们需要良好饮食.每当一辆食品车到达煤矿时,矿工们便会产出一定数量的煤.有三种类型的食品车:肉车,鱼车和面包车. 矿工们喜欢变化的食谱.如果提供的食品能够不断变化,他们的产煤量将会增加.每当一个新的食品车到达煤矿时,矿工们就会比较这种新的食品和前两次(或者少于两次,如果前面运送食品的次数不足两次)的食品,并且: • 如…
[IOI2007]Miners 题目大意: 两个人吃东西,总共有\(3\)种食物,每个人每次吃到食物时可以获得的收益是当前食物和前两次吃的食物中,不同食物的种数.现在给定一个长度为\(n(n\le10^5)\)的食物序列,按顺序每次将这些食物分配给两个人中的一个.问收益总和的最大值. 思路: \(f[i][j][k][l][m]\)表示分完前\(i\)个吃的,\(A\)最后两个吃了\(i\)和\(j\),\(B\)最后两个吃了\(l\)和\(m\)时的最大收益. 时间复杂度\(\mathcal…
Miners 有三种食品,两组矿工.矿工们根据最近三次过来的食品车产煤,产出煤的个数就是新过来的食品车,和前面两辆车中,不同的食品车的个数. 现在你有一个长度为n的食品车序列,请合理分配它们给两组矿工,使得产煤个数最大. 我会做IOI的题啦! \(f[i][a][b][c][d]\)吗,表示当前是第i辆车,第一组矿工的最近两组车分别是a,b,第二组矿工的最近两组车分别是c,d的最大产煤个数.那么\(f[i][a][b][c][d]->f[i+1][b][cur][c][d], f[i+1][a]…
通过霍尔定理转化判定方式的一步还是很妙的 The biggest gold mine in Berland consists of n caves, connected by n - 1 transitions. The entrance to the mine leads to the cave number 1, it is possible to go from it to any remaining cave of the mine by moving along the transit…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1806 [题意] 给定一个权在1..3内的序列,在保持相对位置不变的情况下拆分成两个序列,使获益最大. [思路] 设f[i][a][b][c][d]表示前i个数,分给A的倒数两个为ab,分给B的倒数两个为cd,则有转移式: f[i+1][b][x][c][d]<- f[i][a][b][c][d]+w(a,b,x) f[i+1][a][b][d][x]<- f[i][a][b][c]…
题目大意:将一个123序列拆分为两个子序列.定义每一个数的贡献值为以这个数结尾的长度最大为3的子串中不同数的数量,求贡献值和的最大值 令f[i][a1][a2][b1][b2]为前i个数分成两组,第一组以a1 a2结尾,第二组以b1 b2结尾的最大贡献值 转移啥的自己YY吧 记得开滚动数组 尼玛写错个參数都要调半天-- #include<cstdio> #include<cstring> #include<iostream> #include<algorithm&…
相当于noip前两题难度的ioi题........ 还是挺好想的...算是状压一下?...两个二进制位可以表示三种食物或者没有,所以用四个二进制位表示某个煤矿最近两餐的情况... 先把各种情况加上各种食物后的产出与新情况预处理出来吧.(如果两餐开两维的话似乎不太好预处理) f[i][j][k]表示前i辆车,两个煤矿最近两餐情况分别为j和k时的最大产出.i那维滚动一下 感觉要注意的就是,两餐的情况是有非法情况的(前一餐吃了,后一餐不吃):还有就是有的情况可能用目前的食物凑不出来.. #includ…
线段树维护贪心 /* */ #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<queue> #include<cmath> #include<set> #define ll long long #define M 500010 #define mmp make_pair #define INF 1000000…