上一页 1 2 3 4 5 6 7 8 9 ··· 17 下一页
摘要: 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3887题意:给出一棵树,对于每一个节点,问他的子孙节点中有多少个节点小于该节点。思路:首先找出这棵树的DFS序列,每一个节点出现在两个位置,这两个位置之间的节点就是该节点的子孙节点。然后用树状数组求出这两个位置之间有多少个节点小于该节点。hdu这题出的有点龊 ,,用dfs搜索会爆栈,要手动模拟先序或者后序遍历!code:View Code 1 # include<stdio.h> 2 # include<string.h> 3 # define N 100050 4 stru 阅读全文
posted @ 2011-09-30 13:10 奋斗青春 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 这道题和上篇介绍的hdu 3450 是同一个类型的题。有点不相同的地方是这道题可以包含长度为1的序列!方法:树状数组+DPcode:View Code 1 # include<stdio.h> 2 # include<string.h> 3 # include<stdlib.h> 4 # define N 500005 5 # define mod 1000000007 6 __int64 a[N],b[N],c[N]; 7 __int64 count[N]; 8 int k; 9 int cmp(const void *a,const void *b)10 阅读全文
posted @ 2011-09-29 16:03 奋斗青春 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 题意:一个国家分为东部和西部,分别包括n个和m个城市,在城市之间建k条路,问有多少个交点。(不存在三边交与一点的情况)思路:很容易想到转化为求逆序数,可以用归并排序来求,也可以用树状数组。树状数组实现要比归并简单一点。。需要注意:k<=10^6,最后的结果要用__int64 存储归并:# include<stdio.h># include<string.h># include<stdlib.h>struct node{ int from,to,next;}edge[1000005];int head[1005],tol,num[1000005];__i 阅读全文
posted @ 2011-09-29 09:28 奋斗青春 阅读(244) 评论(0) 推荐(0) 编辑
摘要: */题意:给定N(N<=100000)个数字ai和一个H,要求求出特殊序列的数量,所谓特殊序列,就是相邻两个数字的绝对值小于等于H并且序列长度大于等于2。解法:树状数组+动态规划思路:首先我们利用dp[i]表示到第i个位置能够找到的相邻数字之差小于等于H的长度大于等于1的序列的总和,那么有状态转移方程dp[i]=sum{dp[j],j<i,abs(a[j]-a[i])<=H},这个做法的时间复杂度是O(n^2),但是n很大,所以不能采用,但是我们观察到这个转移方程是以求和的形式出现,并且有一个限制条件就是abs(a[j]-a[i])<=H,我们可以把它简写成a[i]-H 阅读全文
posted @ 2011-09-28 17:28 奋斗青春 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 两道树状数组题。推荐一篇介绍树状数组比较好的博客:http://www.cnblogs.com/yykkciwei/archive/2009/05/08/1452889.htmlhdu 4000 Fruit Ninja题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4000思路:对每个位置处理,考虑后面有多少比他大的数,则该位置上的数与后面两个大数可构成x*(x-1)/2种,再把所有的i<j<k && a[i]<a[j]<a[k]除去。code:# include<stdio.h># includ 阅读全文
posted @ 2011-09-27 10:55 奋斗青春 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 题目来源:http://poj.org/problem?id=3160强连通+DP题目大意:圣诞节要到了,flymouse要给他的队友们送去礼物,,n个队友住在n个不同的房子里,每个队友住的地方都有一个comfort index (positive or negative);他每给一个队友送去礼物,都将得到该队友的comfort index ,问最后他能获得的maximized sum of accumulated comfort indices;不过题目还有其他的要求:follow directed paths to visit one room after another and give 阅读全文
posted @ 2011-09-26 17:55 奋斗青春 阅读(923) 评论(0) 推荐(0) 编辑
摘要: 暑假集训之后写的第一篇博客。。开学以来一直在准备网络赛,前几场比赛的还可以,再有10天就现场赛了,感觉时间过的好快,好像还有好多的东西都没接触呢。 哎,学校条件不够优越,马上要比赛了还要天天上课。 今年尽力吧,争取拿个银奖!!本题线段树,好长时间都没写过线段树题了,暑假时写过一道,那时写了几个小时没写出来, 之后再碰见线段树题都有点胆怯了,这几天有时间的话再把那题重做一遍。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027题目大意:给一个长度为n的序列s,有m次询问,每次询问给出三个数,a,b,c,如果a==1,即输出s[b]+s[b+1.. 阅读全文
posted @ 2011-09-14 21:40 奋斗青春 阅读(322) 评论(0) 推荐(0) 编辑
摘要: Dancing Links~~~题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2518DominoesTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 31Accepted Submission(s): 8Problem DescriptionSome day, Tom's father buys him a box of dominoes blocks. In the box, there 阅读全文
posted @ 2011-08-17 20:06 奋斗青春 阅读(406) 评论(0) 推荐(0) 编辑
摘要: hdu 3278 Puzzle题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3278题目大意:给一个4*6的网格,用3中颜色进行涂抹, 每种颜色涂8个小方格,问至少要经过多少步的移动使中间的8个小方格的颜色相同。思路:猛一看和 hdu的1667很像 ,不过那题状态少,这题状态稍微多一点, 如果数据量很大的话 用IDA*会超时的。。预处理相对来说是一个很不错的方法, 假定W是最终在中间位置的颜色,那么就把G和B当作同一种颜色,这样就可以通过二进制压缩把状态用一个整形数字表示,预处理出所有状态之后取三种颜色的最小值即可。这里需要开2kw的数组,看大牛 阅读全文
posted @ 2011-08-17 19:55 奋斗青春 阅读(357) 评论(0) 推荐(1) 编辑
摘要: 题目来源:http://poj.org/problem?id=2181Jumping CowsTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 5065Accepted: 3082DescriptionFarmer John's cows would like to jump over the moon, just like the cows in their favorite nursery rhyme. Unfortunately, cows can not jump. The local witch doctor h 阅读全文
posted @ 2011-08-16 20:38 奋斗青春 阅读(851) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 17 下一页