摘要: 令res[i][0]表示升级到i并且是正版的最小消费,res[i][1]表示升级到i并且是盗版的最小消费。res[i][0]=min(res[i][0],res[k][0]+edge(k,i)) (其中k必须可以升级到i,并且保证升级到i是正版);res[i][1]=min(res[i][1],res[k][x]+edge(k,i)) (其中res[k][x]表示正版盗版都行,关键保证升级到i是盗版)简单DP不用再说了,不过就是用到临界表来存储边,减小空间复杂度(姑且这样说)。#include<iostream>#include<cstdio>#include<c 阅读全文
posted @ 2012-05-03 21:13 书山有路,学海无涯 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 令res[i][j][0]表示数字和为i,数字平方和为j的可能性,要么为0要么为1,;res[i][j][1]表示至少有多少位数字。res[i][j][0]=res[i-k][j-k*k] ? 1 : 0;(1<=k<=9 , 1<=i<=900,1<=j<=8100)res[i][j][1]=min(res[i][j],res[i-k][j-k*k]+1);然后根据res[i][j][1]寻找最优解需要预处理一下,不然可能TLE,之前没有预处理TLE了n次。。。。。。。#include<iostream>#include<cstdio&g 阅读全文
posted @ 2012-05-03 12:57 书山有路,学海无涯 阅读(211) 评论(0) 推荐(0) 编辑