hdu 4705 排列组合
思路:枚举能是A,B,C在一条简单路径上的中点。 计算多少个几何能满足。在用总数减去
#pragma comment(linker, "/STACK:16777216")
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<cstdio>
#include<vector>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define Maxn 200010
#define Maxm 300010
#define LL __int64
#define Abs(x) ((x)>0?(x):(-x))
#define lson(x) (x<<1)
#define rson(x) (x<<1|1)
#define inf 0x7fffffff
#define Mod 1000000007
using namespace std;
LL num[Maxn];
LL snum[Maxn],vi[Maxn];
vector<LL> son[Maxn];
vector<int> head[Maxn];
void dfs(int u)
{
int i,v,sz;
vi[u]=;
snum[u]=;
sz=head[u].size();
for(i=;i<sz;i++){
v=head[u][i];
if(vi[v]) continue;
dfs(v);
snum[u]+=snum[v];
son[u].push_back(snum[v]);
}
}
void predfs(int u,LL sum)
{
int i,v,sz;
vi[u]=;
if(sum)
son[u].push_back(sum);
sz=head[u].size();
for(i=;i<sz;i++){
v=head[u][i];
if(vi[v]) continue;
predfs(v,sum+snum[u]-snum[v]);
}
}
int main()
{
int i,j,u,v;
LL n;
while(scanf("%I64d",&n)!=EOF)
{
memset(snum,,sizeof(snum));
memset(vi,,sizeof(vi));
memset(num,,sizeof(num));
for(i=;i<=n;i++){
son[i].clear();
head[i].clear();
}
for(i=;i<n;i++){
scanf("%d%d",&u,&v);
head[u].push_back(v);
head[v].push_back(u);
}
dfs();
memset(vi,,sizeof(vi));
predfs(,);
LL ans=n*(n-)*(n-)/;
//cout<<ans<<endl;
LL sz;
LL sum=;
for(i=;i<=n;i++){
sz=son[i].size();
sum=;
for(j=;j<sz;j++)
sum+=son[i][j];
for(j=;j<sz-;j++)
ans-=(son[i][j]*(sum-=son[i][j]));
}
printf("%I64d\n",ans);
}
return ;
}
hdu 4705 排列组合的更多相关文章
- HDU 1521 排列组合 指数型母函数
排列组合 Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status D ...
- Hdu 1521 排列组合
a1 n1 a2 n2 ... ak nkn=n1+n2+...+nk从n个数中选r个排列(不是组合噢)// 指数型母函数// 模板#include <iostream> #include ...
- HDU 1521 排列组合 (母函数)
题目链接 Problem Description 有n种物品,并且知道每种物品的数量.要求从中选出m件物品的排列数.例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB&qu ...
- hdu 4535(排列组合之错排公式)
吉哥系列故事——礼尚往来 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- hdu 4497(排列组合+LCM和GCD)
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- hdu 1521 排列组合 —— 指数型生成函数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1521 标准的指数型生成函数: WA了好几遍,原来是多组数据啊囧: 注意精度,直接强制转换(int)是舍去小 ...
- hdu 1521 排列组合【指数型生成函数】
根据套路列出式子:\( \prod_{i=1}^{n}\sum_{j=0}^{c[i]}\frac{x^j}{j!} \),然后暴力展开即可 #include<iostream> #inc ...
- 排列组合+组合数取模 HDU 5894
// 排列组合+组合数取模 HDU 5894 // 题意:n个座位不同,m个人去坐(人是一样的),每个人之间至少相隔k个座位问方案数 // 思路: // 定好m个人 相邻人之间k个座位 剩下就剩n-( ...
- HDU 4497 GCD and LCM(分解质因子+排列组合)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4497 题意:已知GCD(x, y, z) = G,LCM(x, y, z) = L.告诉你G.L,求满 ...
随机推荐
- 【JUnit】EasyMock用法总结
使用EasyMock的总体步骤 1.生成Mock接口 IService mockService = EasyMock.createMock("name", IService.cla ...
- table布局 height=100%无效分析
(从死了一次又一次终于挂掉的百度空间中抢救出来的,发表日期 2014-08-11) 原文链接:http://www.cnblogs.com/gaojun/archive/2012/05/07/2487 ...
- js 基于函数伪造的方式实现继承
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- java中导入常量
import关键字除了导入包之外,还可以导入静态成员,这时JDK5.0以上版本提供的新功能.导入静态成员可以是程序员编程更为方便. 使用import导入静态成员的语法为: import static ...
- css3 过度效果之物体向上冒出
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta nam ...
- Why isn't there a SendThreadMessage function?
Here's an interesting customer question: Windows has PostMessage and SendMessage. It also has PostTh ...
- SCCM2007
Active Directory系统组发现:此方法按照上次运行发现方法时 Active Directory 中的响应返回对象,可发现活动目录OU.全局组.通用组.嵌套组.非安全组. Active Di ...
- 资源管理更新系统V2.0版的一些问题
1.在上传文件夹时现在只能传给吴缤进行上传,不够友好,也降低了上传速度, 办法:用C#写一个WINFORM程序,为用户提供上传功能,登录也使用JAVA提供的WEBSERVICE提供登录验证,然后选择一 ...
- C#编写的多生产者多消费者同步问题
// 多个生产者和多个消费者,能生产n个产品的情况 using System; using System.Threading; public class HoldIntegerSynchronized ...
- 自定义WM_NOTIFY消息
自定义WM_NOTIFY消息 习惯了用自定义用户消息进行各种状态的通知,特别是子窗口与父窗口之间的交互.但ON_MESSAGE没有控件ID的限制,如果有多个子窗口发送同一个消息给父窗口时,父窗口就不知 ...