摘要:
传送门 思路: 很明显的区间动规。设 f [ i ][ j ][ k ] 表示从 i ~ j 的路灯全部关闭时,老张所处的位置[( k=0,处在 i 处),( k=1,处在 j 处)]。 △则可以得出转移方程式有: f [ i ][ j ][ 0 ] = min ( f [ i+1 ][ j ][ 阅读全文
摘要:
传送门 思路: 依题意可知,在图中的每一条边有且只有一个点被选中(阻止老曹刷街),那么就可以对其采取二分图染色,一条边中:一个点为黑色,另一个点为白色;如果一条边中的两个端点的颜色相同,则说明无解,输出:“ Ipossible ";如果有解,就把白点的数目和黑点的数目取 min ,即为答案。 标程: 阅读全文
摘要:
描述: 给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 输入格式: 第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成. 输出格式: 输出最短的长度 思路: 比 KMP 模板还要水的一 阅读全文
摘要:
描述: 给出两个字符串 s1 和 s2 ,其中 s2 为 s1 的子串,求出 s2 在 s1 中所有出现的位置。同时要求输出 s2 的 fail 数组。 思路: KMP模板。 标程: 阅读全文
摘要:
描述: 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。 注:允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。 思路: tarjan 的模板之一——缩点。先利用 tarjan 出图中的强连通分量及大小(点的权值),然后遍 阅读全文
摘要:
传送门 题目简单来说就是给一个有向图,将图转化为DAG图后,求图中最长链及最长链的个数。 思路: ①用 tarjan 缩点重构将原图转换为一个有向无环图,让后在新图上跑 topo 即可求出最长链。 ②最长链的个数可以用动态规划,设 e[ i ] 表示新图中以 i 为终点的方案数,那么 e[ i ] 阅读全文
摘要:
传送门 思路: 有条件的 01背包(有依赖的背包)。 可分为四种情况来做 01背包 :①不买主件 ②买主件 ③买主件+副件1 ④买主件+副件2 ⑤买主件+副件1+副件2 转移条件: ①没有附件,按最基本的 01背包来做。 ②该附件和主件的重量(为区分价格和价值,接下来的所有分析都按背包理解)之和 ≤ 阅读全文
摘要:
回忆一下动规中的背包。。。 一. 最基本的 01背包: 描述: 一个旅行者有一个最多能装 m 公斤的背包,现有 n 件物品 ,它们的重量分别为 W1、W2……Wn ,它们的价值分别为 C1、C2……Cn ,求旅行者能获得的最大总价值。 输入: 第一行:两个整数,m(背包容量)和 n(物品数量); 第 阅读全文
摘要:
传送门 思路: ① 45 分的暴力很好写:只要按每个人借教室的要求,将数组不停地减,如果有一个数小于 0 ,直接停止输出就行了。 ② (正解好像是用二分)线段树做法: 其实跟暴力几乎一样,主要利用的是线段树的标记下传来优化常数,(第一次线段标记下传写错了只得5分。。。)其次只要用线段树维护区间的最小 阅读全文
摘要:
传送门 思路: 类似于数列分段的二分查找答案。设目前的 mid 是一个最小的“空旷指数”,那么在 sum 数组(路标数组)里每两个相邻间的路标距离一定要小于等于目前的 mid , 如果大于,那就必须使用一些路标去填补这个距离。 两个路标之间距离大于 mid 又要分为两种情况:①两路标之间距离不能整除 阅读全文
摘要:
传送门 思路: 求数列每段和的最大值的最小值,很明显是用二分法求解,加贪心检验。本题关键是要怎么去高效的check,可以考虑一个贪心的思路,能加的就加上,不能则新开一段,so对于二分的值 u ,我们从数列 sum 从前往后扫,如果 tot 大于了 u ,我们不加而是 tot 重新赋值并且 cnt++ 阅读全文
摘要:
传送门 思路: 二分+最短路径:可以将长度小于等于 mid 的边视为长度为 0 的边,大于 mid 的边视为长度为 1 的边,最后用 dijkstra 检查 d [ n ] 是否小于等于 k 即可。 标程: 阅读全文
摘要:
传送门 思路: 动态规划,设 f [ i ][ j ][ k ][ l ] 表示1、2 、3、4号牌用了多少张后,所能够获得的分数的最大值。 因为棋子从1开始走,棋子走过的路程就等于已用的牌张数×牌上的点数 : pass= i×1 + j×2 + k×3 + l×4 所以只要枚举每种牌用过的次数,动 阅读全文
摘要:
传送门 思路: △ 区间动规 对于每行,有 f [ i ][ j ] 代表取区间 [ i , j ] 的最大值。 然后转移方程我们考虑,对于每一个新的 f [ i ][ j ],有两种情况(下面定义 a [ i ]代表该行的每个数): ①先取前面的(a [ i ]),再取剩下的 f [ i+1 ][ 阅读全文
摘要:
传送门 思路: 不少题解都是用网络流来做最小割(网络流是什么),但对于一个不会网络流的蒟蒻来做这题相当困难。 听机房daolao说可以重构图做最短路。然后就baidu将平面图转换成一个对偶图,因为网络流的最小割 = 对偶图的最短路,所以只要在对偶图上跑最短路(从左上角跑到右下角)就行了。 由于堆优化 阅读全文