
------数据结构------
文章平均质量分 70
M_GSir
这个作者很懒,什么都没留下…
展开
-
字典树基础篇一(hdu 1251)
题目:hdu 1251题意:给定一堆单词,再给定一些前缀用于查询,每次输入一个前缀,就输出单词中以这为前缀的单词数题解:字典树基础代码:#include#include#include#include#includeusing namespace std;char s[15];struct Trie//字典树{ int cont; Trie *原创 2016-11-12 22:08:35 · 523 阅读 · 0 评论 -
排序算法汇总三------选择类排序法
堆排序:void sift(int *d,int r,int length){ int now=d[r]; int i=r,j=2*i; bool finish=false; while(j<=length && !finish) { if(j<length && d[j]<d[j+1]) {j=j+1;} if(now原创 2017-02-01 23:02:33 · 554 阅读 · 0 评论 -
二维树状数组(poj 1195)
题目:http://poj.org/problem?id=1195题意:给出一个全0的矩阵,然后一些操作0 S:初始化矩阵,维数是S*S,值全为0,这个操作只有最开始出现一次1 X Y A:对于矩阵的X,Y坐标增加A2 L B R T:询问(L,B)到(R,T)区间内值的总和3:结束对这个矩阵的操作题解:利用二维树状数组,利用logn复杂度对原创 2017-02-07 22:21:07 · 563 阅读 · 0 评论 -
排序算法汇总一------插入类算法
直接插入算法:void InsSort(int *d,int length){ for(int i=1;i<length;i++) { int next=i-1; int nowdata=d[i]; while(nowdata>d[next]&&next>=0) { d[next+1]=d原创 2017-01-28 21:42:01 · 392 阅读 · 0 评论 -
AC自动机 (hdu acm 2222)
解释详见:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html#include#include#include#include#include#include#define N 500010using namespace std;struct Node{ Node *fail;转载 2016-07-30 21:19:09 · 445 阅读 · 0 评论 -
离线记录+树状数组(hdu 5869 统计任意区间的不同gcd值)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5869题意:给定一个数组,给出范围[l,r],求在这范围内的不同gcd值得个数(连续下标)题解:用o(nlogA)计算出gcd值并进行记录,每次固定右值,枚举前一个得出的gcd值,记录左边的坐标和不同gcd值,然后用树状数组维护,具体见注释代码:#include#include#in原创 2016-09-12 23:26:17 · 593 阅读 · 0 评论 -
树状数组+dfs(hdu 5877)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5877题意:给定一棵树(带根),定义weak pair 为1.u为v的祖先,2.a(u)*a(v)题解:先用map对a进行离散化处理,因为总共10W的点,但数据表示范围很大,树状数组完全存不下,所以要离散化,然后找出根结点,从根结点遍历子节点,每次遍历的时候先统计之前加入的满足a(u)原创 2016-09-16 11:30:38 · 448 阅读 · 0 评论 -
树状数组(acm hdu 5792)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5792题意:给你一串数组A,要求a≠b≠c≠d,1≤ab≤n,1≤cd≤n,AaAb,Ac>Ada≠b≠c≠d,AaAb,Ac>Ad题解:先只考虑AaAb,Ac>Ad的情况,然后一个一个排除掉a==c a==d b==c b==d 这四种情况要建立4个数组,left_原创 2016-08-03 22:38:54 · 478 阅读 · 0 评论 -
AC自动机(hdu 2896 hdu 3065)
题目:hdu 2896题意:中文题目,可自己理解,简单说就是给定一些子字符串,再给出一些母字符串,找出母字符串中包含哪些子字符串题解:AC自动机模板题代码:动态申请:#include#include#include#include#include#include#define MAX 59999using namespace std;struct Node{原创 2016-09-02 10:05:47 · 345 阅读 · 0 评论 -
树状数组+离散化(hdu 5862)
题目:hdu 5862题意:给定几个线段,求有多少个线段的交点,输入解释:第一行表示测试数据,第二行表示有多少条线段,第三行开始是每个线段的两点坐标题解:树状数组+离散化(Y坐标太大,要压缩存储空间,采用离散化),先用map对y坐标进行离散化,再将与x轴平行的线段拆成两个点,一个是记录起点x坐标,一个记录末点x坐标+1(这样就可保证末点相交被记录进去,方便),与y轴平行的只要记录x坐标和两原创 2016-09-02 10:23:53 · 499 阅读 · 0 评论 -
排序算法汇总二------交换类算法
冒泡排序:void BubbleSort(int *d,int length){ bool finish=false; for(int i=1;i<=length-1&&!finish;i++) { finish=true; for(int j=0;j<length-i;j++) { if(d[j原创 2017-02-01 22:59:15 · 363 阅读 · 0 评论