2012年10月22日

摘要: 传送门:http://new.tyvj.cn/Problem_Show.aspx?id=1075有点小转弯。sum[i]表示下至上i个的总价值f[i][j]表示剩下i个硬币上一轮对方取j个转移方程f[i][j]=max( sum[i]-f[i-k][k] ) 1<=k<=j*2时间复杂度n^3显然不行观察转移方程发现f[i][j] 与 f[i][j-1] 均枚举了 k=1,2……2*j-1,2*j-2所以上面方程中 枚举的k 其实枚举 j*2-1和j*2 就包含了所有情况了。貌似还有一种方法是单调队列,暂不懂 阅读全文
posted @ 2012-10-22 21:38 AlphaX 阅读(119) 评论(0) 推荐(0)
摘要: 传送门:http://new.tyvj.cn/Problem_Show.aspx?id=1309能把方程和一点优化写出来~。但是还是不够细心哪方程:f[i]=min(f[k]+t[k+1,i]*i)+(n-i)*s;预处理出 t[] 和 (n-i)*k 存好然后就是斜率优化如果k决策比j觉得更优化成等式就是f[k]+t[k+1,i]*i<f[j]+t[j+1,i]*i;( f[k]-f[j] ) / ( t[j+1,i]-t[k+1,i] ) < i满足上面这个等式我们知道 如果存在一个决策k比j更优 那么以后的寻找min就没必要再遍历j决策了那么我们在循环时候 维护一个最优解k就 阅读全文
posted @ 2012-10-22 21:37 AlphaX 阅读(201) 评论(0) 推荐(0)
摘要: 传送门:http://new.tyvj.cn/Problem_Show.aspx?id=1314有点小坑。感觉有点小问题。但题解是这样 - - 先理理再说f[i][j]表示red球i个,blue球j个 达到最大分数g[i][j]表示red球i个,blue球j个 剩下的钱last[i][j]表示red球i个,blue球j个 已经取了前几个奖励f[i][j]=max(f[i-1][j]*red,f[i][j-1]+blue)DP同时更新g[][]个last[][] 阅读全文
posted @ 2012-10-22 21:35 AlphaX 阅读(125) 评论(0) 推荐(0)
摘要: 传送门:http://new.tyvj.cn/Problem_Show.aspx?id=1333啊。大有收获啊。好吧是我太弱。。第一个,最多邀请人数我方程写出来了。但是怪怪的我就把他给否定了。因为时间会爆啊??但是题解说做些优化就可以了,但是一些极端数据不是一样会爆?方程f[i][j]表示小A花i时间小B花j时间邀请到的最多大牛假设当前循环到第k位大牛f[i][j]=max( f[i-timea[k]][j],f[i][j-timeb[k]] ) 其中要保证时间连续性第二个,最少时间f[i][j][k]表示前i个大牛小A邀请j个花了k时间时 小B最少花的时间f[i][j][k]=min( f[ 阅读全文
posted @ 2012-10-22 21:34 AlphaX 阅读(293) 评论(0) 推荐(0)

导航