优先队列 + 并查集 + 字典树 + 欧拉回路 + 树状数组 + 线段树 + 线段树点更新 + KMP +AC自动机 + 扫描线
这里给出基本思想和实现代码 .
优先队列 :
曾经做过的一道例题 坦克大战
struct node
{
int x,y,step;
friend bool operator <(node s1,node s2) // 定义结构体 的时候 这个 就是 用于 优先队列的 基准排序
{
return s1.step>s2.step; // 步数小的 在上 为小顶堆
}
};
priority_queue<node>Q; // 优先队列的结构体定义说明和 生命方法
并查集 :
曾经做过的一道例题 七桥问题
int findx(int x)
{
if(x!=parent[x])
parent[x]=findx(parent[x]); // 回溯的时候压缩路径 这个是 压缩路径的精髓
return parent[x]; // 实际上我也看不出来 到底哪里好 ......
}
son :
parent :
int find(int x)
{
int k,j,r;
r = x;
while(r != parent[r]) //
r = parent[r];
k = x;
while(k != r)
{
j = parent[k];
parent[k] = r;
k = j;
}
return r;
}
字典树
曾经做过的一道题 http://www.cnblogs.com/A-FM/p/5181956.html
构造一个结构体 , 该结构体 应该有 所有指向下一排所有元素的指针域 , 还应该有 该节点 必要的信息
struct node
{
int number; // 该节点作为 尾节点的次数
node next[]; // 和 剩下的 指针域
};
int Insert(char *a,node *t)
{
node *p,*q;
int id,i,j,l;
p=t; // 已经开了空间
l=strlen(a);
for(i=;i<l;i++)
{
id=a[i]-'a';
if(p->next[id]==NULL) //如果 没有 这个线段的话
{
q=(node *)malloc(sizeof(node));
q->sum=;
for(j=;j<;j++)
q->next[j]=NULL;
p->next[id]=q; // 建立线段 . 线段 的 另一端 已经设置好了.
}
p=p->next[id];
}
(p->sum)++;
return p->sum;
}
欧拉回路 :
无向图存在欧拉通路 , 当且仅当改图为连通图 , 而且仅有 0 或 2 个奇数度节点 ( 不可能是 1 ) , 当有0个奇数度节点的时候为回路 , 有两个的是个为通路 .
有向图存在欧拉回路 , 当且仅当该图联通 , 且每个节点的入度 等于出度 .
有向图存在欧拉通路 , 当且仅当该图连同 除了两个节点以外的的每个节点的入度等于出度 , 在这两个节点中一个入度比出度大一 , 一个出度比入度大一(起点) .
可以用 并查集检查是否为 图是否连同
KMP算法( 俗称看毛片算法 ) :
优先队列 + 并查集 + 字典树 + 欧拉回路 + 树状数组 + 线段树 + 线段树点更新 + KMP +AC自动机 + 扫描线的更多相关文章
- POJ 2513 Colored Sticks (欧拉回路+并查集+字典树)
题目链接 Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with ...
- POJ - 2513 Colored Sticks(欧拉通路+并查集+字典树)
https://vjudge.net/problem/POJ-2513 题解转载自:優YoU http://user.qzone.qq.com/289065406/blog/1304742541 题 ...
- POJ-2513 Colored Sticks---欧拉回路+并查集+字典树
题目链接: https://vjudge.net/problem/POJ-2513 题目大意: 给一些木棍,两端都有颜色,只有两根对应的端点颜色相同才能相接,问能不能把它们接成一根木棍 解题思路: 题 ...
- [POJ1456]Supermarket(贪心 + 优先队列 || 并查集)
传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <i ...
- POJ 1988 Cube stacking【并查集高级应用+妙用deep数组】
Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes ...
- [bzoj3673][可持久化并查集 by zky] (rope(可持久化数组)+并查集=可持久化并查集)
Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...
- HDU 1166 敌兵布阵 (数状数组,或线段树)
题意:... 析:可以直接用数状数组进行模拟,也可以用线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&quo ...
- 【BZOJ3110】【整体二分+树状数组区间修改/线段树】K大数查询
Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位 ...
- 树状数组-HDU1541-Stars一维树状数组 POJ1195-Mobile phones-二维树状数组
树状数组,学长很早之前讲过,最近才重视起来,enmmmm... 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据 ...
随机推荐
- u-boot常用命令
查看ip地址等信息 print tftp相关 设置ip地址 set ipaddr 192.168.1.5 设置tftp所在电脑ip set serverip 192.168.1.8 最后必须输入sav ...
- S3C2440中断
韦东山老师一期中断课程学习: 总结: 程序启动后工作流程,程序从0地址开始执行Reset --> 重定位 -->ldr pc,=main [绝对跳转到SDRAM中执行main()函数] ...
- Linux内核系统调用处理过程
原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 学号末三位:168 下载并编译Linux5.0 xz -d linux-.tar.xz . ...
- java静态变量、实例变量和局部变
实例变量又称成员变量: 1⃣️成员变量定义在类中,在整个类中都可以被访问 2⃣️成员变量随着对象的建立而建立,随对象的消失而消失,存在于对象所在的对内存中 3⃣️成员变量有默认初始值 局部变量: 1⃣ ...
- 解决windows64位系统上安装mysql-python报错
解决windows64位系统上安装mysql-python报错 2018年03月12日 13:08:24 一个CD包 阅读数:1231 版权声明:本文为博主原创文章,未经博主允许不得转载. ht ...
- Uedior上传大文件超时报错
出错原因: 1.php超时等待时间太短 2.uedior中设置了请求超时,提示信息: 上传失败,请重试 先解决第一个问题: 设置php.ini中的max_execution_time 为0 (意思是h ...
- Luogu P2298 Mzc和男家丁的游戏
Mzc和男家丁的游戏 题目背景 mzc与djn的第二弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道).他把她们召集在了一起,他们决定玩捉迷藏.现在mzc要来寻找他的男家 ...
- centos 7中 yum安装jdk
yum安装jdk的好处就是不需要手动再配置环境变量,所有的变量都是自动生成 1.检查系统是否存在jdk,存在删除原版jdk 如果没有信息输出,则表示没有安装jdk rpm -qa |grep java ...
- (蓝桥)2017C/C++A组第一题迷宫
#include<iostream> #include<memory.h> using namespace std; char mi[10][10] ; int visited ...
- BFOA
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> ...