题意:

给定一棵无向树,求出树上所有顶点的全排列。

如1 3 2 4 5 与 1 3 4 5 2,定义每种全排列的值为1->3+3->2+2->4+4->5的最短路径之和。

求出所有全排列的值。

思路:

对于这样一个问题,考虑到数据范围,如果设计一种针对每种全排列而进行的算法显然是不现实的,必须得从整张图进行考虑。

可以发现在整张图中,每条边被遍历的次数都是固定的。因此可以从这个角度入手进行求解。

可以发现对于每一条边而言,该边被遍历的次数为

(左端点的的点数)*(右端点的点数)* 2 *(n-1)* (n-2)!

(n-1)为在n个顶点的全排列中两个相邻点最多出现的次数,2为两个相邻点可以交换位置,(n-2)!为确定两个点之后,其他的点有(n-2)!中排列方式,由此对每条边进行计算即可。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define rep(i,a,b) for(ll i = a;i <= b;i++)
using namespace std;
const int N = 2*1e5+1000;
typedef long long ll;
const ll mod = 1e9+7;ll n;
struct Edge{int to,next;ll w;
}e[N];
int head[N],tot;
ll size[N];
ll ans;void init()
{rep(i,1,n) head[i] = 0;tot = 1;ans = 0;
}
ll fac[N];
void add(int x,int y,int z)
{e[++tot].to = y; e[tot].next = head[x]; head[x] = tot; e[tot].w = (ll)z;
}void dfs(int u,int fa) //fa:父节点
{size[u] = 1;   //mxson:重儿子的大小for(int i = head[u]; i ; i = e[i].next){int v = e[i].to;if(v == fa) continue;  //控制搜索路径不会搜到父节点dfs(v,u);size[u] = size[u] + size[v];ans = ans+(e[i].w*(n-size[v]))%mod*size[v]%mod;//    printf("ans1 : %lld\n",ans);ans %= mod;//    printf("size:%d,u:%d\n",size[u],u);}
//    printf("ans:%lld\n",ans);
}int main()
{fac[0] = 1;fac[1] = 1;for(ll i = 2;i <= 100000;i ++){fac[i] = fac[i-1]*i%mod;}while(~scanf("%lld",&n)){init();rep(i,1,n-1){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c); add(b,a,c);}dfs(1,0);ans = (ans*((ll)2*(ll)n-(ll)2)%mod);//    printf("ans2 : %lld\n",ans);if(n >= 2)ans = ((ans % mod)* fac[n-2]) %mod;printf("%lld\n",ans);}return 0;
}

【ccpc网络赛】Tree and Permutation【1009】【树上+组合数学】相关推荐

  1. Jumping Monkey(CCPC网络赛重赛)

    Jumping Monkey(CCPC网络赛重赛) 题意: n个点的树,每个点有一个不同的值aia_iai​.现在一个猴子在树上,这个猴子从点u跳到点v当且仅当ava_vav​是u到v最短路径上的最大 ...

  2. (四面体)CCPC网络赛 HDU5839 Special Tetrahedron

    1 CCPC网络赛 HDU5839 Special Tetrahedron 2 题意:n个点,选四个出来组成四面体,要符合四面体至少四条边相等,若四条边相等则剩下两条边不相邻,求个数 3 思路:枚举四 ...

  3. 2020 CCPC网络赛 赛后感

    第一次参加,做过去年19年网络赛的题,去年是四个水题稳做出,然后还有两个线段树和树状数组的题(好像是),所以本来对这次网络赛挺有信心的(去年好像四个题就能进,当然要手速快). 这次网络赛还是有四个水题 ...

  4. CCPC 网络赛总结

    下午这场比赛一开始就没有给自己太大的压力,本着把水题全部 AC 的意愿 大学第一次网络赛就这样结束了,一开始跟着榜做,签到题很快就解决了,不过这次的比赛真的是刷新了我对题意的认识,各种数学公式交叉在一 ...

  5. hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心

    题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列, ...

  6. HDU 6889 Graph Theory Class(CCPC网络赛)

    hdu 6889 传说中的人均min25 题意: n个点的完全图,边权为lcm(i+1,j+1),求mst(最小生成树) 题解: 我一开始以为是推公式,毕竟数据范围这么大,但是自己画图来看看mst的情 ...

  7. HDU 5842—— Lweb and String CCPC 网络赛 1011

    题意: 按字母出现的顺序编号,问最长上升子序列. 思路: 最长为26,出现一个新的字母就加上,答案为字母的种数,无聊的题目. code: #include <cstdio> #includ ...

  8. 2017 ccpc网络赛 1001 Vertex Cover(二分图 构造)HDU6150

    题意:"最小点覆盖集"是个NP完全问题 有一个近似算法是说-每次选取度数最大的点(如果有多个这样的点,则选择最后一个) 让你构造一个图,使得其近似算法求出来点数是你给定的覆盖点数的 ...

  9. 2018 CCPC网络赛1004 HDU6441 Find Integer

    https://www.zybuluo.com/yang12138/note/1262383 转载于:https://www.cnblogs.com/yang12138/p/9537246.html

  10. 2019年CCPC - 网络赛E:huntian oy【杜教筛】

    题目: HDU---6706:huntian oy 题意: 给定N,a,b,求下面式子的值(求和后再mod 1e9+7): 分析: 一直怯于杜教筛不敢去学习[一看就会的杜教筛],今天终于迈出了这一步, ...

最新文章

  1. 精品德国软件 UltraShredder 文件粉碎机
  2. 五行塔怎么吃第五个_红毛丹怎么吃 吃红毛丹的五个好处
  3. 使用StaticLayout实现文字转化为图片的效果(类似发送长微博)
  4. Anaconda-- conda 创建、激活、退出、删除虚拟环境
  5. boost::mpi模块围绕环传递数据的通信器的测试
  6. PHP分页的limit与offset
  7. 这些年遇到的坑爹问题汇总
  8. 关于HTTP协议及SOCKET通信
  9. 实例构造器和类(引用类型)
  10. ssrs 基于表达式显示_基于表达式的访问控制
  11. fla 走迷宫游戏 源码_迷宫新玩法,果断一试
  12. python访问网站添加请求头_Python headers请求头如何实现快速添加
  13. Linux系统开发9 线程同步
  14. guava中Range的使用方法(com.google.common.collect.Range)
  15. Android开发笔记(二十三)文件对话框FileDialog
  16. 解决路由环路问题的探讨
  17. Linux CentOS 7.2 安装 Tomcat 8 服务器
  18. 小程序wx.showActionSheet 调起转发、分享
  19. ipq4029 高通 芯片 openwrt 资料收集
  20. linux查看db2表空间大小,DB2查看表空间大小及使用情况

热门文章

  1. 工作那些事(四)大公司VS小公司
  2. 关于silverlight打印功能
  3. MySQL Oracle默认排序_PostgreSQL、MySQL、Oracle,查询的默认排序是怎样的?
  4. 更改wordpress上传文件大小限制
  5. OpenCV-图像处理(20、霍夫变换-直线)
  6. ppt地图分布图一块一块的怎么做_没想到PPT还能这样做动态地图,实在是太炫酷了,用了再也离不开...
  7. linux常用命令 less,Linux常用基本命令(less)
  8. java文件的打包和解包,Java包装类:什么是包装类对象,什么是打包和解包,当编译遇到自动打包和解包时会发生什么?...
  9. java 字符串数组排序_Java 使用泛型为不同类型数组排序
  10. HP 滤波 (Hodrick Prescott Filter)