网络流

拆点/拆边技巧

题目来源

bzoj1070

题目描述

同一时刻有\(N\)位车主带着他们的爱车来到了汽车维修中心。维修中心共有\(M\)位技术人员,不同的技术人员对不同

的车进行维修所用的时间是不同的。现在需要安排这\(M\)位技术人员所维修的车及顺序,使得顾客平均等待的时间最小。

说明:

1.顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。

2.可以支持不同的技术人员同时修车。也就是说,可以理解成\(N\)位车主在\(M\)位技术人员那里排好队,然后\(M\)位技术人员同时完成他们的任务。

约束条件

\(2 \leq M \leq 9,1 \leq N \leq 60,1 \leq T \leq 1000\)

时间限制:1s

空间限制:512MB

最小割模型的转换

题目来源

(bzoj1934)

题目描述

幼儿园里有\(n\)个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为\(m\)对好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。 我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?

约束条件

\(2 \leq n \leq 300,1 \leq m \leq n(n-1)/2\)

高级专题

题目来源

(bzoj3502)

题目描述

给定一个长为\(n\)的数列,要求选出最多\(k\)个不相交的区间(可以不选),使得选中的数字之和最大。

约束条件

\(1 \leq k \leq n \leq 1000000\)

时间限制:3s

空间限制:512MB

注:其实这里还有一些技巧没有用题目覆盖到:

1.最小割的构造

2.最大权闭合子图,最大密度子图的做法

3.上下界网络流

4.哪些边必定在最小割/可能在最小割/一定不在最小割里面(bzoj1797)

5.二分图相关的各种问题

5.1 二分图的最大独立集 = 点数 - 最大匹配

二分图最大独立集的构造也要会!

5.2 二分图的最小边覆盖集 = 最大匹配

5.3 二分图博弈问题 *

5.4 \(k\)正则的二分图必定有边的\(k\)染色,以及它们的构造方法

一个方法是每次找完美匹配删掉即可。

(https://atcoder.jp/contests/agc037/tasks/agc037_d)

5.5 一些涉及到网格图的题目,需要用它是二分图的性质来建模 *

5.5 二分图删点/删边匹配问题(https://loj.ac/problem/2276))

6.模拟费用流*

7.线性规划转网络流(bzoj1061) *

树上问题归纳

树形DP

题目来源

https://loj.ac/problem/2546

题目描述

外星人又双叒叕要攻打地球了,外星母舰已经向地球航行!这一次,JYY 已经联系好了黄金舰队,打算联合所有 JSOIer 抵御外星人的进攻。

在黄金舰队就位之前,JYY 打算事先了解外星人的进攻计划。现在,携带了监听设备的特工已经秘密潜入了外星人的母舰,准备对外星人的通信实施监听。

外星人的母舰可以看成是一棵 \(n\)个节点,\(n - 1\) 条边的无向树,树上的节点用 编号。JYY 的特工已经装备了隐形模块,可以在外星人母舰中不受限制地活动,可以神不知鬼不觉地在节点上安装监听设备。

如果在节点 上安装监听设备,则 JYY 能够监听与 直接相邻所有的节点的通信。换言之,如果在节点 安装监听设备,则对于树中每一条边 ,节点 都会被监听。特别注意放置在节点 的监听设备并不监听 本身的通信,这是 JYY 特别为了防止外星人察觉部署的战术。

JYY 的特工一共携带了 个监听设备,现在 JYY 想知道,有多少种不同的放置监听设备的方法,能够使得母舰上所有节点的通信都被监听?为了避免浪费,每个节点至多只能安装一个监听设备,且监听设备必须被用完

约束条件

\(1 \leq n \leq 10^5, 1 \leq k \leq \min(n, 100)\)

树形DP的本质是合并两棵子树的信息

树形DP除了设子树点数这个状态,还经常补充该点的状态,它父亲的状态,子树内选的点数等信息

优化树形DP就是以尽量好的复杂度做两棵子树的合并

树链剖分/dfs序

题目来源

https://loj.ac/problem/2130

题目描述

Linux 用户和 OSX 用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu 使用的 apt-get,Fedora/CentOS 使用的 yum,以及 OSX 下可用的 Homebrew 都是优秀的软件包管理器。

你决定设计你自己的软件包管理器。不可避免地,你要解决软件包之间的依赖问题。如果软件包\(B\) 依赖软件包 \(A\),那么安装软件包 \(B\)以前,必须先安装软件包\(A\) 。同时,如果想要卸载软件包\(B\) ,则必须卸载软件包\(A\) 。现在你已经获得了所有的软件包之间的依赖关系。而且,由于你之前的工作,除 \(0\)号软件包以外,在你的管理器当中的软件包都会依赖一个且仅一个软件包,而 \(0\)号软件包不依赖任何一个软件包。依赖关系不存在环(若有 \(m\)个软件包,其中 \(A_1\)依赖\(A_2\) , \(A_2\)依赖\(A_3\) , \(A_3\)依赖\(A_4\) ,……, \(A_{m - 1}\)依赖\(A_m\) ,而 \(A_m\)依赖\(A_1\) ,则称这 \(m\)个软件包的依赖关系构成环),当然也不会有一个软件包依赖自己。

现在你要为你的软件包管理器写一个依赖解决程序。根据反馈,用户希望在安装和卸载某个软件包时,快速地知道这个操作实际上会改变多少个软件包的安装状态(即安装操作会安装多少个未安装的软件包,或卸载操作会卸载多少个已安装的软件包),你的任务就是实现这个部分。注意,安装一个已安装的软件包,或卸载一个未安装的软件包,都不会改变任何软件包的安装状态,即在此情况下,改变安装状态的软件包数为 \(0\)。

输入文件的第 行包含 \(1\)个正整数\(n\) ,表示软件包的总数。软件包从\(0\) 开始编号。

随后一行包含\(n - 1\) 个整数,相邻整数之间用单个空格隔开,分别表示 \(1, 2, …, n - 1\)号软件包依赖的软件包的编号。

接下来一行包含一个正整数 ,表示询问的总数。

之后 行,每行一个询问。询问分为两种:

install x:表示安装软件包

uninstall x:表示卸载软件包

你需要维护每个软件包的安装状态,一开始所有的软件包都处于未安装状态。对于每个操作,你需要输出这步操作会改变多少个软件包的安装状态,随后应用这个操作(即改变你维护的安装状态)。

约束条件

\(1 \leq n, q \leq 100000\)

树链剖分,dfs序的本质都是把树上问题转换为区间问题!对于静态的问题,重链先行dfs序是较为通用的

别的例题: https://www.luogu.com.cn/problem/P2486

注:这里也还有一些技巧没有用题目覆盖到:

1.树上贪心问题 (https://loj.ac/problem/3052)

2.点分治/链分治的应用

2.1 做树链统计的问题,例如统计有多少条长度 \(\leq x\) 的路径 (bzoj1468)

2.2 动态dp问题 *

3.树上启发式合并/线段树合并问题

3.1 也用来做树链统计的问题,可以与点分治联系起来

3.2 用来做数据结构题 (bzoj2733,ONTAK 2010 Peaks)

3.3 用来优化树形dp * (https://loj.ac/problem/2568)

4.图论与树的结合

4.1 最小生成树/最小瓶颈路 (https://loj.ac/problem/2610)

4.2 动态加边维护最小生成树 (https://loj.ac/problem/2245,)

4.3 点双树,边双树 (https://loj.ac/problem/2587)

4.4 dfs树及其应用 (之前zbw和我在题目中都涉及到了一点)

5.动态树问题 (https://www.luogu.com.cn/problem/P3203)

6.2018到2019考过3次的树上最优化问题(有时涉及到多棵树的处理)*

(https://loj.ac/problem/2339)

(https://loj.ac/problem/2553)

(https://loj.ac/problem/2722)

7.树的计数问题 *

(https://loj.ac/problem/2665)

(https://loj.ac/problem/2983)

考试技巧

(先咕着,有空再更)

OI知识点/得分技巧的归纳总结的更多相关文章

  1. OI知识点|NOIP考点|省选考点|教程与学习笔记合集

    点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分 ...

  2. 对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结

    基本对比 使用方式 使用场合 优缺点 是否需要安装 需要的dll网址 引用方式 程序内引用 程序初期确定使用MySql,前期添加引用 大多数情况下使用在类文件内,多数使用于aspx,ashx等带有后置 ...

  3. OI中卡常数技巧

    一.I/O优化 读入优化是卡常数最重要的一条! inline int read() { ,f=;char c=getchar(); ;c=getchar();} +c-';c=getchar();} ...

  4. js处理url的技巧和归纳

    var url = 'http://www.deikang.com/index.php?tel=15811296111&status=1&id=100'; var n = url.in ...

  5. OI知识点

  6. Excel知识点与技巧1

    1.工作区:方便两个工作表之间进行对比 2.工作表标签颜色 3.交换两列的次序 4.快速到达边界:即快速到达第一行或最后一行 5.冻结窗格:可以固定某几行或某几列一直存在于窗口,不会随着往下拉或往右拉 ...

  7. Linux基础优化与安全归纳总结

    一名运维工程师在运维岗位上时间久了,就会发现Linux优化的重要性,同时会给运维工作带来很多的便利性.本人逐渐认识到了这一点,所以特意在工作闲暇之余,通过阅读Linux相关书籍及向同事.同行高手咨询, ...

  8. java字符串拼接技巧(StringBuilder使用技巧)

    在平时的开发中,我们可能会遇到需要拼接如下格式的字符串(至少我是遇到了很多次): 1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1 ...

  9. 超实用,Linux中查看文本的小技巧

    日常开发中,我们经常需要在服务器上进行各种文本,日志的查看操作,本文主要对常用的文本,日志查看技巧进行了一番总结和归纳,方便大家收藏起来后续查看使用: tail命令查看日志信息 实时监控日志: tai ...

随机推荐

  1. 加解密 C语言实现

    1.加密的基本原理 加密分为对称加密和非对称加密,对称加密就是加密方和解密放用同一个密钥. 加密是分组加密,即将明文数据分成多个密钥大小的块,依次和密钥运算,输出密文. padding,由于加密需要分 ...

  2. 使用思维导图MindManager能否增强记忆?

    学生时代,每当面对冗杂的需要背诵的课业时,有很多人都会发出"这么多内容怎么背啊"."我讨厌死记硬背"."昨天背完今天就忘了"的呐喊.那么,如 ...

  3. Fruity Parametric EQ 2使用说明(一)——FL Studio插件教程

    FL Studio插件教程-Fruity Parametric EQ 2使用说明(一) Fruity Parametric EQ 2均衡器,是一款我们在FL Studio制作音乐时经常会用到的插件,它 ...

  4. 巧妙运用Camtasia 旅行Vlog轻松get

    旅行时,除了要欣赏当地的美丽风景.享受当地美食外,当然还要将旅行中的各种小细节记录下来.以前我们可能更多地使用相机拍照,现在呢,越来越多的人采用视频拍摄的方式制作Vlog.这种兼具影像与叙事的视频表现 ...

  5. CentOS7.X 下安装MySQL8.0(附文件)

    这是64位的安装包.如果需要32位的可以去官网下载哦.步骤一样 1 获取安装资源包 mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar 链接: https://pan.b ...

  6. LeetCode周赛#212

    1631. 最小体力消耗路径 #并查集 #最短路径 题目链接 题意 给定一二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 \((row ...

  7. Codeforces Round #661 (Div. 3) D、E1 题解

    D. Binary String To Subsequences #贪心 #构造 题目链接 题意 给定一个\(01\)串\(s\),完全分割成若干子序列(注意,不要混淆子串与子序列的概念),其中的子序 ...

  8. 蓝桥杯——Java集合练习题

    回文数.维密.约瑟夫环 回文数 问题描述: 123321是一个非常特殊的数,它从左边读和从右边读是一样的.输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n. 输入格式: ...

  9. 项目、地铁/公交、游戏签到、项目上线后发现新bug该怎么处理

    项目:1.提前分配好业务(每个人该干什么 )2.提前召开会议3.提前挑好人4.准备项目思维导图5.提前审阅项目6.为确保项目按期交付 把控好时间7.给员工提前打好招呼 (提醒加班)8.建立好安全机制9 ...

  10. T-SQL——基础语法

    目录 0. 定义变量 1. 批处理 2. 条件逻辑--IF 3. 逻辑分支--CASE 4. 循环语句--WHILE 5. 附录--关于CASE表达式的实现函数 6. 参考 shanzm-2020年1 ...