上一页 1 2 3 4 5 6 7 8 ··· 17 下一页
摘要: 显然是$DP$。 设$dp[i][0/1/2]$代表以i为根且$i上有士兵放置/i被控制但i上没有士兵/i没有被控制$的最小代价。 $g[i][0/1/2]$代表对应的方案数。 然后运用乘法原理和加法原理转移即可。 转移是我写过的树形$DP$里比较$X$(不可描述)的。 所以还是看代码吧。。(虽然可 阅读全文
posted @ 2019-03-06 21:42 Xu-daxia 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 我们把边从小到大排序,然后依次插入一种权值的边,然后把每一个联通块合并。 然后当一次插入的边不止一条时做矩阵树定理就行了。算出有多少种生成树就行了。 剩下的交给乘法原理。 实现一不小心就会让程序变得很丑 阅读全文
posted @ 2019-03-05 21:33 Xu-daxia 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 大体思路是先求出来$f[i]$代表有至少$i$个位置相同的点对数。 然后就已经没什么好害怕的了(跟BZOJ3622一样) 然后这个$f[i$]怎么求呢? 最无脑的方法就是枚举位置,然后$hash$表记一下每种情况出现多少次然后把$\sum_{情况个数}{情况次数 (情况次数 1)}$加到$f[$枚举 阅读全文
posted @ 2019-03-05 21:27 Xu-daxia 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 因为当$A include include include include using namespace std; const int mod=1e9+7; int n,m,mx,dp[2100][2100][2],ans; int read(){ int sum=0,f=1;char ch=ge 阅读全文
posted @ 2019-03-05 21:15 Xu-daxia 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 乍一看我不会。 先不考虑加点。 先考虑没有那个除$2$。 考虑每一条边的贡献,假设某一条边把这棵树分成大小为x,y的两个部分。 那么这条边最多可以被使用$min(x,y) 2$次(因为有进有出),即贡献最大为$min(x,y) 2 $这条边的权值。 那么能不能让每一条边的被使用达到最大呢? 显然可以 阅读全文
posted @ 2019-03-05 21:07 Xu-daxia 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 一般的思路是$dp[i][j]$代表前i个商店购买集合为j的最小费用,枚举每一个商店然后枚举子集。复杂度$O(n3^m)$过不了。 先把$dp[i][j]$设为$dp[i 1][j]$表示钦定在这个商店购物,然后在$dp[i]$中做背包。 具体就是枚举每一个商品买不买。 然后惊奇的发现这样复杂度为$ 阅读全文
posted @ 2019-03-04 08:49 Xu-daxia 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 不会最小树形图的出门左转 其实如果确定每种商品第一件的购买顺序,那么剩下的商品肯定是以最优惠价格购买的。 如何确定各种商品第一件购买时的最小价值呢? 考虑如果购买了$a_i$这种商品,那么就能以$c_i$的价格购买$b_i$这种商品,考虑从$a_i$往$b_i$连权值为$c_i$的有向边。 初始建一 阅读全文
posted @ 2019-02-26 14:23 Xu-daxia 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 明显是一道斯坦纳树的题。 然而这题只需要属性相同的点互相连接。 我们还是照常先套路求出$ans[s]$。 然后对$ans[s]$做子集DP即可。 具体看代码。 cpp include include include include include include using namespace st 阅读全文
posted @ 2019-02-26 14:12 Xu-daxia 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 斯坦纳树的板子题。 斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。 最小生成树是在给定的点集和边中寻求最短网络使所有点连通。 而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小。 然而我解决问题并不需要你知道什么关于斯坦纳树的知识。 会状压(子集)DP和最短路就行了 阅读全文
posted @ 2019-02-26 14:03 Xu-daxia 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 斯坦纳树的板子题。 斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。 最小生成树是在给定的点集和边中寻求最短网络使所有点连通。 而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小。 然而我解决问题并不需要你知道什么关于斯坦纳树的知识。 会状压(子集)DP和最短路就行了 阅读全文
posted @ 2019-02-26 13:55 Xu-daxia 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 如果权值为$1$就是最长反链。 然而并不是。考虑用费用流。 把每一个盒子$i$拆成i和$i+n$。 设源点为$S$,汇点为$T$。 $S$向每一个i连容量为$1$,费用为$L[i] W[i]$的边 每一个$i$向$T$连容量为$1$,费用为$0$的边。 每一个$i$向$i+n$连容量为$1$,费用为 阅读全文
posted @ 2019-02-26 11:48 Xu-daxia 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 根据期望的线性性答案就是捕捉每一只精灵的概率之和。 捕捉一只精灵的方案如下: 1.使用一个$A$精灵球,贡献为$A[i]$ 2.使用一个$B$精灵球,贡献为$B[i]$ 3.使用一个$A$精灵球和一个$B$精灵球,贡献为$A[i]+B[i] A[i] B[i]$ 然后我们可以这样建图: 源点$S$向 阅读全文
posted @ 2019-02-26 11:30 Xu-daxia 阅读(221) 评论(0) 推荐(1) 编辑
摘要: 没学过最小割树的出门左转。 我们已经知道了两点的最小割就是最小割树上,对应两点之间路径的权值的最小值。 找到最小割树中权值的最小的边。 那么一定是先选完一侧的点在选完另一侧的点。 因为当前边最小,那么左右横跳的贡献最小(比在一侧内跳的贡献小)。 所以一直递归下去就行了。 cpp include in 阅读全文
posted @ 2019-02-26 11:16 Xu-daxia 阅读(340) 评论(0) 推荐(1) 编辑
摘要: 首先如果点权全都为正,就可以直接选所有的点。 活在梦里。。 考虑枚举一个点$i$,作为我们选择的集合中的一个点。 然后我们把另一个点$j$选入集合的时候必须把两棵树中$i$和$j$路径上的点全都选入集合。 似乎想到了什么。 闭合子图。 不就是一个最大权闭合子图吗。 然后我们按最大权闭合子图的模型建图 阅读全文
posted @ 2019-02-26 10:59 Xu-daxia 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 给出一种最小割的方法。 设$num1[i]$,$num2[i]$为第i种形状的点心的两种口味的数量 设$type[i]$,$type[i]$为第i种形状的点心的两种口味 假设$num1[i] include include include include include include using 阅读全文
posted @ 2019-02-26 10:43 Xu-daxia 阅读(239) 评论(1) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 17 下一页