![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
文章平均质量分 75
yrleep
大学毕业不久,ios游戏自由开发者。
展开
-
poj 1182 并查集
第一次wa是因为负数的问题 现在虽然ac了 不过还是有一点小问题 赶着睡觉 晚上再处理 #include #include #include using namespace std; const int maxn=50001; struct { int fa,re; }f[maxn]; int ans; int findre(int x) { if(f[x].fa!=x)原创 2013-04-14 19:37:55 · 487 阅读 · 0 评论 -
poj 3274 Gold Balanced Lineup
题目的意思是有n只奶牛,k种特性,每个奶牛有一个数值,转换成二进制数第i位为0表示没有第i种特性 为1表示有。求一个最大的范围,使得该范围内每种特性出现的次数都一样 做法,先转换成二进制 然后累加,d[k][i]表示1到k只奶牛有i特性的奶牛一共有多少只 若d[i][k]-d[j][k]对于所有的k都相等,则表示i+1到j这一段的奶牛满足条件。 但是现在枚举的复杂度在n*n,超时 再思考下,可以做原创 2013-04-14 19:39:44 · 500 阅读 · 0 评论 -
poj 2236 并查集
#include #include #include #include using namespace std; const int maxn=1010; struct { int x,y; }a[maxn]; double d[maxn][maxn]; int text[maxn]; double calc(int t,int s) { double q=a[t].x-a原创 2013-04-14 19:37:53 · 515 阅读 · 0 评论 -
poj 2785 4 Values…
题意: 给你4个集合a,b,c,d 从其中各选一个值,使其和等于0 一共有多少种选法。每个集合最多有4000个元素。 这个题目和之前发的1840基本是一个思路 如果裸枚举的话,是n^4。然后就考虑分成两边枚举,先枚举两个值的和,存在哈希表中,然后在枚举另外两个值的和,查哈希表中它的相反数。 #include #include #include #in原创 2013-04-14 19:40:00 · 657 阅读 · 0 评论 -
poj 1840 Eqs 哈希
这个题目用到的是哈希这个数据结构 不过觉得关键还是把方程转换成两部分,从而达到降低复杂度的目的。 其实这个跟双向广搜的思想还是十分类似的。 哈希值为和 具体做法,枚举两个系数所能组合成的所有哈希值 再枚举另外三个数的所有哈希值。哈希值相同的即为一个解 #include #include #include #include using namespace std; const int maxn=2原创 2013-04-14 19:39:42 · 621 阅读 · 0 评论 -
poj 3349 Snowflake&nbs…
判断两个雪花是否一样 n=100000; 对每个雪花做一次hash,hash值相同的建立一个链表。 用的是数组模拟链表的方法。 hash函数也用的很简单的办法,全部相加然后求模 #include #include #include using namespace std; const int maxn=5111111; int next[maxn]; int lon; struct {原创 2013-04-14 19:39:39 · 551 阅读 · 0 评论 -
poj 2255 Tree Recovery
给出二叉树的先根,中根遍历,求其后根遍历 我的做法,先找跟,中根遍历的顺序表中第一个在先跟遍历出现的节点是跟,跟左边的节点构成左子树,右边右子树,然后递归此方法用于左右子树。 建树完成后后跟输出即可。 #include #include #include using namespace std; const int maxn=101; char a[maxn],b[maxn]; int lo原创 2013-04-14 19:39:37 · 578 阅读 · 0 评论 -
poj 2418 Hardwood Species
为了练习下字典树找的题目,用的是数组模拟的链表。 其实更简单的做法是用一次快排。 #include #include #include using namespace std; const int maxn=111111; char a[101]; double sum; struct { char data; int w[100]; int count; }tr[maxn原创 2013-04-14 19:39:35 · 589 阅读 · 0 评论 -
poj 1577 Falling Leaves
一个非常简单的二叉树的题目,就是考察简单构树,输出树的知识。 #include #include #include using namespace std; const int maxn=501; char a[maxn][maxn]; struct { int left,right; char data; }tr[10001]; int sum; int insert(cha原创 2013-04-14 19:39:33 · 504 阅读 · 0 评论 -
poj 1118 Lining Up 哈希
题意简单明了 给你n个二维坐标上的点。 求出一条直线上最多有几个点。 思路:很容易想到的是,枚举每两个点构成的直线,再判断别的点在不在上面。这样的时间复杂度很高,n^3 n=700,承受不了。 再深入点的想,可以先以一个点为中心,然后作出n-1条直线,再判断着n-1条直线是否共线。 判断n-1条直线是否共线的时候可以利用哈希的思想,先把横纵坐标的截距约分,斜率相原创 2013-04-14 19:39:46 · 540 阅读 · 0 评论