hdu6810 Imperative Meeting

2023-11-06 02:59
文章标签 meeting imperative hdu6810

本文主要是介绍hdu6810 Imperative Meeting,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://acm.hdu.edu.cn/showproblem.php?pid=6810

参照题解的做法,计算每条边的贡献,公式不想写了,这题其实是个组合数学题,比赛的时候还以为是树形DP

不过还挺难想到那个取min值转换成两个然后把i合并进去发现可以递推求这个东西。。。组合数学功底不足。。。

注意几个细节,首先是需要特判p=(m-1)/2>=1时,那个h[s]才>0,否则都是0

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;const int maxl=1e6+10;
const int mod=1e9+7;int n,m;ll p,ans;
int fa[maxl];
vector<int> e[maxl];
ll son[maxl],fac[maxl],inv[maxl],h[maxl],f[maxl];inline ll qp(ll a,ll b)
{ll ans=1,cnt=a;while(b){if(b&1)	ans=ans*cnt%mod;cnt=cnt*cnt%mod;b>>=1;}return ans;
}inline ll c(ll n,ll r)
{if(n<0 || r<0 || r>n) return 0;return fac[n]*inv[r]%mod*inv[n-r]%mod;
}inline void prework()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)e[i].clear(),son[i]=0;for(int i=2;i<=n;i++){scanf("%d",&fa[i]);e[fa[i]].push_back(i);e[i].push_back(fa[i]);}if(n==1)return;p=(m-1)/2;h[1]=c(n-1,m-1);if(p<1) h[1]=0;for(int i=2;i<=n-1;i++)h[i]=((h[i-1]-(c(i-2,p-1)*c(n-i,m-1-p)%mod))%mod+mod)%mod;for(int i=1;i<=n-1;i++){f[i]=(i*h[i]%mod+h[n-i]*(n-i)%mod)%mod;if(m%2==0)f[i]=(f[i]+c(i,m/2)*c(n-i,m/2)%mod*(m/2)%mod)%mod;}
}inline void dfs(int u,int fa)
{son[u]=1;for(int v:e[u]){if(v==fa) continue;dfs(v,u);son[u]+=son[v];ans=(ans+f[son[v]])%mod;}
}inline void mainwork()
{ans=0;dfs(1,0);
}inline void print()
{printf("%lld\n",ans);
}int main()
{fac[0]=1;for(int i=1;i<maxl;i++)fac[i]=fac[i-1]*i%mod;inv[maxl-1]=qp(fac[maxl-1],mod-2);for(int i=maxl-2;i>=0;i--)inv[i]=inv[i+1]*(i+1)%mod;int t;scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();print();}return 0;
}

 

这篇关于hdu6810 Imperative Meeting的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354092

相关文章

HDU5521 Meeting([好题]最短路径)

题意:一个人在1位置,另一个在n位置,俩人要见面,然后给出m个集合,告诉集合的城市之间的距离都是t。然后问最短路 解法:边太多,直接邻接表是存不下的,所以要换一个存储方式,存与边关联的点,与点关联的边。然后最短路用堆优化的dij算法。还有一点值得注意的是,一个集合只需要跑一次就可以了,因为是最短路跑过来的,集合里都已经是最短的了 #include<bits/stdc++.h>using nam

如何高效的完成Minutes of Meeting

每周三晚上是我们微信群的固定活动时间,交流工作中的SAP技术和非技术问题,分享经验和学习新知识。如果有感兴趣的小伙伴找我加微信群。  本周有小伙伴提出,最近因为每天都在开会和参加workshop,没有时间写Minutes of Meeting(会议纪要),每晚都要加班才能完成,很是困扰,问怎么才能高效的完成Minutes of Meeting。 的确如果工作安排很紧凑,想要尽快的写好Minut

Top Level Meeting

NLP:  ACL EMNLP NAA CV CVPR ECCV ICCV Machine learning and data mining ICML KDD NIPS AI AAAI IJCAI

习题 8-13 外星人聚会(Meeting with Aliens, UVa10570)

原题链接:https://vjudge.net/problem/UVA-10570 分类:枚举法 备注:剪枝 O(n^3)也能过,数据比较水,不过加个数组可以优化到O(n^2) #include<bits/stdc++.h>using namespace std;const int maxn=505;int a[maxn],pos[maxn],b1[maxn],b2[maxn],n;i

[Beta] Scrum Meeting 1 - TEAM LESS ERROR

Scrum Meeting 1 会议情况任务和进度会议截图 会议情况 开展日期:2022/05/23 会议地点:线上采用discord 会议任务:回顾Alpha阶段,查漏补缺 任务和进度 安卓 .apk 安装包可以在这里下载。 我们完成了最后的bug调试和功能测试,在今天尝试进行软件打包和发布。这之中还是遇到了不少的问题,比如iOS发布时需要用到的开发者帐户。构建 iOS

什么是kick-off meeting?

kick-off meeting 意思是“项目启动会”。 kick off源自于足球,就是开球,发球的意思。后来,这bai个足球术语逐渐引入到商业中,引申为“开始做某事”的意思。

什么是All Hands Meeting?

All-Hands,翻译为全体会议。一般国外科技公司(不确定其他行业是不是也有)的工作者都不会陌生。国外的公司没有周例会、季度总结会、公司年会的等各种概念,All-Hands一般就充当了这种作用。翻译本文的时候适逢阿里巴巴公司年会举行,声势浩荡。通过本文,我们可以看看在一个老外眼中,一个理想的All-Hands应该是怎样的,感受一下中西公司文化之间的差异。 All-Hands meet

Scrum之Meeting

Scrum有三个仪式:Sprint规划会,Sprint评审会,Scrum每日站会 Sprint Planning Meeting(Sprint规划会) 根据Product Owner制定的产品或项目计划在Sprint的开始时做准备工作。Product Owner可以是客户或者客户代表或代理。对于产品型的公司,客户就是市场,Product Owner扮演市场代理的角色。一个Product Ow

hdu 5521 Meeting

文章目录 题目链接: 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5521 这道题难点就是在建图,普通建图是装不下的,每个集合多弄出一个点,第i个集合作为第i+n个点,于是总共就只有n+m个点,集合里的点与集合连一条边就行了 比如第一个样例的点就应该是这样: #include"bits/stdc++.h"#define o

Codeforces 723A The New Year: Meeting Friends

题目链接http://codeforces.com/contest/723/problem/A 思路 大水题,暴力求解 #include<stdio.h>#include<algorithm>#include<math.h>#define inf 99999999using namespace std;int main(){int a1,a2,a3;scanf("%d%d%d",