摘要: P1194 买礼物 普及的题目,而且一眼就能看出该用什么做法。 我主要是决定这道题建图的思想值得借鉴,每样东西原本的价格是a,所以新建一个节点0, 0向i连边,边权为a,这样一共就有b + 1个点,跑kruskal的时候记录加入的边数,=b时就break。 #include <bits/stdc++ 阅读全文
posted @ 2022-10-11 21:53 YHXo 阅读(48) 评论(0) 推荐(0)
摘要: P3796 差不多还是AC自动机的模板,不过求解得问题不同,这里trie树节点end维护以该点结尾的单词的编号,这样方便我们统计每个模式串出现的次数,最后找到次数最多的模式串即可。 #include <bits/stdc++.h> using namespace std; const int N = 阅读全文
posted @ 2022-10-11 21:10 YHXo 阅读(30) 评论(0) 推荐(0)
摘要: P3808 KMP用来求单模式串的匹配,AC自动机用来求多模式串的匹配。 就是给你n个模式串,再给你一个文本串,求有多少个模式串在文本串中出现过。 AC自动机的数据结构基于trie数,像KMP的nxt数组一样维护失配指针fail(寻找fail的过程是用bfs实现的),查询过程中不断向下匹配,匹配不了 阅读全文
posted @ 2022-10-11 20:11 YHXo 阅读(59) 评论(0) 推荐(0)
摘要: 这是一篇由超级菜的OIer写的博客...... LIS就是最长上升子序列,通过DP求解。 普通的求法是$O({n}^{2})$的(相信大家都会写): ##解法1 #include <bits/stdc++.h> using namespace std; const int N = 105, inf 阅读全文
posted @ 2022-10-11 14:46 YHXo 阅读(227) 评论(0) 推荐(0)
摘要: 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 $n$ 元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表 阅读全文
posted @ 2022-10-11 10:00 YHXo 阅读(236) 评论(0) 推荐(1)
摘要: P2392 一道有点意思的题...... 对于每一科的作业, 左右脑各可以解决一门,最后取花费时间较长的作为全部解决完该科作业的答案,计sum为该科作业时间总和,所以当左右脑各花费sum/2时(也就是时间差为0)答案显然是最优的,所以我们要让这个时间差尽可能的小,所以可以用背包。 设背包容量为sum 阅读全文
posted @ 2022-10-11 09:03 YHXo 阅读(33) 评论(0) 推荐(0)
摘要: P3842 每一行走完该行的线段后才能向下一行移动,那么显然可以按行数为阶段进行DP,发现每一行停止的位置不是在左端点就是在右端点,所以设f[i][0\1]表示走完第i行的线段最终停在左/右端点的最短路程, 从该行的左/右端点向下一行的左右端点转移即可,模拟一下可以得到转移方程。 代码如下: 1 # 阅读全文
posted @ 2022-10-11 08:16 YHXo 阅读(44) 评论(0) 推荐(0)