hdoj4705Y【树形dp+简单组合数学】
来源:互联网 发布:java concurrent i自增 编辑:程序博客网 时间:2024/06/07 02:28
Y
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2349 Accepted Submission(s): 627
Problem Description
Sample Input
41 21 31 4
Sample Output
1Hint1. The only set is {2,3,4}.2. Please use #pragma comment(linker, "/STACK:16777216")
Source
2013 Multi-University Training Contest 10
题意在一棵树上选三个节点没有一条路径相连;
先求出在一条路径上的种类数用总数减去即可;
#include<cstdio>#include<cstdlib>#include<cstring>#include<vector>#include<algorithm>#define MAX 100005#define LL long longusing namespace std;vector<int>vec[MAX];int father[MAX],son[MAX];int dfs(int node,int pre){son[node]=1;father[node]=pre;for(int i=0;i<vec[node].size();++i){int u=vec[node][i];if(u!=pre)son[node]+=dfs(u,node);}return son[node];}int main(){int n,i,j,k;while(scanf("%d",&n)!=EOF){for(i=0;i<=n;++i)vec[i].clear();for(i=0;i<n-1;++i){int a,b;scanf("%d%d",&a,&b);vec[a].push_back(b);vec[b].push_back(a);}dfs(1,-1);LL ans=0,LT,m;for(i=1;i<=n;++i){LT=0;for(j=0;j<vec[i].size();++j){int u=vec[i][j];if(u==father[i])m=n-son[i];else m=son[u];LT+=m*(n-m-1);}ans+=LT;}printf("%lld\n",(LL)n*(n-1)*(n-2)/6-ans/2);}return 0;}
0 0
- hdoj4705Y【树形dp+简单组合数学】
- Puzzles (树形dp+组合数学)
- 51Nod - 1677 树形dp + 组合数学
- hdu 4661 Message Passing(树形DP&组合数学)
- BZOJ 4013 HNOI2015 实验比较 树形DP+组合数学
- 【bzoj4013】[HNOI2015]实验比较 树形dp+组合数学
- bzoj 4013: [HNOI2015]实验比较 (树形DP+组合数学)
- [四校联训]切树游戏-树形DP-组合数学
- Round Numbers((组合数 + 简单组合数学)||(数位dp))
- HDOJ题目4705 Y(简单树形DP+数学)
- CF285E DP+组合数学
- 组合数学 dp Sumsets
- hdu4532 组合数学+dp
- HDOJ4832Chess【dp+组合数学】
- hdu4248 组合数学+DP
- 周六日常训练,背包dp,树形dp,简单dp以及很多数学?
- codeforces 500D - New Year Santa Network (树形DP+组合数学)
- HDU 4275 Color the Tree(哈希+树同构+组合数学+树形dp)
- 《程序员面试金典》--找出链表中倒数第k个节点
- 利用Python 的 Pandas进行数据分析
- Oracle数据库SQL语句大全
- Windows下如何查看android中指定APP的log日志
- 设置textView的 输入框
- hdoj4705Y【树形dp+简单组合数学】
- MongoDB学习日记 - java代码(五):增删改查
- java三大框架起源
- 字典
- js合并数组
- js时间日期处理
- 打造高性能JAVA应用你需要知道的
- oracle数据导入导出表等系列操作总结
- 将开发板中显示的图像保存为bmp