随笔分类 -  题解

摘要:题意 有$N$项任务,每项任务有一个截止时间$d$,一个完成所需时间$b$,和一个参数$a$,对于每一个任务,若你给他$x$元钱,他将会在$b_i-a_i*x$完成任务,现求出每个任务都必须在规定时间完成的最小花费 思路 贪心,按$d$从小到大排序,如果能完成就不必花钱,不然就在这个之前的任务中选一 阅读全文
posted @ 2020-09-06 20:41 hulean 阅读(147) 评论(0) 推荐(0)
摘要:题目大意 给一张无向图,每个点有一个油价$a_i$,表示每升油的单价。每条道路连接两个点,且有个权值$w_i$,表示开过这条路所消耗的油量。现在有$q$个询问,每个询问给出一个油箱容量$c$,一个起始点和一个终止点,要求出从起始点到终止点最少要消费多少钱。初始油箱为空。 分析 在状态中添加一维,\( 阅读全文
posted @ 2020-08-15 15:35 hulean 阅读(228) 评论(0) 推荐(0)
摘要:【洪水】题解 题目大意 有$n$个水库,每个水库有一个容量上限$a_i$,第$i$个水库到第$i+1$个水库有一个流量上限$b_i$,最后一个水库流入大海。且每秒会有$F$流入第$1$个水库,问水库多久会溢出,不会溢出输出$-1$ 对于n小于4的数据,直接模拟即可 对于所有水库容量相同,河道一样宽的 阅读全文
posted @ 2020-08-12 10:26 hulean 阅读(220) 评论(0) 推荐(0)
摘要:题目大意 给你一个有向图,求出图中环的平均值的最小值 环的平均值定义:环中所有的边权和/环中点数量 思路 看到使平均值最大或最小,可以考虑分数规划 分数规划用于解决一些要让平均值最大或最小的问题 具体就是二分答案$K$ \(\frac{x_1+x_2+x_3+\dots+x_n}{n}\ge k\L 阅读全文
posted @ 2020-08-10 14:41 hulean 阅读(142) 评论(0) 推荐(0)
摘要:【题目大意】 大致题意就是,你的初始坐标为$x$,你要去数轴上的$n$个点,问你到达所有点的时间总和最小是多少。 直接贪心肯定不行,所以考虑$DP$ 先把坐标离散(也就是预处理两点距离$dis[i][j]=abs(a[i]−a[j])$) 接下来考虑如何dp。 关注到一个性质,如果到目前为止,奶牛吃 阅读全文
posted @ 2020-08-09 15:57 hulean 阅读(243) 评论(0) 推荐(0)
摘要:我们考虑分治一下 按$x$坐标排序 然后对于每一段的两部分都按$y$排序 左右两边都维护一个单调栈 然后考虑右边对左边的贡献就行了 #include <bits/stdc++.h> #define int long long using namespace std ; const int MAXN 阅读全文
posted @ 2020-08-09 12:56 hulean 阅读(140) 评论(0) 推荐(0)
摘要:题目大意 鹰蛋问题. $n$个蛋,$m$层楼. 存在一层楼$E$,使得$E$以及$E$以下的楼层鹰蛋都不会摔碎,问最坏情况下最少多少次能够知道$E$. 非常经典的模型,初看题目根本想不到用什么方法做,一开始可能会想到二分答案、单调队列和一些线性的东西。但是明确的说:这些都是不可行的! 正确的解法其实 阅读全文
posted @ 2020-08-08 21:33 hulean 阅读(268) 评论(0) 推荐(0)
摘要:【题目大意】 Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有$n$种面值的硬币,面值分别为$b1, b2,..., bn$. 但是每种硬币有数量限制,现在我们想要凑出面值$k$求最少要用多少个硬币. \(n\le200,1\le k,b_i \le10000 阅读全文
posted @ 2020-08-08 18:36 hulean 阅读(345) 评论(0) 推荐(0)
摘要:题目大意 求有多少个长度为 \(n\) ,仅包含前 \(k\) 个小写字母且包含至少一个长度不少于 $2$ 的回文串的字符串作为子串。对于 \(k>26\) 的情况,你只需要把每个字母当成一个与其他字母均不同的字母,而无需关注它具体是什么符号。答案需要对 $998244353$(一个质数)取模。 $ 阅读全文
posted @ 2020-08-08 15:42 hulean 阅读(158) 评论(0) 推荐(0)
摘要:设$dp[i][j]$表示文本串的前$j$个字符匹配了模式串第$i$个通配符(包括这个通配符)前面的所有字符,值为$0$代表不能,值为$1$代表可以 那么,显然有两种转移:第$i+1$个通配符是'\(*\)'或者'\(?\)' 转移的条件,是从第$j+1$个字符开始的一段字符串可以与第$i$个和第$ 阅读全文
posted @ 2020-08-07 20:48 hulean 阅读(200) 评论(0) 推荐(0)
摘要:先放一道例题[USACO15DEC]Max Flow P 题目大意 给你一棵$n$个点的树,有$k$条管道,每条管道有个起始点和终结点。从起始点到终结点的路径上每个经过的点权值都要$+1$ 现在问你这$k$条管道都处理完后权值最大的点的权值是多少 \(N\le50000\) \(K\le100000 阅读全文
posted @ 2020-07-22 14:37 hulean 阅读(161) 评论(0) 推荐(0)
摘要:题目链接 题目大意 有一个字符串和$m$个操作,每个操作都有一定的代价,判断是否能通过一系列操作使该字符串变成回文串。并求出最小代价。 分析 \(Floyed\) 给出这些操作,会发现有些操作是完全没有用的(因为有更好的组合可以达到此目的),所以我们可以先跑一遍$Floyed$,求出这26个字母与空 阅读全文
posted @ 2020-07-22 11:35 hulean 阅读(136) 评论(0) 推荐(0)
摘要:【分析】 暴力搜顺子,贪心出散牌 为什么顺子要暴力? 玩过斗地主的都知道,并不是出越长的顺子越好,如果你有一组手牌, ,你一下把最长的出了去,你会单两张牌,不如出两个顺子,所以顺子要暴力。 贪心打散牌 这是核心所在,也是不超时的原因。 可以先统计一下不同牌个数的组数,然后再出牌, 那如何打出最优解? 阅读全文
posted @ 2019-07-06 20:40 hulean 阅读(300) 评论(0) 推荐(0)
摘要:【思路】 题目给出一棵树。第$i$步拆的一定是第$i$层与第$i+1$层之间的连边,否则不是最优(自行证明即可),所以可以暴力枚举每一次拆哪一个节点与上一个节点的连边。 把所有节点所在的层数存下来,一号点在第$1$层,枚举每一层的每个节点(由于$1$号节点已经被感染,从第二层开始搜索就可以了) 大概 阅读全文
posted @ 2019-07-06 20:39 hulean 阅读(644) 评论(0) 推荐(0)
摘要:题目描述 物流公司要把一批货物从码头$A$运到码头$B$。由于货物量比较大,需要$n$天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够 阅读全文
posted @ 2019-07-04 16:16 hulean 阅读(330) 评论(0) 推荐(0)
摘要:【题意】 在一个赛车比赛中,赛道有$n(n\text{开启时间}$,说明此道路 关闭 ,反之此道路 开启 (自己想一想,应该能相通的) 【代码】 细节上面已经说的很清楚了 ~~(也方便进行复制)~~,就不加注释了 cpp include using namespace std; const int 阅读全文
posted @ 2019-07-04 16:15 hulean 阅读(295) 评论(0) 推荐(0)
摘要:【题意】 补丁在修正$BUG$时,有时也会引入新的$BUG$,假定有$n(n<=20)$个潜在$BUG$,和$m(m<=100)$个补丁,每个补丁用两个长度为$n$的字符串表示,其中字符串的每个位置表示一个$BUG$,第一个串表示打补丁之前的状态 (“-”表示该$BUG$必须不存在,“+”表示该补丁 阅读全文
posted @ 2019-07-03 19:56 hulean 阅读(466) 评论(0) 推荐(1)
摘要:本题看似很难,实际上思路非常简单——如果你想通了。 首先有一个问题:图中有几个点?大部分的人会回答$n$个点。错了,有$n+1$个。 多出来的那个点在哪?关键在于你要理解每一个决策的意义。实际上,多出来的那个点是地下的天然矿泉水。当我们打井时,我们实际上是在往地下连边。理解了这一点,代码就没有任何难 阅读全文
posted @ 2019-07-03 19:56 hulean 阅读(140) 评论(0) 推荐(0)
摘要:【题意】 如果两个人互相打电话(直接或者间接),则说他们在同一个电话圈里。例如,$a$打给$b$,$b$打给$c$,$c$打给$d$,$d$打给$a$,则这四个人在同一个圈里;如果$e$打给$f$,而$f$不打给$e$,则不能推出$e$和$f$在同一个电话圈。输入$n(n≤25)$个人的$m$次电话 阅读全文
posted @ 2019-07-03 19:55 hulean 阅读(293) 评论(0) 推荐(0)
摘要:【题意】 输入一个$C$个点$S$条边 $(Cj k``使得 的总长度等于 与``k j k``, 和``k j i j``的最短路径。把刚才推理中“之和”与“取最小值”换成“取最小值”和“取最大值”,推理仍然适用 【代码】 cpp include using namespace std; int 阅读全文
posted @ 2019-07-03 19:54 hulean 阅读(486) 评论(0) 推荐(1)