
数据结构
yun_weiguo
这个作者很懒,什么都没留下…
展开
-
poj 1611(并查集)
http://blog.youkuaiyun.com/dellaserss/article/details/7724401 这篇文章生动的讲解了并查集的概念及其应用,比较好理解。 在了解了并查集的概念以后,这道题目并不难做。 一开始我以为要将0 ,作为公共祖先的。走了弯路。 其实在并查集中,谁是公共祖先并不重要,只要他们在同一个集合里面,就ok了。于是乎 答案就是num[ find(0 ) ];484原创 2015-02-11 13:11:39 · 390 阅读 · 0 评论 -
poj 1182 (食物链)
这道题目的解法的(向量法) 大神不愧是大神,竟然想到这样的方法。设置一个数组pre ,保存 第i元素的直接前驱 pre【i】 同时设置一个数组offset,保存偏移量。 根据题目 若D=1,则表示X和Y是同类。 若D=2,则表示X吃Y。 那么d-1 表示偏移量 d=1时,d-1=0 ,表示同类 d=2时,d-1=1,表示x吃y。 d=0是,d-1+3=2 表示y吃x。有了这个假设原创 2015-02-11 20:43:38 · 485 阅读 · 0 评论 -
poj 2418(Trie树的应用)
Poj 2418 (Trie树的应用) 题目链接:http://poj.org/problem?id=2418 题目大意: 阔叶林是一种植物群落,其中的树木都具有叶子面子很大这一共同特征,多结坚果,冬天会进入休眠状态。美国的温度和气候创造了近百种阔叶物种,如橡树、枫树、樱桃树等等,阔叶树几乎占全美树种的40%左右。另一方面,针叶树(拉丁语称为”锥轴树“,因为其叶子是锥形针状的)在美原创 2015-02-11 00:02:07 · 873 阅读 · 0 评论 -
poj 1703
先贴代码,过后再贴上这类题目的总结 #include #include using namespace std; const int N=100010; int pre[N]; int r[N]; void make_set(int n) { for(int i=1;i<=n;i++) { pre[i]=i; r[i]=1; } } i原创 2015-02-12 18:37:27 · 385 阅读 · 0 评论 -
poj 2503 (trie)
poj 2503 题目链接poj 2503 这道题目套用模板就差不多可以得到答案了。 不过比较蛋疼的是输入。参考答案。 模板 include using namespace std; const int branchNum = 26; //声明常量 int i; struct Trie_node{ bool isStr; //记录此处是否构成一个原创 2015-02-13 21:43:05 · 286 阅读 · 0 评论 -
poj 3368(RMQ)
题目链接 http://poj.org/problem?id=3368 这道题目是RMQ(Range Minimum/Maximum Query) 问题变形,寻找在区间内出现的最大频次。 用到动态规划 dp[ i] [j] =max(dp [i ] [j-1] ,dp[i +i<<(j-1) ] [j-1] ;这道题的关键是如何构建一个dp数组。 我们可以将读取的数组num 变形。 所有相同原创 2015-02-13 14:18:18 · 375 阅读 · 0 评论 -
poj 1125 floyd
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int dis[101][101]; i原创 2015-03-11 21:33:45 · 361 阅读 · 0 评论 -
查找单链表的中间元素
ListNode* findMid(ListNode* head){ if(head==NULL) return NULL; // if(head->next==NULL) return head; ListNode *fast=head; ListNode *slow=head; while(fast原创 2016-02-13 10:04:43 · 408 阅读 · 0 评论