乃爱与城市拥挤程度

2024-03-16 23:48
文章标签 城市 程度 拥挤 乃爱

本文主要是介绍乃爱与城市拥挤程度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

乃爱与城市拥挤程度

题解

本题很明显是一道树形dp,我们可以分别记录下当前节点的和与积。

在i的子树上,siz_{i}_{j}表示距点i距离为j的点的数量,mul_{i}_{j}表示距点i为j的点的积,即当前位置当k=j时的拥堵值。

f_{i}为当前点为选定点的人数,g_{i}为当前点为选定点的拥挤度乘积。

每个点对他的祖先的贡献为\frac{mul_{fa_{z},k-z}}{mul_{fa_{z-1},k-z-1}}。我们只需记录下它子孙对其的贡献,与其本身的值即可。

源码

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<stack>
#include<vector>
#include<queue>
#define MAXN 1000005
using namespace std;
typedef long long LL;
const LL INF=0x3f3f3f3f;
const int mo=1e9+7;
int n,k,father[MAXN];
LL siz[MAXN][15],mul[MAXN][15];
LL dp[MAXN],ct[MAXN],num[15];
int nxt[MAXN],to[MAXN];
int head[MAXN],tot;
#define gc() getchar()
template<typename _T>
inline void read(_T &x)
{_T f=1;x=0;char s=gc();while(s>'9'||s<'0'){if(s=='-')f=-1;s=gc();}while(s>='0'&&s<='9'){x=(x<<3)+(x<<1)+(s^48);s=gc();}x*=f;
}
void addEdge(int u,int v)
{to[++tot]=v;nxt[tot]=head[u];head[u]=tot;
}
void dfs(int u)
{for(int i=0;i<=k;i++)siz[u][i]=mul[u][i]=1LL;for(int i=head[u];i;i=nxt[i]){int v=to[i];//printf("-->%d %d\n",i,to[i]);     if(v==father[u]) continue;father[v]=u;dfs(v);for(int j=1;j<=k;j++){siz[u][j]+=siz[v][j-1];(mul[u][j]*=(mul[v][j-1]*siz[v][j-1])%mo)%=mo;}}
}
LL qkpow(LL a,LL s)
{LL t=1;while(s){if(s&1)t=(t*a)%mo;a=(a*a)%mo;s>>=1;}return t;
}
void dfs2(int u,int fa)
{  memset(num,0,sizeof(num));LL dep=k,now=u;dp[u]=num[k]=siz[u][k];while(--dep&&father[now]){dp[u]+=siz[father[now]][dep]-siz[now][dep-1];num[dep]=dp[u];now=father[now];}if(father[now]) dp[u]++;dep=k,now=u;ct[u]=mul[u][k]*dp[u]%mo;while(--dep&&father[now]){(ct[u]*=mul[father[now]][dep]*qkpow(mul[now][dep-1]*siz[now][dep-1]%mo,mo-2)%mo)%=mo;(ct[u]*=dp[u]-num[dep+1])%=mo;now=father[now];}for(int i=head[u];i;i=nxt[i]){int v=to[i];if(v==fa) continue;dfs2(v,u);}
}
int main()
{ read(n);read(k);for(int i=1;i<n;i++){int u,v;scanf("%d %d",&u,&v);addEdge(u,v);addEdge(v,u);}dfs(1);dfs2(1,0);for(int i=1;i<=n;i++)printf("%lld ",dp[i]);puts("");for(int i=1;i<=n;i++)printf("%lld ",ct[i]);return 0;
}

谢谢!!!

这篇关于乃爱与城市拥挤程度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上,选取净初级生产力,降水量,生物迁移阻力,土壤侵蚀度和道路密度五个变量,对生态系统供给服务、调节服务、支持服务和文化服务共4大类和11小类的当量因子进行了时空调整,计算了

鹅算法(GOOSE Algorithm,GOOSE)求解复杂城市地形下无人机避障三维航迹规划,可以修改障碍物及起始点(Matlab代码)

一、鹅算法 鹅优化算法(GOOSE Algorithm,GOOSE)从鹅的休息和觅食行为获得灵感,当鹅听到任何奇怪的声音或动作时,它们会发出响亮的声音来唤醒群中的个体,并保证它们的安全。 参考文献 [1]Hamad R K, Rashid T A. GOOSE algorithm: a powerful optimization tool for real-world engineering

高考志愿填报选专业,学校的城市和学习环境分析

高考分数出炉之后,如何填报志愿选专业,根据以往的数据统计,有相当部分的同学,错失了自己喜欢的专业,而不得不接受调剂。有的同学被调剂到冷门专业,有的同学则是被综合实力相对较差的学校录取,所以高考志愿填报是一件需要格外慎重的事,必须打起十二分精神,也需要懂得听取多方意见,权衡利弊的做选择。 那对于高考生而言,在高考志愿填报中,如何对学校地理位置与学校环境进行考量呢? 高中生(填报志愿,选专业),可

二级联动菜单--常见的城市二级联动

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> 二级联动菜单 </TITLE><script language="javascript">var jiangxi=[["1","南昌"],["2","上饶"],["3","赣州"]];var zhejiang=[["1","

基于ACO蚁群优化的城市最佳出行路径规划matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述       基于ACO蚁群优化的城市最佳出行路径规划matlab仿真,可以修改城市个数,输出路径规划结果和ACO收敛曲线。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 点数较少时 点数规模中等时 点数较多时

算法题--华为od机试考试(整数对最小和、素数之积、找城市)

目录 整数对最小和 题目描述 注意 输出描述 示例1 输入 输出 说明 解析 答案 素数之积 题目描述 输入描述 输出描述 示例1 输入 输出 说明 示例2 输入 输出 说明 解析 找城市 题目描述 输入 输出 示例1 输入 输出 示例2 输入 输出 说明 解析 答案 整数对最小和 考察排序,数组拍平 题目描述

【无人机三维路径规划】基于鱼鹰算法OOA实现复杂城市地形下无人机避障三维航迹规划附Matlab代码

% 初始化遗传算法参数 population_size = 50; % 种群大小 max_generations = 100; % 最大迭代次数 mutation_rate = 0.1; % 突变率 % 定义目标函数(适应度函数) fitness_function = @(x) calculate_fitness(x); % 定义路径规划问题的约束函数 constraint_function

【开源项目】智慧北京案例~超经典实景三维数字孪生智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码!

飞渡科技数字孪生北京管理平台, 依托实景数字孪生底座,以城市感知网络为硬件基础,以城市大数据为核心资源,以数字孪生、云计算、人工智能为关键技术,实现城市产业规划、资产安全管理、城市能耗监控等一体化空间融合。 利用自主研发DTS平台,根据数据源、使用环境和场景精细度,从宏观到微观对首都进行全要素场景构建,涵盖城市的道路、主要建筑、以及行政区划地名散点标牌,并对北京CBD中心区进行高精度还原。

机器学习案例|使用机器学习轻松预测信用卡坏账风险,极大程度降低损失

01、案例说明 对于模型的参数,除了使用系统的设定值之外,可以进行再进一步的优化而得到更好的结果。RM提供了几种参数优化的方法,能够让整体模型的效率提高。而其使用的概念,仍然是使用计算机强大的计算能力,对于不同的参数组合进行准确度评估,使用硬算的方式选出最优的参数。这个也是机器学习里面的另外一个特点与优势。 本案例讨论的是:对于信用卡公司需要判断客户会不会变成坏账(Default),从而预先防

城市街道 网格 走法 动态规划

import java.util.Scanner;/*** * @author admin* 一个城市的街道布局和一个网格一样,从最左下方——到最右上方,每次只能往上或者往右*/public class Road {public static void main(String[] args) {Scanner input=new Scanner(System.in);int m=input.n