这道题主要利用了最小生成树的两个性质 最小生成树每种边权的数目固定不变 最小生成树每种边权带来的连通状况一定唯一 由于每种边权的只有不到10种,所以直接穷举然后乘法原理即可 1 const mo=31011; 2 type node=record 3        x,y,w:longint; 4      end; 5 6 var a:array[0..10
转载 2014-09-05 21:43:00
81阅读
2评论
这个可以边做MST边求生成树的方案数,就是在加入相同边权的时候统计各个联通块的生成树方案数并缩成一点(因为
原创 2022-08-31 18:05:07
60阅读
最小生成树 kruskal 分块(?)
转载 2016-07-12 22:41:00
70阅读
2评论
Description 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方案数对31011的模就可以了。 Input 第一行包含两个数,n和m,其中1<=n<=100; 1<=m<=1000;
转载 2015-01-10 22:07:00
24阅读
2评论
我就爱写矩阵树定理!!! 就不写暴力!!! 1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3584 Solved: 1429 [Submit][Status][Discuss] Description 如
转载 2017-07-18 13:28:00
85阅读
2评论
1016: [JSOI2008]最小生成树计数 Description 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方
原创 2022-01-05 13:50:40
67阅读
http://www.elijahqi.win/archives/1111 Descripti
原创 2022-08-08 13:46:18
75阅读
sort改成qsort就A了???玄学操作。。其实觉得好像这题是暴力。。但是波老师好像做了半早上。。 首先肯定是先把最小生成树求出来,然后弄个结构体,表示l~r这些边值相等,v表示用了多少这样的值的边,然后爆搜可能的情况。
转载 2017-10-09 11:39:00
44阅读
2评论
题意:给定一张n<=100,m<=1000的无向图,另外同样权值的边不超过10条,求最小生成树的数目。 思路:首先我们将不同的权值从小到大分开考虑。 我们证明下面定理:一个无向图全部的最小生成树中某种权值的边的数目均同样。 開始时。每一个点单独构成一个集合。 首先仅仅考虑权值最小的边,将它们所有加入
转载 2017-08-16 17:17:00
14阅读
题目链接:点击打开链接 裸题 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include template inline bool rd(T &ret) { char c; int sgn; if (c = getchar(),
原创 2021-08-13 13:59:40
72阅读
题目链接:点击打开链接 裸题 #pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #
原创 2022-01-10 17:02:38
29阅读
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1016 从 Kruskal 算法的过程来考虑产生多种方案的原因,就是边权相同的边有一样的功能,从而带来了多种选择; 对于每一层次(边权相同)的边来说,它们最终会把图进一步连通; 所以在这一层之前
转载 2018-07-02 09:38:00
25阅读
2评论
Description   现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方案数对31011的模就可以了。 Input   第一行包含两个数,n和m,其中1<=n<=100; 1<=
原创 2021-07-28 10:10:39
68阅读
今天真是一点调题的心情都没有呢~粘hzwer学长的模板。 我们注意到每种权值的边在最小生成树内的个数总会是一样的。再看到不超过10个,暴力dfs即可。 #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#def
转载 2016-02-28 14:44:00
39阅读
2评论
对着模板一顿乱敲(很无奈)#pragma comment(linker,"/STACK:1024000000,1024000000")#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#inc
原创 2022-11-09 18:35:37
83阅读
Description  现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的 最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生 成树可能很多,你只需要输出方案数对31011的模就可以了。 Input  第一行包含两个数,n和m,其中1<=n<=100; 1<=m<=1000; 表示该无向图的
原创 2022-04-19 16:15:13
201阅读
Description 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的 最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生 成树可能很多,所以你只需要输出方案数对31011的模就可以了。 soluti
转载 2017-12-14 21:41:00
33阅读
2评论
def tran(num, D): i = 0 n = 0 while num > 0: t = int(num % 10) if D == t: i = i + 1 n = n + D * 10 ** (i - 1) num = int(num / 10) ret...
原创 2021-07-12 15:05:09
41阅读
Kruskal/并查集+枚举 唉我还是too naive,orz Hzwer 一开始我是想:最小生成树删掉一条边,再加上一条边仍是最小生成树,那么这两条边权值必须相等,但我也可以去掉两条权值为1和3的,再加上权值为2和2的,不也满足题意吗?事实上,如果这样的话……最小生成树应该是1和2,而不是1...
原创 2021-08-04 12:53:46
142阅读
http://www.lydsy.com/JudgeOnline/problem.php?id=1016 题意: 思路: 一个无向图所有的最小生成树中某种权值的边的数目均相同。 引用一篇大牛的证明: 我们证明以下定理:一个无向图所有的最小生成树中某种权值的边的数目均相同。 开始时,每个点单独构成一个
转载 2017-08-12 08:40:00
80阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5