学无止境

冲啊!!

POJ 3264 解题报告 RMQ 问题 ST算法

这道题可以用线段树、树状数组解决,也可以用 ST 算法。 题目意思很明显,最大值-最小值就是结果。 第一道用 ST 解决的题目。 //ST 算法 #include #include #define MAXN (50000 + 10) int cows[MAXN]; int s...

2015-07-17 15:58:09

阅读数:1500

评论数:0

HDU 1394 解题报告 线段树 单点更新

求逆序对常用方法是归并排序,当然线段树也可以解决,但是空间复杂度就会更大。 这题两者都可用。因为只需要第一次求出逆序对数即可,后面的排列都可以推出来。 具体怎么推? 假设 sum 是第一次求出来的逆序对。 第一次排列是 1 3 6 9 0 8 5 7 4 2 那么,第二次就会是 3 6 ...

2015-07-16 19:37:36

阅读数:1313

评论数:0

Codeforces Round #146 (Div. 1) LCM Challenge 解题报告 数论 找规律

题目链接:http://codeforces.com/problemset/problem/235/A 题目意思:找出三个小于 n 的数,这三个数组成的 LCM(最小公倍数)是最大的。 首先,这三个数应该是互质的。根据 LCM 的公式 (a * b) / gcd(a,b),gcd(a,...

2015-07-16 11:32:34

阅读数:1259

评论数:0

HDU 1754 解题报告 线段树 单点更新

线段树入门题,单点更新。每个结点存储两个孩子最大者即可。 //线段树单点更新,完全二叉树解法 #include #define MAXN 200000 #define lson rt<<1 #define rson rt<<1|1 int top[MAXN * 4 ...

2015-07-15 10:38:30

阅读数:1291

评论数:0

HDU 1166 解题报告 线段树

这是一题线段树的入门题,主要是点更新。 编码用的是完全二叉树,即数组,用链表会超时。其次用 p #include #define maxn 50000 //4倍大小是一个合适的值 int ns[maxn * 4 + 100]; int nums[maxn]; //完全二叉树存储区间树 ...

2015-07-14 23:25:01

阅读数:1322

评论数:0

POJ 2846 解题报告 Trie 树变型

题目意思: 给一个待查询的字符串,输出包含这个字符串(作为子串)的个数。 数据量比较大,用 KMP 会超时。可以用 Trie 树,不过需要变型。 正常的 Trie 树是以前缀开始的。在这题需要改成以后缀开始,后缀指以字符串每个字符作为开始直至结尾。例如字符串 abcdae ,各个后缀...

2015-07-05 12:20:30

阅读数:1309

评论数:0

POJ 1056 解题报告 Trie 树

这题跟poj 3630一样,也是找前缀,数据更弱。 代码: #include #include #define maxn 10 #define wlen 10 //单词长度 #define character '0' #define size 2 typedef struct...

2015-07-05 00:05:55

阅读数:1247

评论数:0

POJ 3630 解题报告 Trie 树

题目意思: 如果某个 number 是另一个 number 的前缀,则 输出 NO。 可以用 trie 树,这题有多组数据,要注意清零。 代码: #include #include #define maxn 10000 #define wlen 10 //number长度 #...

2015-07-04 21:31:21

阅读数:1262

评论数:0

POJ 2530 解题报告 trie 树

题目意思: 给含有两个单词的映射关系的字典,然后查询接下来每个输入字符串的对应字符串。 这题可以用 hash 或者 trie 树,都是入门级别。 代码: //这题是 trie 树 和 哈希 的入门题。 #include #include #include #inclu...

2015-07-04 17:29:27

阅读数:1324

评论数:0

POJ 2001 解题报告 trie 树

题目意思: 就是找能标识每个字符串自身的最短前缀。可以用 Trie 树解决,只需要记录每个结点的访问次数,那么每个字符串的最短前缀,要么就是到访问次数为1的那个字符结点为止的字符串,要么就是遍历完毕还没有遇到访问量为1的字符结点时,最短前缀就是自身。 代码:POJ 2001 #i...

2015-07-04 11:11:09

阅读数:1194

评论数:0

HDU 3294 解题报告 Manacher 算法

题目意思: 对输入的字符串做两步处理,第一步先按要求转换。第二步在转换后的字符串中找出最长的回文子串。 最长回文子串可以用 Manacher 算法解决。参考这篇

2015-07-03 16:10:09

阅读数:1322

评论数:0

HDU 1280 解题报告 第 K 大

求第 K 大的一道题,题目意思很直白,数据也比较水,没有负数。所以可以直接用计数排序解决。 代码: #include #define MMAX 5003 #define NMAX 3000 int count[MMAX * 2]; int N[NMAX]; int main() ...

2015-07-01 07:30:09

阅读数:1202

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭