最短路径

#include <queue>
#define N 1000
typedef long long ll;
using namespace std;
int d[N], w[N][N], num[N];
ll dis[N];
queue<int> que;
void spfa(){
for (int i=;i<=n;i++) dis[i]=0x7fffff;
que.push();d[]=;dis[]=;
do{
int h=que.front();
d[h]=,que.pop();
for (int i=,v;i<=num[h];i++){
v = s[h][i];
if (dis[v] > dis[h] + w[h][s[v]]) {
dis[v] = dis[h] + w[h][v];
if (!d[v]) que.push(v),d[v]=;
}
}
}while(!que.empty())
}

spfa

void floyd(){
for (int k=;k<=n;k++) {
for (int i=;i<=n;i++) {
for (int j=;j<=n;j++){
if (a[i][j] > a[i][k]+a[k][j]){
a[i][j] = a[i][k]+a[k][j];
}
}
}
}
}

floyd

struct Node {
int id,dis;
bool operator < (const Node& rhs) const{
return dis>rhs.dis;
}
};
priority_queue<Node> q; int vis[N],dis[N];
void dijkstra(int s){
q.push((Node){s,});
while(!q.empty()) {
int u=q.top().id;
if(vis[u]) continue;
vis[u]=;
trav(u,i) {
int v=e[i].v;
if(dis[v]>dis[u]+e[i].w) {
dis[v]=dis[u]+e[i].w;
q.push((Node){v,dis[v]});
}
}
}
}

dijkstra

LCA

#define N 100005
#define D 21
struct Edge {
int v,nxt;
}e[M];
int en=,front[N];
void adde(int u,int v){
e[++en]=(Edge){v,front[u]}; front[u]=en;
} int fa[N][D],dep[N]; void dfs(int u){
for(int i=;i<D;i++)
fa[u][i]=fa[fa[u][i-]][i-];
trav(u,i) {
int v=e[i].v;
if(v!=fa[u][]) {
fa[v][]=u;
dep[v]=dep[u]+;
dfs(v);
}
}
}
int lca(int u,int v)
{
if(dep[u]<dep[v]) swap(u,v);
int t=dep[u]-dep[v];
for(int i=;i<D;i++)
if(t&(<<i)) u=fa[u][i];
if(u==v) return u;
for(int i=D-;i>=;i--)
if(fa[u][i]!=fa[v][i])
u=fa[u][i],v=fa[v][i];
return fa[u][];
}
int main(){
//input
while(t--){
scanf("%d%d", &u,&v);
printf("%d\n", dep[u]+dep[v]-*dep[lca(u,v)]);
}
}

倍增

RMQ

#include <iostream>
#include <cstdio>
#include <cmath>
#define maxn 50005
using namespace std;
int x, y, t, s, k;
int fa[maxn][], fi[maxn][], n, q, a[maxn];
void rmq(){
for (int i=;i<=n;i++) fa[i][] = a[i], fi[i][] = a[i];
for (int i=;i<=floor(log(n)/log());i++)
for (int j=;j<=n+-(<<i);j++){
fa[j][i] = max(fa[j][i-], fa[j+(<<i-)][i-]);
fi[j][i] = min(fi[j][i-], fi[j+(<<i-)][i-]);
}
}
int main(){
while(scanf("%d%d", &n,&q)!=EOF){
for (int i=;i<=n;i++) scanf("%d",&a[i]);
rmq();
for (int i=;i<=q;i++){
scanf("%d%d",&x,&y);
k = (int)(log(y-x+1.0)/log(2.0));
t=max(fa[x][k],fa[y-(<<k)+][k]),s=min(fi[x][k],fi[y-(<<k)+][k]);
printf("%d\n",t-s);
}
}
return ;
}

rmq

输入输出优化

void read(int& x) {
char c=getchar();
while(!isdigit(c)) c=getchar();
x=;
while(isdigit(c)) x=x*+c-'' , c=getchar();
}

read()

NOIP前模板整理的更多相关文章

  1. [OI]省选前模板整理

    省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: //组合数 //C(n,m) 在n个数中选m个的方案数 ll C[N][N]; void get_C(int ...

  2. SDOI2019 省选前模板整理

    目录 计算几何✔ DP 斜率优化✔ 四边形不等式✔ 轮廓线DP✘ 各种分治 CDQ分治✔ 点分治✔ 整体二分✔ 数据结构 线段树合并✔ 分块✔ K-D Tree LCT 可持久化Trie✔ Splay ...

  3. NOIP 前夕 模板整理

    归并排序: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ] ...

  4. NOIP前的一些计划

    一些想法 距离NOIP2018只剩下一个星期的时间了,通过这几天在长郡的考试,渐渐感觉还有好多东西自己还不够熟练,也有些东西到现在还不会,现将NOIP前的一些计划列在这里,希望能在考前把他们全部完成吧 ...

  5. Noip前的大抱佛脚----Noip真题复习

    Noip前的大抱佛脚----Noip真题复习 Tags: Noip前的大抱佛脚 Noip2010 题目不难,但是三个半小时的话要写四道题还是需要码力,不过按照现在的实力应该不出意外可以AK的. 机器翻 ...

  6. Noip前的大抱佛脚----字符串

    目录 字符串 经验 用FFT求解字符串匹配问题 两(多)串DP时状态合并 最长公共子序列转LIS 位运算最大值 挂链哈希 哈希处理回文串 树哈希 字符串模板库 KMP 最小循环表示 Mancher A ...

  7. Noip前的大抱佛脚----数论

    目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔 ...

  8. Noip前的大抱佛脚----图论

    目录 图论 知识点 二分图相关 DFS找环 并查集维护二分图 二分图匹配的不可行边 最小生成树相关 最短路树 最短路相关 负环 多源最短路 差分约束系统 01最短路 k短路 网络流 zkw费用流 做题 ...

  9. Noip前的大抱佛脚----数据结构

    目录 数据结构 知识点及其应用 线段树 神奇标记 标记不下放 并查集 维护二分图 维护后继位置 堆 可并堆的可持久化 dsu on tree 方式&原理 适用范围 单调队列 尺取合法区间 模板 ...

随机推荐

  1. hdu Repositoryti

    算法:字典树 题意:给你一些字符串,然后会有一些询问,输出询问在给定的字符串中出现了多少次(字串也是): 例如 add,子串有:a ,d,d,ad ,dd,add:你会发现子串d出现了两次,那么怎么办 ...

  2. POJ 3352 无向图边双连通分量,缩点,无重边

    为什么写这道题还是因为昨天多校的第二题,是道图论,HDU 4612. 当时拿到题目的时候就知道是道模版题,但是苦于图论太弱.模版都太水,居然找不到. 虽然比赛的时候最后水过了,但是那个模版看的还是一知 ...

  3. PHP & JAVA 实现 PBKDF2 加密算法

    PHP代码: /** * PBKDF2 加密函数 * 参考标准 * @link https://www.ietf.org/rfc/rfc2898.txt * * php官方函数将在php5.5发布 * ...

  4. oracle 数据库用户登录相关

    oracle 数据库的安装 : 一: 安装的时候可以设定解锁的用户  一般默认是解锁soctt用户和hr用户  : oracle的超级用户是sysdba这个用户在安装的时候也可以设置密码,一 般自己使 ...

  5. [FML]学习笔记三 Rademacher Complexity

    该章节证明用到的不等式:Hoeffding不等式,McDiarmid不等式以及jensen不等式 Hoeffding's: McDiarmid不等式是Hoeffding不等式的一个推广,用f(S)代替 ...

  6. 第一次碰到try-except(core python programming 2nd Edition 3.6)

    # coding: utf-8 # 使用Windows系统,首行'#!/usr/bin/env Pyton'无用,全部改为'# coding: utf-8' 'readtextfile.py -- r ...

  7. python functools.wraps装饰器模块

    # -*-coding=utf-8 -*-#实现一个函数执行后计算执行时间的功能 __author__ = 'piay' import time, functools def foo(): ''' 定 ...

  8. VMware网络配置 实现与物理机互访

    虚拟机和物理主机互访,两台机器可以互访并可以被局域网内其他机器访问,可以ping通并可以访问网站. 这几天正好有空搞个虚拟机,并装了不同系统,以备不同部署环境需要.明明是搞编程的,却不得不学各种知识, ...

  9. asp.net 中如何判断字符串中有几个逗号 (asp也通用)

    如: 字符串 a="1,2,3"; 怎样判断a 中的逗号 有几个 len(a)-len(replace(a,",",""))

  10. 编译型/解释型语言,什么时候用shell

    编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(obje ...