关闭
当前搜索:

HDU4903 The only survival(计数神题)

题目链接:HDU 4903 题目大意:给出n个点的无向完全图,确定每一条边的长度(1~L之间的任意数),使得1到n的最短路是k。输出方案数对1000000007取模,多组数据(组数 题解:听过一遍没有懂,自己又琢磨了很长时间稍微懂了一些。 大概是先枚举1到每个点的最短路dis(优化之后变成枚举最短路为某个值的点有多少个),按dis排序后,从dis大的点向dis小的点连边,满足:对于任意dis[...
阅读(66) 评论(3)

BZOJ 4006 管道连接(最小斯坦纳树+状压DP)

题目链接:BZOJ 4006题目大意:n个点,其中p (p<=10) 个重要的点,m条无向边。p个重要点分成几类,求同类重要点互相联通的最小花费。题解:说说我的理解,不一定对。 只需要某些点联通,想到最小斯坦纳树;看到 p<=10,想到状压。 令dp[i][status]表示i点为(某棵)最小斯坦纳树的根,status表示的点都依照题意同颜色建立起通道的最小花费,最终答案 max { dp[i][2...
阅读(66) 评论(0)

codeforces 757F Team Rocket Rises Again(最短路+支配树)

今天刚刚看了支配树,然而恕我太弱并没有看明白Lengauer-Tarjan算法,比较懵QAQ……不过我倒是学会了在DAG上构建支配树,就贴一道简单题过来吧O(∩_∩)O。如何在DAG上求支配树? 有向无环图(DAG)里我们可以按照拓扑序构建支配树。 假设当前我们构造到拓扑序中第x个节点编号为v,那么此时支配树中已经有拓扑序第1~x-1个节点了。考虑所有能够直接到达v的节点,对于这些节...
阅读(86) 评论(0)

洛谷P2422 良好的感觉(简单数据结构复习)

这道题不是很难,只是太久没有敲过ST表和单调栈,就当贴个板子咯。而且,这道题的做法有很多,也比较常用,所以写一写这个题的题解吧 (*^__^*) 嘻嘻~题目链接:洛谷 P2422 题目大意:找出一段区间,使得“区间最小值×区间和”最大。 题解: 单调栈 这种题有一个常见的思路是用枚举最小值是谁,然后就能确定区间长度。所以可以用正反两遍单调栈,处理出某个点作为最小值时左右两边各能扩展到哪里。最后...
阅读(87) 评论(0)

BZOJ3312 不找零(状压DP)

题目链接:BZOJ 3312 题目大意: 按顺序买 N个物品(1 <= N <= 100,000),第i个物品花费c(i),(1<=c(i)<=10,000),用K(1<=K<=16)个面值的范围是 1..100,000,000 硬币支付。购买过程中,可随时停下来付款,每次付款只用一个硬币,支付从上一次支付后到现在的这些所有物品的价格(如果钱够)。如果硬币面值大于所需的费用,不找零。计算买完N个...
阅读(75) 评论(0)

BZOJ1079 着色方案(高维DP+神奇的状态)

题目链接:BZOJ 1079 题目大意:n个木块,排成一行,染成k种颜色,相邻两块颜色不同,求方案数。(各颜色有c1,c2,……,ck个,1<=k<=15,1<=ci<=5,颜料正好可以染完所有木块)题解:这道题是个DP。 - 有一个比较好想的思路是写15维的DP,每一维记录某种颜色还剩几个,但5^15的复杂度是肯定过不了这个题的。所以就有一种巧妙的状态设计: 按ci将颜色分类,因为c在1到5之...
阅读(84) 评论(0)

BZOJ1087 互不侵犯king(状压DP)

题目链接:BZOJ 1087 题目大意:在N×N (1<=N<=9)的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。(国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子) 题解:看N的范围1<=N<=9,大概就是状压DP了。把行的放法压起来,状态还是比较好想的。 f[i][j][now]表示前i行一共放了j个king,并且第i行的放法为now时的方案总...
阅读(76) 评论(0)

vijos1264 神秘的咒语(DP)

题目链接:vijos 1264 题意:求两个序列的最长上升公共子序列 题解:f[i,j] 表示以a序列的前i个为结尾、以b序列的第j个为结尾的最长上升公共序列长度,转移见代码(还是比较好理解的吧(⊙v⊙))。 code#include #include #include #include #include...
阅读(155) 评论(0)

BZOJ 4010 菜肴制作(拓扑排序)

题目链接:BZOJ 4010 题解: 拓扑排序是比较明显的,两种思路: 正着,每次找字典序最小的 倒着,每次找字典序最大的 如果有限制条件,那么最优解是(4,1,2,3),但正着找字典序最小找到的却是 (2,3,4,1),因此正着行不通。反着的正确性想想似乎有道理,反向建边,每次字典序最大的放到最后,就能让字典序小的尽量靠前了吧。(我不会证明QwQ……) code(代码还是比较简单的...
阅读(118) 评论(0)

Usaco 奶牛抗议(树状数组+DP+离散化)

题目链接:奶牛抗议 题解:用 dp[i] 表示前 i 头奶牛的分组方案,s[i] 表示前 i 头奶牛的理智度的和,那么就有转移 dp[i]=sum{ dp[j] } ( s[i]-s[j]>=0 且 i>j )。所以,把前缀和hash成树状数组下标,树状数组里存dp的值。时间复杂度 O(n*log n)。 code#include #include #incl...
阅读(86) 评论(0)

BZOJ1123 BLO(tarjan割点)

题目链接:BZOJ 1123 题目大意:一张无向图中,对于每一个点,求删去这个点后有多少对点不能相互到达。 题解:tarjan求割点。求出删除一个点后形成的几个联通块,任意不同联通块里的点不能互相到达。代码(有参考hzwer大神(*^__^*) )#include #include #include #include #incl...
阅读(83) 评论(0)

BZOJ2038 小z的袜子(分块版莫队)

题目链接:BZOJ2038 第一次看莫队算法,写写感受。 看的第一篇博客是用平面哈夫曼距离最小生成树写的,看懂了原理,但不会写代码。后来看到了一个更简单的替代品分块,时间复杂度相近,为 n*sqrt(n) 。原理不难理解,基本思路就是通过改变处理询问顺序,降低复杂度。分块版的是按询问的左端点所在块的编号为第一关键字,右端点为第二关键字,排序之后直接暴力就好了。复杂度分析(每次修改复杂度为 O(1...
阅读(124) 评论(0)

树链剖分+线段树

之前就学过树链剖分的原理,只会树链剖分LCA,今天做了一道“树链剖分+数据结构”的题,虽然很简单,但可以当模板用一用,粘到这里。树链剖分简单描述(可能不大对): 第一步就是划分轻重边,按每一棵子树的大小,与形成子树最大的一个子节点是重边,其余为轻边,然后就得到了轻重链。 之后就可以用数据结构维护一些东西了,可以是点也可以是边。 对节点 x 到 y 间的路径进行操作时,分别找到 x 和 y 所在链(...
阅读(114) 评论(0)

BZOJ3631 松鼠的新家(差分)

题目链接:BZOJ 3631 题解:从节点x走到节点y经过的所有节点都要放一块糖果,树上两个点之间的路径是唯一的,经过lca(x,y),所以可以差分来做。x 和 y 处 +1,lca(x,y) 和 fa[lca(x,y)] 处 -1,从下到上累加答案即可。又因为一条路径的终点是下一条路径的起点,除了a1和an,其他节点处的糖果数都多算了一次,减掉1;an处不用放糖果,也减掉1;PS:倍增lca好久...
阅读(180) 评论(0)

BZOJ2152 聪聪可可(树形DP/点分治)

题目链接:BZOJ2152 题意大致是找树中多少点对之间的距离%3为0 题解:可以树形DP,也可以点分治,两个代码都粘过来咯 (上面是树形DP,下面是点分治)//树形DP #include #include #include #include #include using name...
阅读(89) 评论(0)
17条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1843次
    • 积分:184
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    友情链接