![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bzoj
ljyloi
OIer
展开
-
bzoj3028
题目链接:bzoj3028 题意: 承德汉堡:偶数个 可乐:0个或1个 鸡腿:0个,1个或2个 蜜桃多:奇数个 鸡块:4的倍数个 包子:0个,1个,2个或3个 土豆片炒肉:不超过一个。 面包:3的倍数个 你要用这些食物凑成n个,求方案数。 n<=10^500 题解: 这道题要用生成函数原创 2016-02-17 13:27:17 · 515 阅读 · 0 评论 -
bzoj1316
题目链接:bzoj1316 题意: 现在给你一个n个点的树,给你q个询问,每次询问,询问树上是否有一条长度为k的路径。 n<=10000,q<=100. 题解: 我们发现q是极小的,那么我们只要每次询问能够做到的复杂度限制就不会太高,我们不妨考虑只有一个询问,要知道树上是否有一条长度为k的路径,我们不妨用点分治的方法来对路径进行分类,这样我们只要能够在较低的复杂度下原创 2016-02-17 13:33:54 · 382 阅读 · 0 评论 -
bzoj1997
题目链接: bzoj1997 题意: 给你一个包含所有点的哈密尔顿回路的图,判断是否是平面图。n<=200,m<=10000,T<=100 题解: 平面图的判定算法是一个很复杂的算法,然而这道题通过一个性质,便可以在原问题上加以转换。它告诉我们图中包含一个包含所有点的哈密尔顿回路。此时,我们不妨把哈密尔顿回路看成一个环,我们不难发现哈密尔顿回路以外的任意一条边,它都是连接了环原创 2016-02-17 13:44:11 · 502 阅读 · 0 评论 -
bzoj1211
题目链接:bzoj1211 题意: 给你一个n个点,以及每个点的度数,求他们构成的树的个数。 N<=150 题解: 这道题要用到一个东西,叫prufer序列,它可以唯一表示一棵树,树也有唯一的prufer序列,它的构造和还原,是这样的。 构造:选取编号最小的叶子节点删掉,并将它的父亲加入到prufer数列中,直到树上还有两个节点。假设一个点入度为d,它最多有可能在pruf原创 2016-02-17 13:48:46 · 455 阅读 · 0 评论 -
bzoj3530
题目链接:bzoj3530 题解: 这道题很容易可以想到数位dp,如何在保证限制下进行dp呢? 我们可以先将字符串建成ac自动机,这样,我们就可以在dp上加一维表示当前在ac自动机上的哪个点,我们只要dp转移时,不转移给那些不能走的点就可以了,我们用记忆化搜索来解决这个问题。只要在深搜时记录好已经确定的前缀在ac自动机上所走到的节点,我们只从合法状态转移过来就行了。dfs的边界原创 2016-02-17 13:57:36 · 421 阅读 · 0 评论 -
bzoj1831
题目链接:bzoj1831 题意: 给你一个长度为n的序列,序列内的数值范围为1到k,现在有一些空白,你可以随意填1到k的数,是这个序列的逆序对数最少。n<=10000,k<=100 题解: 当看到这个题的时候,第一反应是用dp来做,然而dp是有后效性的,当前最优的选择可能会影响后面的选择,所以一时觉得困难。要充分发掘题目中的性质,可以猜想填进去的数会有什么性质,比如填进去的数从左往原创 2016-02-17 13:39:37 · 416 阅读 · 0 评论 -
bzoj1925
题目链接:bzoj1925 题解: 这个做法貌似和网上的做法很不一样,看来是我智商太低了,代码比网上的做法要长一些。 这道题我想了比较久,最后想出了一个容易理解的做法。我们不妨设f[i][1/0]表示i个数构成波动数列,开头是上升/下降的方案数,我们可以通过枚举第i个数的位置,第i个数肯定是波峰,这是可以确定的,从而我们可以知道i前面的数列和后面的数列的形态,这样我们就可以计算原创 2016-02-17 14:07:21 · 468 阅读 · 0 评论