线性动规,
f10[i]表示到10*i为止花费的最小费用。 读题会发现其实赛车只会走10的整数倍的距离。 对此,有些量需要缩小十倍,以保证空间复杂度不至于过高。 |
|
記憶化搜索
|
|
认为是很麻烦的DP,情况太多,交了好多次才过,哎。
关键还是水平不到家啊,其中有好几次读入处理都出了错误。 |
|
贪心,不管横竖,选择最大的先切(有相等无所谓,当有几个相等的最大值时,随便选一个)
完事儿,AC。 |
|
自主构图+最小生成树,
因为用邻接矩阵存的图(似乎用邻接表构图会很麻烦……), 再加上图是一个不折不扣的稠密图(本来就是完全图), 用的普里姆算法。(克鲁斯卡尔算法适用于稀疏图,用邻接表的图)。 这里普里姆是用的“不完全”队列操作实现的,感觉应该是普里姆算法中最简单最快的实现方法了。 |
|
找题解,上http://paulinsider.at.ua/news/ppg/2011-11-08-8,快,稳,准,大牛的选择!!
用prim |
|
神棍的容斥原理
|
|
线性(过全)或区间型(过不全)动归:
状态:(过不全) f[i][j]表示从i开始的j个数分配的最小机房数。 状态:(过全) f[i]表示从首部到i为止的人分配的最小机房数。 加求和预处理, AC。 |
|
表示很坑爹。。
|
|
提供一个小发现:(本题用此方法全部正确)
pow(x,x)%moder==pow(x%moder,x%moder) 其实正规的算法应该是快速幂。(自己也不会) n^m=n^(2^x1)*n^(2^x2)*...*n^(2^xn) 其中m=2^x1+2^x2+...+2^xn 例: 5^9=5^8*5^0*5^0*5^1 然后一个高精度加法,数值递推(推出来后是一个杨辉三角),我用的是十亿进制 搞定。 |
|
動規
|
|
貪心
|
|
FLOYD可以过,听说可以用SPFA,只是自己不会用……
得到一个教训:int型矩阵(数组)中自己默认的最大值最好不要存0.5*(2^31-1)以上的数,不然在求和运算中都有可能出错。 自己设置的最大值根据用到运算种类的不同需要随时改变(数据间需要用到乘法运算时估计就得小于<根号下>(2^31-1)了) |
|
找题解,原程上:http://paulinsider.at.ua/news/sparty/2011-11-07-7,呵呵,稳,快,准,大牛的选择!
题目 176 [USACO Feb07] 奶牛聚会
2011-11-07 22:09:04
|
|
区间型动归,类似于石子归并,不同于石子归并。
My方程状态: f[i][j]表示从i开始的j个数的最大获利。 初始状态:f[i][1] 目标状态:f[1][n] 转移分三种情况: 1、全部直接拿出 2、除头一个或者末一个外的判定为已拿出,头一个或者末一个单独拿出。 3、除第二种情况,将从i开始的j个数分成两部分(好多种情况),两部分一部分判定为已拿出,另一部分为要拿出的。 听说某个什么什么取数和本题很像,找时间去做做。 |
|
|
|
動態規劃。F[i,j]表示前i個、后j個數的最大值。 詳細: http://yeefanzhu.blogspot.com/
题目 608 删数
2011-11-07 19:16:42
|
|
動態規劃,F[i] 前i個牛花費的最小時間
题目 131 [USACO Mar08] 奶牛渡河
2011-11-07 17:18:10
|
|
石子归并的变种,代码其实都一模一样,只需要在输入时稍作处理即可。
二维的O(n3)DP,状态为:f[i][j]表示从i开始的j堆书合并所需的最小代价。 第三维枚举分界点。具体的也不好解释,总之石子归并还是要好好复习啊。 |
|
我用字典樹(Trie Tree)。請看:http://yeefanzhu.blogspot.com/2011/10/trie-tree.html (需要翻牆)
题目 399 查字典
2011-11-07 14:50:59
|