06 2019 档案
摘要:题目:https://www.luogu.org/problemnew/show/P2051 题意:n*m的格子里放炮,使他们不能互相攻击。 如果两个炮在同一行同一列并且中间还有一个棋子的话就可以攻击。问有多少种放炮的方案。 思路:首先根据规则,可以推出任意的行和列中炮的个数都不能超过2个。 可以尝
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P2577 题意:n个人每个人有一个打饭时间和吃饭时间,将他们分成两个队伍。每个人打到饭之后就马上去吃饭。问怎么安排可以让总体的吃饭时间最短。 思路:首先贪心还是很好想的。某个队伍的总吃饭时间实际上是打饭结束+吃饭时间
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1169 题意:n*m的黑白格子,找到面积最大的黑白相间的正方形和矩形。 思路:传说中的悬线法!用下面这张图说明一下。 悬线法一般是用来求一个没有障碍点的最大子矩阵的。想象从上面垂下来好多的悬线,这些悬线被一个底所限
阅读全文
摘要:【内含最小生成树Prim模板】 题目:https://www.luogu.org/problemnew/show/P1546 题意:给定一个邻接矩阵。求最小生成树。 思路:点少边多用Prim。 Prim其实是把已经在最小生成树里的节点缩成一个,用priorityqueue每次找到距离当前最小生成树距
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1144 题意:问1到各个节点的最短路有多少条。 思路:如果松弛的时候发现是相等的,说明可以经过该点的最短路径到达当前点,也就是说最短路径变多了。
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1339 题意:给定一张图,问起点到终点的最短路。 思路:dijkstra板子题。 很久没有写最短路了。总结一下dijkstra的步骤吧。 d数组用于表示当前最短路径,vis数组用于标记当前点是否已经在最短路集合中了
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1273 题意:一棵树,叶子节点是用户,每天边有一个权值表示花费,每一个用户有一个值表示他们会交的钱。 问在不亏本的情况下,最多可以选择多少个用户,让他们得到从根节点(1)发送出的服务。 思路:本来很天真的以为是先d
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P2279 题意:一棵树。在节点处建消防站,可以覆盖与他距离在2之内的节点。问最少要建多少个消防站,可以覆盖所有的节点。 思路:有一种贪心的思路,看大部分题解都是这样。 如果要覆盖当前节点(自己不建),那么可能是父亲,
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1220 题意:给定n盏灯的位置和功率,初始时站在第c盏处。 关灯不需要时间,走的速度是1单位/秒。问把所有的灯关掉,最少功率是多少。 思路:看上去是区间dp还挺清楚的。因为关灯不需要时间,既然路过了就顺便关了吧。所
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1341 题意:给定n对字母对,要求构造一个个数为n+1的字符串,使得每一个字母对都在里面出现过。 思路:这种题目都卡了好久,代码能力真的不行了啊。 其实就是每个字母是节点,每个字母对就是这两个字母之间连一条边,每个
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1330 题意:一个无向边,一个河蟹可以占领一个点,但一个点只能被一个河蟹占领。 占领了一个点之后,这个点所有的边都删除。 问至少需要多少个河蟹可以让所有的边都被删除。 思路: 乍一看有点无从下手。但实际上这个题就是
阅读全文
摘要:应用:线性时间内求出无向图的割点与桥,双连通分量。有向图的强连通分量,必经点和必经边。 主要是求两个东西,dfn和low 时间戳dfn:就是dfs序,也就是每个节点在dfs遍历的过程中第一次被访问的时间顺序。 追溯值low:$low[x]$定义为$min(dfn[subtree(x)中的节点], d
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P2661 题意: 有一个有向图,问最小环的的大小。 思路: 明明是图的遍历,但是bfs会T。第二组下下来的数据n居然是12位的我也搞不懂怎么这么奇怪。 总之用并查集可以做。这个题每个点只有一个出边。 如果有一条从x到
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1196 题意:有好多好多舰队排成一排。 M i,j表示将编号i舰队所在的列排到编号j舰队所在列的后面。 C i,j表示查询编号i舰队和编号j舰队如果在一列,中间间隔了多少只舰,如果不在同一列输出-1 思路: 很自然
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1197 题意:有n个结点m条无向边,k次操作每次摧毁一个结点并询问此时有多少连通块。 思路:平时在线的搞多了都没想到这道题完全可以存下结果之后输出。 对于那些要被摧毁的城市,我们只需要先都摧毁,然后倒序的进行恢复。
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P2114 题意:有n个操作,每个可以是与、或、异或 一个数。 初始值是0~m之间的一个数,问经过n个运算之后,可以得到的最大值是多少。 思路: 这个数的某一位不是0就是1,所以我们可以用一个全为1的数和一个全为0的数
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1373 题意: 有一个n*m的地图,每个点上有一个数值。两个人在任一点开始任一点结束,只能往右或往下走,轮流收集数值。 超过k+1时会清零。问使得他们最后收集到的数值相等的方案数。 思路: 每次状态数一多再牵扯到方
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1363 题意: 有一个地图,起点是S,障碍物用#表示。可以将这个地图不断的在四周重复,问从起点开始是否可以走到无限远的地方去。 思路: 刚开始想的是地图放中间,然后在四周都拼一个同样的,然后看看能不能走回到起点。
阅读全文