• COGS图论相关算法

  • 最小生成树

    • Kruskal+ufs

      int ufs(int x) {
      return f[x] == x ? x : f[x] = ufs(f[x]);
      }
      int Kruskal() {
      int w = 0;
      for(int i=0; i<n; i++)
      f[i] = i;
      sort(e, e+n);
      for(int i=0; i<n; i++) {
      int x = ufs(e[i].u), y = ufs(e[i].v);
      if(x != y) {
      f[x] = y;
      w += e[i].w;
      }
      } return w;
      }
    • Prim

      int Prim() {
      int w = 0;
      priority_queue<pair<int, int> > q;
      bool l[N] = {0};
      l[1] = 1; q.push(make_pair(0, 1));
      for(int k=1; k<n; k++) {
      int u = q.top().second; q.pop();
      for(int i=0; i<G[u].size(); i++)
      if(!l[G[u][i]])
      q.push(make_pair(-c[u][i], G[u][i]));
      while(!q.empty() && l[q.top().second])
      q.pop();
      l[q.top().second] = 1;
      w += -q.top().first;
      q.pop();
      } return w;
      }
  • 最短路径

    • Dijkstra+priority_queue

      void Dijkstra(int s) {
      priority_queue<pair<int, int> > q;
      bool l[N] = {0}; l[s] = 1;
      fill_n(f, n, INF); f[s] = 0;
      q.push(make_pair(-f[s], s));
      while(!q.empty()) {
      int u = q.front().second; q.pop();
      for(int i=0; i<G[u].size(); i++) {
      int v = G[u][i];
      if(f[v] > f[u] + c[u][i]) {
      f[v] = f[u] + c[u][i];
      if(!l[v]) {
      l[v] = 1;
      q.push(make_pair(-f[v], v));
      }
      }
      }
      }
      }
    • Bellman-Ford (SPFA)

      void BellmanFord(int s) { // SPFA
      queue<int> q;
      bool l[N] = {0}; l[s] = 1;
      fill_n(f, n, INF); f[s] = 0;
      q.push(s);
      while(!q.empty()) {
      int u = q.front(); q.pop();
      l[u] = 0;
      for(int i=0; i<G[u].size(); i++) {
      int v = G[u][i];
      if(f[v] > f[u] + c[u][i]) {
      f[v] = f[u] + c[u][i];
      if(!l[v]) {
      l[v] = 1;
      q.push(v);
      }
      }
      }
      }
      }
    • Floyd

      void Floyd() {
      for(int k=0; k<n; k++)
      for(int i=0; i<n; i++)
      for(int j=0; j<n; j++)
      f[i][j] = min(f[i][j], f[i][k] + f[k][j]);
      }
  • 二分图

    • ufs 验证

    • Hungary

      bool DFS(int u) {
      for(int i=0; i<G[u].size(); i++) {
      int v = G[u][i];
      if(!l[v]) {
      l[v] = 1;
      if(!f[v] || DFS(f[v])) {
      f[v] = u;
      return true;
      }
      }
      } return false;
      }
      int Hungary() {
      int w = 0;
      for(int i=0; i<n; i++) {
      fill_n(l, l+n, 0);
      if(DFS(i))
      w++;
      } return w;
      }
  • 连通分量

    • Tarjan

      stack<int> s;
      void Tarjan(int u) {
      dfn[u] = low[u] = ++time;
      l[u] = 1;
      s.push(u);
      for(int i=0; i<G[u].size(); i++) {
      int v = G[u][i];
      if(!dfn[v]) {
      Tarjan(v);
      low[u] = min(low[u], low[v]);
      } else if(l[v])
      low[u] = min(low[u], dfn[v]);
      }
      if(dfn[u] == low[u]) {
      w++;
      do {int v;
      l[v = s.top()] = 0;
      f[v] = w;
      s.pop();
      } while(u != v);
      }
      }
      void SCC() {
      fill_n(dfn, n, 0);
      for(int i=0; i<n; i++)
      if(!dfn(i))
      Tarjan(i);
      }
  • *网络流

    • 最大流:Edmonds-Karp

    • 费用流:Bellman-Ford 找增广路,或者用贪心求解

联赛会考什么预测


联赛六道题目可能会考什么



1.模拟,栈和队列

2.动态规划,贪心

3.搜索,对搜索结果的处理,搜索中的模拟

4.模拟,数学;字符串处理

5.建图,连通分支、最小生成树、二分图;二分查找

6.网络流类似 AOV 网可用贪心解;数论,高精度



基本上就是这样了,其他的想到了也不会做。

[联赛可能考到]图论相关算法——COGS——联赛试题预测的更多相关文章

  1. COGS NIOP联赛 图论相关算法总结

    最小生成树 Kruskal+ufs int ufs(int x) { return f[x] == x ? x : f[x] = ufs(f[x]); } int Kruskal() { int w ...

  2. 二叉树-你必须要懂!(二叉树相关算法实现-iOS)

    这几天详细了解了下二叉树的相关算法,原因是看了唐boy的一篇博客(你会翻转二叉树吗?),还有一篇关于百度的校园招聘面试经历,深刻体会到二叉树的重要性.于是乎,从网上收集并整理了一些关于二叉树的资料,及 ...

  3. 数据结构(C语言版)顺序栈相关算法的代码实现

    这两天完成了栈的顺序存储结构的相关算法,包括初始化.压栈.出栈.取栈顶元素.判断栈是否为空.返回栈长度.栈的遍历.清栈.销毁栈.这次的实现过程有两点收获,总结如下: 一.清楚遍历栈的概念 栈的遍历指的 ...

  4. [java,2017-05-15] 内存回收 (流程、时间、对象、相关算法)

    内存回收的流程 java的垃圾回收分为三个区域新生代.老年代. 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间:如果有 不进行垃圾回收 ,对象直接在伊甸园存储:如果伊甸园内存已满,会进行一次m ...

  5. 【STL学习】堆相关算法详解与C++编程实现(Heap)

    转自:https://blog.csdn.net/xiajun07061225/article/details/8553808 堆简介   堆并不是STL的组件,但是经常充当着底层实现结构.比如优先级 ...

  6. TCP系列39—拥塞控制—2、拥塞相关算法及基础知识

    一.拥塞控制的相关算法 早期的TCP协议只有基于窗口的流控(flow control)机制而没有拥塞控制机制,因而易导致网络拥塞.1988年Jacobson针对TCP在网络拥塞控制方面的不足,提出了& ...

  7. UCI机器学习库和一些相关算法(转载)

    UCI机器学习库和一些相关算法 各种机器学习任务的顶级结果(论文)汇总 https://github.com//RedditSota/state-of-the-art-result-for-machi ...

  8. 采样方法(二)MCMC相关算法介绍及代码实现

    采样方法(二)MCMC相关算法介绍及代码实现 2017-12-30 15:32:14 Dark_Scope 阅读数 10509更多 分类专栏: 机器学习   版权声明:本文为博主原创文章,遵循CC 4 ...

  9. 盘点十大GIS相关算法

    1.道格拉斯-普克算法(Douglas–Peucker) 道格拉斯-普克算法(Douglas–Peucker algorithm,亦称为拉默-道格拉斯-普克算法.迭代适应点算法.分裂与合并算法)是将曲 ...

随机推荐

  1. jmeter IP欺骗功能

    使用过loadrunner的同学,应该都了解有个IP欺骗功能,jmeter遇到类似需求怎样实现呢? 环境:windows7,jdk1.8,jmeter3.1 使用IP欺骗功能前提是本地有多个可用IP, ...

  2. 阿里云使用js 实现OSS图片上传、获取OSS图片列表、获取图片外网访问地址(读写权限私有、读写权限公共);

    详情请参考:https://help.aliyun.com/document_detail/32069.html?spm=a2c4g.11186623.6.763.ZgC59a 或者https://h ...

  3. I: Carryon的字符串排序(字典树/map映射)

    2297: Carryon的字符串 Time Limit: C/C++ 1 s      Java/Python 3 s      Memory Limit: 128 MB      Accepted ...

  4. The.Glory.of.Innovation 创新之路2科学基石

    犹太民族很早就确立了他们的生存法则:资源.土地,以及一切有形的东西都会消失,一个人最重要的财富是自己的头脑.是知识.是创造.   有些选择是被动的,有些选择是主动的,一旦决心要把技术变成自己的,独立的 ...

  5. hive内group by取第一条数据,Hive中row_number的使用

    1.hive的分组和组内排序---语法 语法: row_number() over (partition by 字段a order by 计算项b desc ) rank rank是排序的别名 par ...

  6. 八卦一下Starlark语言

    八卦一下Starlark语言 编译移植TensorFlow时用到Bazel这一构建工具,Bazel用Starlark语法来编写WORKSPACE/BUILD文件,它们是类似于Make中的makeifl ...

  7. KnockoutJs学习笔记(三)

    之前的文章主要针对的是单一的observable(即便是observableArray也是一种observable),而文档Using computed observables则主要是针对ko.com ...

  8. C#学习-类和结构

    类和结构体,对两者进行比较 语法上的区别在于,定义类要使用关键字class,而定义结构体则使用关键字struct; 结构体中不可对声明字段进行初始化,但类可以: 如果没有为类显式地定义构造函数,C#编 ...

  9. FORM表单中onclick()、submit()与onsubmit()的问题

    最近遇到一次处理form数据的过滤,采用了button的onclick事件来检查,发现return false后表单仍然提交了. 于是仔细研究了下onclick.onsubmit.submit集合函数 ...

  10. Eclipse+Maven整合开发Java项目(一)➣Maven基础环境配置

    概述 Maven是一个Java语言编写的开源项目管理工具,是Apache软件基金会的顶级项目.主要用于项目构建,依赖管理,项目信息管理.有些项目需要添加响应的依赖包,Maven就是公用包集合.存在远程 ...