随笔分类 -  HDOJ

1 2 下一页

HDU5071 - Chat(STL模拟)
摘要:题目描述略。。。题解现场赛的时候真是脑残。。。用splay去写。。写完发现调试不出来。。。然后才发现数据范围才5000。。。不过那时候只有40分钟了。。用数组模拟了速度敲了一发。写完只剩10几分钟了。。。最终也没调试出来。。赛后想了想发现此题用deque真是巨好写。。代码:bye是个坑。必须得在队列... 阅读全文

posted @ 2014-11-06 14:28 仗剑奔走天涯 阅读(357) 评论(0) 推荐(0)

HDU4276 - The Ghost Blows Light(树形DP)
摘要:题目大意 给定一棵n个结点的树,每个结点上有一定数量的treasure,经过每条边需要花一定的时间,要求你从结点1出发,在不超过时间T的情况下,最多能够获得的treasure是多少,并且要求结束于结点n 题解 本题主要的困难是如何恰好结束于结点n。 先进行一次dfs求出从结点1到结点n的最短时间s(假设此条路径为a),如果s比T还大,不能走完,输出-1。否则的话继续处理,由于路径a是最短路径,因此... 阅读全文

posted @ 2013-11-21 00:42 仗剑奔走天涯 阅读(327) 评论(0) 推荐(0)

HDU4003 - Find Metal Mineral(树形DP)
摘要:题目大意 给定一棵n个结点的树,每条边有一个花费,有k个机器人从点s出发,让它们遍历所有的边,最小花费是多少? 题解 完全没思路。。。。看了他的题解再写的~~ 代码: #include #include #include #include using namespace std;#define MAXN 10005struct node{ int v,next,w;};node edge[2... 阅读全文

posted @ 2013-11-17 15:58 仗剑奔走天涯 阅读(149) 评论(0) 推荐(0)

HDU2196 - Computer(树形DP)
摘要:题目大意 给定一颗n个结点的树,编号为1~n,要求你求出每个结点能到达的最长路径 题解 用动态规划解决的~~~~把1 当成树根,这样就转换成有根树了。我们可以发现,对于每个结点的最长路,要么是从子树得到要么是从父亲得到我们用数组f,g,h分别记录从当前结点到子树能够获得的最大值和第二大值以及从当前结点到祖先能够获得的最大值。我们先进行一次dfs,把f和g值求出来,然后再进行一次dfs求出h的值来,... 阅读全文

posted @ 2013-11-11 01:00 仗剑奔走天涯 阅读(223) 评论(0) 推荐(0)

HDU4607 - Park Visit(树的直径)
摘要:题目大意 给定一颗树,要求走过其中连续的k个点,使得步数最少 题解 每条边要么经过两次,要么一次,因为我们的目标就是使得走一次的边尽量的多,这样就转换成求树的直径了,求树的直径我用的是两次dfs,先随便从一个点开始dfs,找出以这个点为根距离它最远的结点,假设为s,然后再从s结点进行一个dfs,距离s结点最远的点与s点的距离就是树的直径(假设为d),最后判断一下k和树的直径的大小,如果k-1小于树... 阅读全文

posted @ 2013-11-10 23:43 仗剑奔走天涯 阅读(238) 评论(0) 推荐(0)

HDU1520 - Anniversary party(树形DP)
摘要:题目大意给定一颗树,每个结点有一个分值,父亲结点和子结点不能同时选,问你最多能获得的分值是多少?题解第一次独立做出树形DP来(虽然很水),撒花庆祝一下,哈哈~~~话说树形DP和记忆化好相似的说~~~(似乎没区别?)。用dp[root][0]表示以root为根的子树不选root能够获得的最大值,dp[root][0]=max(dp[son(root)][1],dp[son(root)][0]),同理dp[root][1]表示以root为根的子树选择root能够获得的最大值,只需把root的所有子节点形成的子树并且不选子节点能够获得的最大值全部加起来就是dp[root][1],即dp[root][ 阅读全文

posted @ 2013-11-04 14:45 仗剑奔走天涯 阅读(195) 评论(0) 推荐(0)

HDU3727 - Jewel(主席树)
摘要:题目大意 对一个序列进行以下四种操作: 1、Insert x 在序列尾部插入x 2、Query_1 s t k 查询区间[s,t]的第k小 3、Query_2 x 查询x的在序列中排名 4、Query_3 k 查询序列中的第k小 题解 第一个和第二个显然是主席树能够实现的功能,第三四个操作用vector+lower_bound就可以实现,妈蛋,写完交上去一直WA,fuck,然后把存储操作类型的每个... 阅读全文

posted @ 2013-10-03 22:21 仗剑奔走天涯 阅读(334) 评论(0) 推荐(0)

HDU4417 - Super Mario(主席树)
摘要:题目大意 给定一个数列,每次要求你查询区间[L,R]内不超过K的数的数量 题解 和静态的区间第K大差不多,这题是#include #include #include using namespace std;#define MAXN 100005#define lson l,m,ls[s]#define rson m+1,r,rs[s]int ls[20*MAXN],rs[20*MAXN];int ... 阅读全文

posted @ 2013-10-03 11:08 仗剑奔走天涯 阅读(312) 评论(1) 推荐(0)

POJ2104&&HDU2665(静态区间第K小)
摘要:题目大意 给定一个有N个数字的序列,然后又m个查询,形式如下: l r k 要求你返回区间[l,r]第k小的数是哪个 题解 终于弄懂主席树是个啥东西了,O(∩_∩)O~~,这题正是主席树的裸题,主席树具体是啥东西,可以去看CLJ的论文~~~~ 代码是学习haha593572013大神的~~~ 代码: #include #include #include #include using namespa... 阅读全文

posted @ 2013-10-01 14:10 仗剑奔走天涯 阅读(241) 评论(0) 推荐(0)

HDU4763 - Theme Section(KMP)
摘要:题目描述 给定一个字符串S,要求你找到一个最长的子串,它既是S的前缀,也是S的后缀,并且在S的内部也出现过(非端点) 题解 CF原题不解释。。。。http://codeforces.com/problemset/problem/126/B KMP的失配函数fail[i]的值就是s[0..i]的最长前缀且是后缀的长度~~~,因此我们从S的末尾位置开始沿着失配函数跑即可,对于当前fail[i],判断前... 阅读全文

posted @ 2013-09-28 18:40 仗剑奔走天涯 阅读(1273) 评论(0) 推荐(0)

HDU3695 - Computer Virus on Planet Pandora(AC自动机)
摘要:题目大意 给定一个文本串T,然后给定n个模式串,问有多少个模式串在文本串中出现,正反都可以 题解 建立好自动机后。把文本串T正反各匹配一次,刚开始一直TLE。。。后面找到原因是重复的子串很多以及有模式串是另外一个模式串的子串这种情况也很多~~~,所以我们用数组标记一下就好了~~~改了交上去之后是WA,最后发现时visit数组初始化错地方了。。。。 代码: #include #include #in... 阅读全文

posted @ 2013-09-27 14:53 仗剑奔走天涯 阅读(342) 评论(0) 推荐(0)

HDU2222 - Keywords Search(AC自动机)
摘要:题目大意 给定n个字符串和一个文本串T,问你有多少个字符串在文本串中出现 题解 AC自动机裸题。。。唯一要注意的是字符串有重复。。。 代码: #include #include #include #include #include #include using namespace std;const int maxnode=500005;const int sigma_size=26;int an... 阅读全文

posted @ 2013-09-23 20:39 仗剑奔走天涯 阅读(217) 评论(0) 推荐(0)

HDU4745 - Two Rabbits(区间DP)
摘要:题目大意给出一个长度为n的环状序列,两只兔子各自从一个点出发,一个顺时针跳,一个逆时针跳,每个时刻都要求两只兔子所在的数字是相同的,兔子最多跳一个圈~~~问兔子们最多能跳多少次题解一个逆时针跳,一个顺时针跳,经过的数字刚好组成了一个回文串,所以题目的要求就是求最长的回文,不过序列是环状的!怎么办?我... 阅读全文

posted @ 2013-09-17 15:04 仗剑奔走天涯 阅读(1040) 评论(2) 推荐(0)

HDU4737 - A Bit Fun(线段树)
摘要:题目大意 给你一个数组a,定义f(i,j)=ai|ai+1|ai+2|⋯|aj ,|为or运算,求满足f(i,j)#include#include#include#includeusing namespace std;#define MAXN 100005#define lson l,m,s>1; build(lson); build(rson); PushUp(s);}int ... 阅读全文

posted @ 2013-09-16 20:21 仗剑奔走天涯 阅读(203) 评论(0) 推荐(0)

HDU1247 - Hat’s Words(Trie树)
摘要:题目大意 给定一些单词,要求你把所有的帽子单词找出来,如果某个单词恰好由另外两个单词连接而成,那么它就是帽子单词 题解 先把所有单词插入到Trie树,然后判断每个单词是不是帽子单词,做法就是:对于第i个单词,假设为s[0..n],枚举中间节点j,在Trie树上查询s[0..j]和s[j+1,…n]两个单词是否存在,存在的话说明它就是帽子词…WA了几发,找到帽子单词的时候忘记break了。。。 代码... 阅读全文

posted @ 2013-09-13 15:38 仗剑奔走天涯 阅读(218) 评论(0) 推荐(0)

HDU1671 - Phone List(Trie树)
摘要:题目大意 给定一些电话号码,判断是否有电话号码是其他电话号码的前缀 题解 裸Trie树嘛~~~~只需要一个插入过程即可,假设X是Y的前缀,在插入的过程中有两种情况,X在Y之前插入,那么在插入Y的时候经过了X的尾结点,插入的过程中判断下即可,还有一种情况就是X在Y之后插入,那么插入X的时候肯定不需要插入新结点~~~也记录一下即可~~~~~被坑了好多次,先是没有考虑第二种情况,改了之后RE,然后脑残的... 阅读全文

posted @ 2013-09-13 09:56 仗剑奔走天涯 阅读(199) 评论(0) 推荐(0)

HDU1251 - 统计难题(Trie树)
摘要:题目大意 Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). 题解 把单词插入到Trie树中,Trie树的每个结点记录以此结点结尾的单词前缀出现的次数,每次把进行单词插入的时候把沿途经过的结点+1即可 代码: #include #include #include #include... 阅读全文

posted @ 2013-09-12 21:43 仗剑奔走天涯 阅读(195) 评论(0) 推荐(0)

HDU1075 - What Are You Talking About(Trie树)
摘要:题目大意 给定一些火星文单词以及对应的英语单词,然后给你一些火星文,要求你翻译成对应的英文 题解 第一次写Trie树! 把所有火星文单词插入到Trie树中,并且每个火星文单词结尾的节点记录相应英文单词的位置,然后进行查询即可~~~~ 代码: #include #include #include #include #include #include using namespace std;const... 阅读全文

posted @ 2013-09-12 20:21 仗剑奔走天涯 阅读(241) 评论(0) 推荐(0)

HDU4614 - Vases and Flowers(二分+线段树)
摘要:题目大意 给定一个区间[0,N-1],初始时每个位置上的数字都是0,可以对其进行以下两种操作: 1、在位置A开始寻找F(如果没有这么多,则有多少个就找多少个)个数值为0的位置,把位置上的数修改为1,并返回第一个和最后一个修改的位置 2、查询区间[a,b]内1的个数,并把区间[a,b]每个位置上的数修改为0 题解 基础的线段树~~~第一个操作可以用二分求出始末位置,然后进行区间修改,第二问就是区间查... 阅读全文

posted @ 2013-07-25 19:57 仗剑奔走天涯 阅读(337) 评论(0) 推荐(0)

HDU1540 - Tunnel Warfare(单点修改&&区间合并)
摘要:题目大意 给定一个长度为n的全部为1的序列,可以对其进行以下三种操作: 1、D x 把第x个元素修改为02、Q x 查询包含第x个元素的全部为1的最长连续序列长度3、R: 把最后一次修改的元素还原为1 题解 比较水的区间合并问题~~O(∩_∩)O~~。维护两个域即可,即包含节点左端的全部为1的最长连续序列长度lsum,包含节点右端的全部为1的最长连续序列长度rsum,对于某个查询,假设m为节点的中... 阅读全文

posted @ 2013-06-03 01:56 仗剑奔走天涯 阅读(246) 评论(0) 推荐(0)

1 2 下一页

导航