摘要: 一.gdb常用命令:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令frame(或f) 帧编号选择栈帧info(或i) locals查看当前栈帧局部变量的值list(或l)列出源代码,接着上次的位置往下列,每次列10行list 行号列出从第几行开始的源代码list 函数名列出某个函数的源代码next(或n)执行下一行语句print(或p)打印表达式的值,通过表达式可以修改变量的值或者调用函数quit(或q)退出gdb调试环境set var修改变量的值start开始执行程序,停在main函数第一行语句前面等待命令step(或s) 阅读全文
posted @ 2012-12-07 11:11 hankers 阅读(122754) 评论(6) 推荐(20) 编辑
摘要: 0.618法:设f(x)在区间[x,y]上为单峰函数,可以使用0.618法实现求解最值问题,实质与二分法一样,只是更加精确。题意: 在x轴上有n个点a1,a2,...ai,每个点有wi重量,求(a1-x)^3*w1+(a2-x)^3*w2+(a3-x)^3*w3...+(ai-x)^3*wi的最小值。View Code 1 /* 2 6499620 2012-08-09 20:37:56 Accepted 4355 781MS 1276K 1439 B G++ hanker 3 0.618法 4 */ 5 #include<ios... 阅读全文
posted @ 2012-08-09 20:59 hankers 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 以下等式或者不等式均可以用数学归纳法予以证明!1 + 3 + 5 + ... + (2n - 1) = n^21*2 + 2*3 + 3*4 + ... + n*(n + 1) = n*(n + 1)*(n + 2) / 31*1! + 2*2! + 3*3! + ... + n*n! = (n + 1)! - 11^2 + 2^2 + 3^2 + ... + n^2 = n*(n + 1)*(2n + 1) / 61^2 - 2^2 + 3^2 -... + (-1)^n * n^2 = (-1)^(n + 1) * n * (n + 1) / 22^2 + 4^2 + ... + (2n) 阅读全文
posted @ 2012-08-09 09:42 hankers 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 1.burnside定理,polya计数法这个大家可以看brudildi的《组合数学》,那本书的这一章写的很详细也很容易理解。最好能完全看懂了,理解了再去做题,不要只记个公式。*简单题:(直接用套公式就可以了) pku2409 Letit Bead http://acm.pku.edu.cn/JudgeOnline/problem?id=2409 pku2154Color http://acm.pku.edu.cn/JudgeOnline/problem?id=2154 pku1286Necklace of Beads http://acm.pku.edu.cn/JudgeOnline/pro 阅读全文
posted @ 2012-08-09 09:41 hankers 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 1.poj 2342 题意:邀请同事参加party,保证职员与直接上司不一起参加,每个人有个搞笑值,求邀请所有人的最大的搞笑值总和。 DP部分:dp[0][i]表示职员i不来参加party,以i为根的子树的最大搞笑值,dp[1][i]表示职员i来参加party,以i为根的子树的最大搞笑值。 所以DP状态转移方程为: dp[0][u] = 所有儿子v的(max(dp[0][v], dp[1][v]))之和; dp[1][u] = 所有儿子v的(dp[0][v])之和 + val[u];View Code 1 #include<iostream> 2 #include<cstdi 阅读全文
posted @ 2012-08-08 15:46 hankers 阅读(1298) 评论(0) 推荐(0) 编辑
摘要: 1.poj 1185 题意:炮兵阵地有n行m列,n<=100,m<=10,故可以使用将每行放置大炮的情况状态压缩为二进制的形式。 状态数目最多约为60种,dp[r][i][k]表示在r行状态为k,r-1行状态为i,前r行最多可以摆放的大炮数目。 之后枚举r行 状态转移:dp[r][j][i] = max{dp[r][j][i],dp[r-1][k][j]+sum[i]} 最为关键的是将题目模型化嵌套入状态压缩的模型,而且要熟悉各种位运算的用法。View Code 1 #include<iostream> 2 #include<cstdio> 3 #inclu 阅读全文
posted @ 2012-08-06 15:57 hankers 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 状态压缩动态规划动态规划的状态有时候比较难,不容易表示出来,需要用一些编码技术,把状态压缩的用简单的方式表示出来。典型方式:当需要表示一个集合有哪些元素时,往往利用2进制用一个整数表示。*:一般有个数据 n<16 或者 n<32 这个很可能就是状态DP的标志,因为我们要用一个int的二进制来表示这些状态。要注意好这些数据规模的提示作用。*:确定了为状态DP,那么第一步就是预处理,求出每行所有可能的状态了,cnt记录总的状态数,stk[]记录所有的可能状态。以炮兵阵地为例:int cnt, stk[MAX];void findStk(int n){//求出所有可能的状态。 for(i 阅读全文
posted @ 2012-08-05 21:06 hankers 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 贪心:1.poj 1922 题意:一人从A地到B地,起始点时他要跟随第一个出发的人,之后如果有其他人追上初始他跟随的人时, 他便跟随这些人,求其到达目的地的时间。 首先考虑到这个时间应该等于他每次跟随其他人的各个时间总和,但是仔细的从总体思考,只需要算出他跟随的人到达目的地 的时间,找出最小时间,即是正解,因为不管你中间跟随了谁,最终还是会跟随最快的人,和他一起到达目的地,花费时间最少。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cma 阅读全文
posted @ 2012-08-04 11:15 hankers 阅读(278) 评论(0) 推荐(0) 编辑
摘要: polya定理是组合数学中比较难的一部分。首先需要对置换群、集合论有一定的了解,这样有助于理解burnside引理的证明。其次,polya定理只 是对于在环上存在旋转、反射等等价的变换的一种计数方法,实际的题目中很多需要其他的知识来进行辅助。环上的计数主要就是处理置换 -> 着色这种情况。很关键的一点是同一循环内着色相同。因此很多题目就在置换和着色上下文章。最最简单的polya定理题目是置换数 目很少,每种颜色不限,这种情况下只需手工数出所有的置换就可以了,一般就是一个公式。难一点的要么是颜色数有限,需要用排列组合的知识或动 态规划来帮助计数;要么是置换非常多,需要利用数论的知识来优化。 阅读全文
posted @ 2012-08-03 20:36 hankers 阅读(8742) 评论(0) 推荐(2) 编辑
摘要: POJ图论分类POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很多相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144该题亦放在搜索推荐题中POJ 3013 - Big Christmas Tree(基础)http://acm.pku.edu.cn/JudgeOnline/problem?id=3013题意:最简单最短路,但此题要过,需要较 阅读全文
posted @ 2012-08-03 18:17 hankers 阅读(291) 评论(0) 推荐(0) 编辑