CSP-S 2019图论总结

一、最短路问题

模板


Floyd算法

void floyd()
{
memset(map,0x3f,sizeof(map));
for(int i=1;i<=n;i++)
map[i][i]=0;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
}

Dijkstra算法

const int INF=1e9;
void dijkstra(int s)
{
int temp,k,y;
memset(dist,0x3f,sizeof(dist));
memset(v,0,sizeof(v));
dist[s]=0;
for(int i=1;i<=n;i++)
{
temp=INF;
for(int j=1;j<=n;j++)
if(dist[j]<temp && !v[j])
k=j,temp=dist[j];
v[k]=1;
for(int j=head[i];j;j=nxt[j])
{
y=to[i];
if(dist[y]>dist[k]+val[j])
dist[y]=dist[k]+val[j];
}
}
}

SPFA算法

void spfa(int s)
{
memset(dist,0x3f,sizeof(dist));
memset(v,0,sizeof(v));
queue<int> q;
q.push(s);v[s]=1;dist[s]=0;
while(!q.empty())
{
int x=q.front();
v[x]=0;q.pop();
for(int i=head[x];i;i=nxt[i])
{
int y=to[i];
if(dist[y]>dist[x]+val[i])
{
dist[y]=dist[x]+val[i];
if(!v[y])
v[y]=1,q.push(y);
}
}
}
}

堆优化Dijkstra算法

void dijkstra()
{
memset(dist,0x3f,sizeof(dist));
dist[0]=0;
q.push(make_pair(0,0));
while(!q.empty())
{
int x=q.top().second;
if(v[x])
{
q.pop();
continue;
}
x=q.top().second;q.pop();v[x]=1;
for(int i=head[x];i;i=nxt[i])
{
int y=to[i];
if(dist[y]>dist[x]+val[i])
dist[y]=dist[x]+val[i],q.push(make_pair(-dist[y],y));
}
}
}

SPFA的优化

模板详见:

关于SPFA的优化方式


常见问题及解决方法

1、各种最短路算法的选择及应用(分析复杂度,拍熟模板、弄清楚这几种算法不能解决什么问题)

2、依据题意灵活建图(例题:VIJOS-P1423 最佳路线

3、反向建图及反向建图的应用(例题:[NOIP2009]最优贸易 T3

4、第K短路问题

5、最短路和DP的结合(例题:[ZJOI2006]物流运输

6、最短路的优化(例题:[USACO10DEC]苹果交货Apple Delivery

7、多重最短路问题(例题:[USACO14OPEN]GPS的决斗Dueling GPS's

8、对偶边的处理

9、最短路路径记录


二、生成树问题

模板


Kruskal算法

void kruskal()
{
sort(e+1,e+m+1,cmp);
for(int i=1;i<=m;i++)
{
int fx=find(e[i].x);
int fy=find(e[i].y);
if(fx!=fy)
{
fa[fx]=fy;
cnt++;
}
if(cnt==n-1)
return;
}
}

Prim算法

void prim()
{
memset(f,0x3f,sizeof(f));
memset(v,0,sizeof(v));
f[1]=0;v[1]=1;
for(int i=1;i<=n;i++)
{
int temp=1<<30,k;
for(int j=1;j<=n;j++)
if(!v[j]&&f[j]<temp)
temp=f[j],k=j;
v[k]=1;
ans+=f[k];
for(int j=head[k];j;j=nxt[j])
{
int y=to[j];
if(val[j] && !v[j] && f[j]>val[j])
f[j]=val[j];
}
}
}

常见问题及解决方法

1、多重生成树(例题:JDOJ 1044 Span[HNOI2006]公路修建问题

2、树的拆分(例题:VIJOS-P1234 口袋的天空

3、加边成树问题(例题:[USACO07DEC]道路建设Building Roads


三、并查集

常见问题及解决方法

1、并查集对环的处理

2、并查集维护对立性(例题:[BOI2003]团伙

3、带权并查集(例题:[NOI2002]银河英雄传说

4、种类并查集(例题:[NOI2001]食物链


四、拓扑排序

模板:


void topsort()
{
while(!q.empty())
{
int x=q.front();
q.pop();
for(int i=head[x];i;i=nxt[i])
{
int y=to[i];
if(y==fa[x])
continue;
out_degree[y]--;
if(!out_degree[y])
q.push(y);
}
}
}

CSP-S 2019图论总结的更多相关文章

  1. 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解

    前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...

  2. @CSP模拟2019.10.16 - T3@ 垃圾分类

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 为了保护环境,p6pou建设了一个垃圾分类器. 垃圾分类器是一个 ...

  3. CSP/NOIP 2019 游记

    Day0 打牌 Day1 \(T1\) 没开\(ull\), 不知道有几分 \(T2\) \(N^2\)暴力+链, 没搞出树上做法, \(70\)分 \(T3\) 标准\(10\)分( 感觉今年省一稳 ...

  4. 【置顶】CSP/S 2019退役祭

    标题没错,今年就是我的最后一年了. 才高一啊,真不甘心啊. DAY1(之前的看前几篇博客吧) T1 现在没挂 T2 貌似是树形DP,跑到80000的深度时挂了,于是特判了链的情况,大样例过了,现在没挂 ...

  5. CSP-S2019 游记

    想到正解,不一定赢 全部打满,才是成功 Day 0 首先很感谢各位朋友送的贺卡!!! 早上10点的高铁.今年可以直接在汕头站坐高铁不用专门跑到潮汕站了,1h->15min车程,巨大好评. 虽然离 ...

  6. 【Luogu】P6232 [eJOI2019]挂架 题解

    这道题跟CSP/S 2019 D1T1有点像. 我们先来模拟一下 \(n=4\) 的情况, 不难得出,最后的衣架挂钩顺序: 下标: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...

  7. 2019.10.15 CSP初赛知识点整理

    初赛需要的知识点整理如下: (1)计算机的硬件组成与基本常识 (2)单位/进制的转换 (3)进制/逻辑运算相关 (4)概率与期望 (5)排序的各种性质 (6)简单数据结构的使用(栈.队列.链表等) ( ...

  8. CSP 2019游记 & 退役记

    扶苏让我记录他AK CSP 的事实 ZAY NB!!! "你不配" 两年半的旅行结束了,我背着满满的行囊下了车,望着毫不犹豫远去的列车,我笑着哭了,笑着翻着我的行囊-- 游记 Da ...

  9. 第十八次CSP认证游记 | 2019.12.15

    CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...

随机推荐

  1. Vue动态设置Dom元素宽高

    需求: slider侧边栏是宽度是动态的,使用jquery可以操作dom元素,设置宽高,但vue是避免操作dom的 <template> <div class="slide ...

  2. 【西北师大-2108Java】第八次作业成绩汇总

    [西北师大-2108Java]第八次作业成绩汇总 作业题目 面向对象程序设计(JAVA)--第10周学习指导及要求 实验目的与要求 (1)掌握java异常处理技术: (2)了解断言的用法: (3)了解 ...

  3. configparser读取配置文件时的相对路径问题

    学习接口测试时,当我把配置文件xx.config和读取配置文件的模块read_config.py放在项目下的同一个包config里时,只需传入文件名xx.config即可实现对配置文件的读取. 但是当 ...

  4. C#开发BIMFACE系列15 服务端API之获取模型的View token

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken>中详细介绍了应用程序访问API的令牌凭证.我 ...

  5. event.stopPropagation()和event.preventDefault()

    1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, ...

  6. mysql--事务详解

    事务的四大特性: # 原子性(atomicity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作 ...

  7. Luogu P2570 [ZJOI2010]贪吃的老鼠

    Luogu P2570 [ZJOI2010]贪吃的老鼠 题目描述 奶酪店里最近出现了\(m\)只老鼠!它们的目标就是把生产出来的所有奶酪都吃掉.奶酪店中一天会生产\(n\)块奶酪,其中第\(i\)块的 ...

  8. Bag of Tricks for Image Classification with Convolutional Neural Networks

    这篇文章来自李沐大神团队,使用各种CNN tricks,将原始的resnet在imagenet上提升了四个点.记录一下,可以用到自己的网络上.如果图片显示不了,点击链接观看 baseline mode ...

  9. Flink中Idle停滞流机制(源码分析)

    前几天在社区群上,有人问了一个问题 既然上游最小水印会决定窗口触发,那如果我上游其中一条流突然没有了数据,我的窗口还会继续触发吗? 看到这个问题,我蒙了???? 对哈,因为我是选择上游所有流中水印最小 ...

  10. Jenkins 有关 Maven 的内容

    Jenkins Maven 插件安装 在安装完 Jenkins 后,我们想添加新的项目 为 Maven 项目时,发现找不到这个选项. 原因是我们没有安装插件 Maven Integration. 在 ...