自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学无止境

冲啊!!

  • 博客(12)
  • 收藏
  • 关注

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

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

2015-07-17 15:58:09 1880

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

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

2015-07-16 19:37:36 1593

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

题目链接:http://codeforces.com/problemset/problem/235/A题目意思:找出三个小于 n 的数,这三个数组成的 LCM(最小公倍数)是最大的。首先,这三个数应该是互质的。根据 LCM 的公式 (a * b) / gcd(a,b),gcd(a,b)为1时,即互质,LCM 值是最大的。然后开始找规律:如果是奇数的话(n=7),那么

2015-07-16 11:32:34 1713

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

线段树入门题,单点更新。每个结点存储两个孩子最大者即可。//线段树单点更新,完全二叉树解法#include #define MAXN 200000#define lson rt<<1#define rson rt<<1|1int top[MAXN * 4 + 100];int students[MAXN + 10];int k;void pushup(int rt){

2015-07-15 10:38:30 1529

原创 HDU 1166 解题报告 线段树

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

2015-07-14 23:25:01 1558

原创 POJ 2846 解题报告 Trie 树变型

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

2015-07-05 12:20:30 1487

原创 POJ 1056 解题报告 Trie 树

这题跟poj 3630一样,也是找前缀,数据更弱。代码:#include #include #define maxn 10#define wlen 10 //单词长度#define character '0'#define size 2 typedef struct node { int cnt; //记录访问量 int child_num; //记录孩子个数

2015-07-05 00:05:55 1539

原创 POJ 3630 解题报告 Trie 树

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

2015-07-04 21:31:21 1514

原创 POJ 2530 解题报告 trie 树

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

2015-07-04 17:29:27 1579

原创 POJ 2001 解题报告 trie 树

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

2015-07-04 11:11:09 1464

原创 HDU 3294 解题报告 Manacher 算法

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

2015-07-03 16:10:09 1602

原创 HDU 1280 解题报告 第 K 大

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

2015-07-01 07:30:09 1378

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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