01 2018 档案
摘要:题意: 求一个有向图中: (1)要选几个点才能把的点走遍 (2)要添加多少条边使得整个图强联通 分析: 对于问题1, 我们只要求出缩点后的图有多少个入度为0的scc就好, 因为有入度的scc可以从其他地方到达。 对于问题2, 每个入度为0的scc, 都可以补一条边可以变成强连通图, 每个出度为0的s
阅读全文
摘要:题意: 给定一幅无向图, 求出图的割点。 割点模板:http://www.cnblogs.com/Jadon97/p/8328750.html 分析: 输入有点麻烦, 用stringsteam 会比较简单
阅读全文
摘要:题意: 给定一幅图, 问符不符合一下两个条件; (1) 图中没有环 (2)图中存在一条链, 点要么在链上, 要么是链上点的邻居。 分析: 建图,记录度数, 去掉所有度为1的点, 然后看看剩下是否是有2个度为1的点和其他都是度为2的点。
阅读全文
摘要:题意: 给定n项任务, 每项任务的完成用时t和完成每项任务前需要的k项任务, 求把所有任务完成的最短时间,有当前时间多项任务都可完成, 那么可以同时进行。 分析: 这题关键就是每项任务都会有先决条件, 要完成该项任务a必须先完成他的先决条件。 所以对于每个先决条件, 我们构建一条有向边到任务本身,
阅读全文
摘要:题意: 给定n个数的序列, 找出最长上升子序列和。 分析:
阅读全文
摘要:题意: 求出最小生成树中最大边与最小边差距的最小值。 分析: 排序,枚举最小边, 用最小边构造最小生成树, 没法构造了就退出
阅读全文
摘要:题意: 有N头牛, 有以下关系: (1)A牛与B牛相距不能大于k (2)A牛与B牛相距不能小于k (3)第i+1头牛必须在第i头牛前面 给出若干对关系(1),(2) 求出第N头牛与第一头牛的最长可能距离, 若无解输出-1, 若无限长输出-2 分析: 3个关系对应的 <= 式子是: dis[b] -
阅读全文
摘要:题意: 给定L个点, P条边的有向图, 每个点有一个价值, 但只在第一经过获得, 每条边有一个花费, 每次经过都要付出这个花费, 在图中找出一个环, 使得价值之和/花费之和 最大 分析: 这道题其实并不是很好想, 因为价值和花费不是在同一样东西, 价值是点, 花费是边。 但回到我们要求的问题上, 我
阅读全文
摘要:题意: 给定n个村子的坐标(x,y)和高度z, 求出修n-1条路连通所有村子, 并且让 修路花费/修路长度 最少的值 两个村子修一条路, 修路花费 = abs(高度差), 修路长度 = 欧氏距离 分析: 01分数划分的题目, 构造出 d[i] = 修路花费 - L * 修路长度, 这个L值我们可以二
阅读全文
摘要:题意: 给定n个数, 然后要求看看有多少对不上升子序列。 分析: 求出最长上升子序列, 那么整个序列中LIS外的数都会在前面找到一个比自己大的数, 所以不上升子序列最多有最长上升子序列个数个。 关于求LIS, 下列有两种DP算法 O(n²) 二分思想, 设置一个栈, 扫描一遍序列, 每次将大于栈顶元
阅读全文
摘要:01分数划分详情可阅读:http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html 题意: 给出n个a和b,让选出n-k个使得最大 二分法: Dinkelbach
阅读全文
摘要:关于差分约束详情可阅读:http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 题意: 给定n个区间[L,R], 每个区间至少放w个球, 问最后整个区间最少要放多少个球。 分析: 假设d[i] 是 [1,i] 至少有多少个点
阅读全文
摘要:题意: 给定n头牛, 然后有m个比较, 求出有多少头牛能确定自己的排名。 分析: 假设有一头牛a, 有ki头牛强于自己, kj头牛弱于自己, ki + kj == n-1时, 那么这头牛的排名就确定了。 对于每个比较建一条有向边 求出a点可达哪些点, 哪些点可达a点即可
阅读全文
摘要:题意: 有一个吸血鬼要旅游, 他只能在晚上6点到第二天凌晨6点行动(18:00 ~ 6:00), 然后每天中午12点要喝1L的血(12:00), 现有m条火车的发车时间和行程时间, 问他从a到达b需要喝多少升的血。 分析: 根据发车时间和题意, 可以把发车时间 < 18的排除掉, 然后行程时间 >
阅读全文
摘要:题意: 农夫约翰农场里发现了很多虫洞,他是个超级冒险迷,想利用虫洞回到过去,看再回来的时候能不能看到没有离开之前的自己,农场里有N块地,M条路连接着两块地,W个虫洞,连接两块地的路是双向的,而虫洞是单向的,去到虫洞之后时间会倒退T秒,如果能遇到离开之前的自己就输出YES,反之就是NO。 分析: 就是
阅读全文
摘要:题意: 给定6个硬币的币值, 问组成1~100这些数最少要几个硬币, 比如给定1 2 5 10 20 50, 组成40 可以是 20 + 20, 也可以是 50 -10, 最少硬币是2个。 分析: 这道题可以转化成是一道最短路的方法去做, 设一开始的起点为0(什么硬币都不取), 然后每个点都有12条
阅读全文
摘要:题意: 求出图中所有汇点 定义:点v是汇点须满足 对图中任意点u,若v可以到达u则必有u到v的路径;若v不可以到达u,则u到v的路径可有可无。 模板:http://www.cnblogs.com/Jadon97/p/8328750.html 分析: 很显然, 图中强连通分量中所有的点属性都是一样的,
阅读全文
摘要:Tarjan算法是一个基于dfs的搜索算法, 可以在O(N+M)的复杂度内求出图的割点、割边和强联通分量等信息。 再Tarjan算法中,有如下定义。 DFN[ i ] : 在DFS中该节点的时间戳 LOW[ i ] : 为i能追溯到最早的时间戳 在一个无向图中,如果有一个顶点,删除这个顶点以及这个顶
阅读全文
摘要:题意: 给定n个点, 要求修p-1条路使其连通, 但是现在有s个卫星, 每两个卫星可以免费构成连通(意思是不需要修路了), 问修的路最长距离是多少。 分析: s个卫星可以代替s-1条路, 所以只要求最小生成树, 排序后后去掉s-1条边, 最大那条就是答案。
阅读全文
摘要:题意: 给定N个数的序列, 希望将它排列成1~N, 可以用剪切、粘贴来完成任务, 每次可以剪切一段连续的自然段, 粘贴时按照顺序粘贴。
阅读全文
摘要:并集(http://zh.cppreference.com/w/cpp/algorithm/set_union) 交集(http://zh.cppreference.com/w/cpp/algorithm/set_intersection) 差集(http://zh.cppreference.com
阅读全文
摘要:题意: 输入a、b, 求a/b 可以由多少个埃及分数组成。 埃及分数是形如1/a , a是自然数的分数。 如2/3 = 1/2 + 1/6, 但埃及分数中不允许有相同的 ,如不可以2/3 = 1/3 + 1/3. 求出可以表达a/b个数最少埃及分数方案, 如果个数相同则选取最小的分数最大。
阅读全文
摘要:题意: 给定n个城市, 然后城市之间会有长城相连, 长城之间会围成M个区域, 有L个vip(每个vip会处于一个城市里)要找一个区域聚会, 问一共最少跨越多少个长城。 分析: 其实这题难就难在建图, 因为图中的点不再是城市, 而是城市之间长城围成的区域, 只要把区域提取出来, 这题就是简单的Floy
阅读全文
摘要:题意: w*h(w,h≤16)网格上有n(n≤3)个小写字母(代表鬼)。要求把它们分别移动到对应 的大写字母里。每步可以有多个鬼同时移动(均为往上下左右4个方向之一移动),但每步 结束之后任何两个鬼不能占用同一个位置,也不能在一步之内交换位置。
阅读全文
摘要:题意: 给定3个杯子的容量, 然后一开始第3个杯子水是满的, 求出最少倒多少升水才能让某个杯子有d 升水, 如果无法做到, 求出d',(d' < d 且尽量接近d)
阅读全文
摘要:题意: 给定N个初始值为0的数, 然后给定K个区间修改(区间[l,r] 每个元素加一), 求修改后序列的中位数。 分析: K个离线的区间修改可以使用差分数组(http://www.cnblogs.com/Jadon97/p/8053946.html)实现。 关于对一个无序的序列找出中位数 方法一:
阅读全文
浙公网安备 33010602011771号