摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3686 题意:给定一颗有根树,每个节点有0和1两种值。有两种操作:o a操作,把以a为根节点的子树的权值全部取反;q a操作,求以a为根节点的子树权值为1的节点个数。 先求出树的先序遍历结果,并且记录每颗子树的节点个数,然后就可以用线段树维护了。。 1 //STATUS:C++_AC_240MS_6524KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #i... 阅读全文
posted @ 2014-03-03 17:38 zhsl 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3349 题意:给定一个数列,序列A是一个满足|Ai-Ai-1| 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include ... 阅读全文
posted @ 2014-03-03 17:29 zhsl 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3201 题意:给一颗树,每个节点有一个权值,求节点数为n的最大权子树。 任意选择一个节点为根,然后DP转移就可以了,类似于分组背包。。。 1 //STATUS:C++_AC_0MS_324KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include ... 阅读全文
posted @ 2014-03-03 17:14 zhsl 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3401 DP方程容易想出来,f[i][j]表示第i天拥有j个股票的最优解,则: 1、不买不卖,f[i][j]=Max{ f[i][j], f[i-1][j] }。 2、买进,f[i][j]=Max{ f[i][j], f[pre][k] - (j-k)*ap[i] | j>=k }。 3、卖出,f[i][j]=Max{ f[i][j], f[pre][k] +(k-j)*bp[i] | k>=j }。 直接转移复杂度O(n^3),超时。考虑第二种情况,f[pre][k] -... 阅读全文
posted @ 2014-03-03 17:10 zhsl 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2888 模板题。解题思路如下(转载别人写的):dp[row][col][i][j] 表示[row,row+2^i-1]x[col,col+2^j-1] 二维区间内的最小值这是RMQ-ST算法的核心: 倍增思想== min( [row,row+ 2^(i-1)-1]x[col,col+2^j-1], [row+2^(i-1),row+2^i-1]x[col,col+2^j-1] )= min(dp[row][col][i-1][j], dp[row+(1 3 #include 4 #inc... 阅读全文
posted @ 2014-03-03 16:54 zhsl 阅读(331) 评论(0) 推荐(0) 编辑