- 博客(21)
- 收藏
- 关注
原创 poj_1635
有根树同构问题有两种解法: 1. 树的最小表示,用一系列括号表示一棵树,一对括号内是一颗子树,由于子树没有次序,因此可以将树的所有子树的最小表示(树的递归结构)按照字典序排序,即为树的最小表示,比较两颗树的最小表示,相同则同构。详细可参考:www.byvoid.com/blog/directed-tree-bracket-sequence/ 算法的复杂度应该是O
2014-04-24 17:17:56
680
原创 bop_2014_round_2a
1. 焦距#include #include #include #include #include using namespace std;int T;double fe, ce, ip;string scales[6] = {"m", "dm", "cm", "mm", "um", "nm"};double Transfer(string str) { //str
2014-04-22 19:42:10
434
原创 bop_2014_round_2b
题目1 : 神奇的数列时间限制:2000ms单点时限:1000ms内存限制:256MB描述大神同学是一个热爱数字的孩子,她无时无刻不在思考生活与数学的联系。有一天,她发现其实公历的设计是有讲究的。每4年就会多闰一天,每一百年又会有一年不是闰年,而第四百年又是闰年。这样,这四百年的周期里每一年平均有365又400分之97天。大神同学
2014-04-22 19:17:20
442
转载 国家集训队论文分类整理
距离ACM/ICPC的时间越来越少了,选择性地看一些集训队论文是很有必要的。(在此给已经看过所有论文的神牛跪了= =)所以,我在此整理了一下,供大家参考。组合数学计数与统计2001 - 符文杰:《Pólya原理及其应用》2003 - 许智磊:《浅谈补集转化思想在统计问题中的应用》2007 - 周冬:《生成树的计
2014-04-16 21:31:09
558
转载 Fibonacci
转贴:http://blog.youkuaiyun.com/hackbuteer1/article/details/6684867一:递归实现 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1。二:数组实现 空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快。三:vector实现 时间复杂度是0(n),
2013-12-05 14:48:44
498
原创 POJ_2965
1. 解题思路: 首先,还是要理解这种类型的题,每个格子操作的次序是不重要的。 如果想改变一个开关的状态,并且其他开关保持不变,则可以操作一次这个开关,然后将和这个开关同行同列的其他开关也操作一次。 因此,想将所有的开关都打开,可以依次用上面的方法操作所有的+开关。用一个矩阵记录所有开关的操作次数,将矩阵元素%2,因为操作两次等于不操作。最后1的为所求。2. 其他
2013-11-27 15:22:56
449
原创 POJ_1753
1. 位运算+BFS2. 枚举:只要有一种枚举不满足,则其他枚举也不满足,反之,只要有一种枚举满足,则所有枚举都满足,因为同一个方块反转两次,整体不变,猜测所有的可行解都是可以相互转换,并且都始于全黑/白,终于全黑/白。3. 高斯消元法
2013-11-26 16:35:54
786
转载 POJ_题目分类
OJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法.
2013-11-19 17:33:35
1006
原创 POJ_1001
#include #include #include char res[151], base[7];int exp, dec;void Reverse() { for (char *st = base, *end = base + 5; st < end; ++st, --end) *st ^= *end, *end ^= *st, *st ^= *end; retu
2013-11-18 17:28:56
654
原创 POJ_3094
解题: 水。summary:c输入一行 1. char * gets(char * buffer),从stdin读一行,/n或EOF结束, 返回buffer指针,如果在读到任何字符前EOF,则返回null。 需要注意, 如果超过buffer的size,则会buffer overflow。 2. char * fgets(char * str, i
2013-11-18 16:18:53
706
原创 POJ_2255
解题: 比较直接,由二叉树pre-order和in-order求后序, 可以重构树再遍历,更好的方法是找到三种序列的关系,直接求解。注意: 1. 从效率考虑,应该用栈迭代,而不要用递归。 2. 最后遍历结果栈的时候,犯了很2的错误,debug好9,一定吸取教训。//144k 0ms#include #include #include #in
2013-11-18 14:47:25
784
原创 POJ_3006
解题: 果然是水题, 还是直接线性打表, 然后查找。 不过,1million之内的素数表,只用了16ms,这个应该是已知最快的了吧?哈哈~//1108k 16ms#include #include #include #define MAX 1000000char prime[MAX];int main() { memset(prime, 1, MAX)
2013-11-15 14:56:02
404
原创 POJ_2262
思路: 线性筛选,计算出所有的小于1000000的素数,然后从头开始查找,找到的第一组就是差最大的。notes: 提交的时候用c++明显要快,wa了很多次,但是把数组开成全局的并且使用宏定义替换了全局常量就ac了,被坑的很惨。优化: 第一次写筛选法的时候,TLE了,后来参考了高手的文章“筛法求质”http://blog.youkuaiyun.com/redraiment/
2013-11-14 17:54:59
514
原创 POJ_1083
思路:1. 将corridor抽象为一个计数器数组,一对房间的corridor为一个元素,然后计算每个过道元素被经过几次,整个数组被经过最多的过道元素即为最少搬运组数。//132k 0ms#include #include #include int main() { int T, N, st, en; char corridor[200]; scanf("%d
2013-11-12 14:30:38
610
原创 POJ_2739
#include #include #include #include using namespace std;int main() { bool is_prim[10001]; memset(is_prim, true, 10001); for (int i = 2; i < 10001; ++i) { if (!is_prim[i]) contin
2013-11-08 19:28:17
583
原创 POJ_2159
//164k 16ms#include #include #include #include #include using namespace std;int main() { char cc[26], mc[26]; memset(cc, 0, 26); memset(mc, 0, 26); char input[101]; scanf("%s", in
2013-11-07 16:04:18
441
原创 POJ_3299
//412k 0ms#include #include #define HUM(d, t) (6.11 * exp(5417.7530 * ((1 / 273.16) - (1 / (d + 273.16)))) - 10.0) * 0.5555 + t#define DEW(h, t) (1 / ((log(((h - t) / 0.5555 + 10.0) / 6.11) / 5
2013-11-01 13:55:29
510
原创 Index
優YoU http://blog.youkuaiyun.com/lyy289065406/article/details/6642573
2013-10-31 17:35:52
565
原创 POJ_1005
//364K 16MS#include #include const float PI = atan(1.0f) * 4;float round(int j) { return sqrt(j * 50 * 2 / PI);}float dis(float x, float y) { return sqrt(x * x + y * y);}int main() {
2013-10-29 17:48:28
396
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅