2014-10-01 Xie Jingyi
链接:Link 耗时:1.825s 这道题做的可真够久的:前前后后加起来将近有两个小时,因此当AC的那一刻,自己心中还是挺自豪的。 事实上,这是一道复杂一点的区间型动态规划,之所以说“复杂”,是因为它的状态转移是二维的:切蛋糕既可以横切,也可以纵切。由此我想到了分治算法: 假设一个矩形它所需要切的刀数是f,则f可以由组成该矩形的小矩形的f值决定。 因此,这个问题具有最优子结构。由于每个状态为一个矩形,因此需要4个维度来记录状态(及左上、右下两个顶点)。下面是横切时的状态转移方程,纵切时同理可得: f(up, down, left, right) = min{f(up, i, left, right) + f(i, dow 继续阅读 »
2014-10-01 Xie Jingyi
链接:Link 耗时:0.139s 前言 这道题的主要思路就是打表,看看Fibonacci数列模n几个一循环。但由于这题给的数太大了,从而在细节上耗了很久。在此记录一下: var x: qword; y: longint; begin x := 1<<64-1; y := 100; x := x mod y; //报错201 x := x mod qword(y); //正确 end. Code var a,b: qword; _, n, i, k, cnt: longint; f: array [1..1000000] of longint; fun 继续阅读 »
2014-10-06 Xie Jingyi
链接:Link 状态:Runtime Error 前言 这题做的可真够久的,整整三个小时。但即便如此,还是只过了一部分的点,另一部分报运行时错误——估计是哈希表设计的不太好。但这确实是一道好题,因此,在睡觉前决定记录一下。 分析 很容易便想到:用一个三元组$(x,y,z)$表示节点,表示内容为x的节点下跟着标号为y和z的左右子树。这样一来,一类相同的子树便可以唯一确定了,而不必每构造一棵子树就把整棵树遍历一遍。 对于三元组的储存,刚开始图方便,用了数组。查找也是用了$O(n)$的线性查找。磕磕碰碰写了两个多小时然后兴冲冲地提交,结果TLE了…………没办法,只好又花了半个小时写了一个哈希表,然后就是上文说过的情况了:Runti 继续阅读 »
2014-10-06 Xie Jingyi
链接:Link 耗时: 0.012s 前言 真是疯玩了几天,脑袋都残了,一道弱智题做了近一个小时。 Code var pre, mid, s: string; tree: array [1..50] of record l, r: integer; ch: char; end; cur: integer; function init: integer; var m: integer; begin readln(s); m := length(s) >> 1 + 1; pre := Copy(s, 1, m-1); mid 继续阅读 »