【*1800树上贪心】CF1401 D

news2024/11/27 5:28:20

Problem - D - Codeforces

题意:

思路:

首先,1尽可能少,那就是让pi尽可能不合并地摊到所有边上,然后计算贡献

按照CF惯用套路,这样的n^2贡献肯定是更换枚举对象,我们去枚举边,按边算贡献

对于一条边的贡献应该为sz[u]*(N-sz[u])*p[i]

然后就是贪心了,大的边权摊到经过次数多的边,小边权到次数小的边

同时需要分类讨论这些给定的质因子个数和边数的大小关系

Code:

#include <bits/stdc++.h>

#define int long long

using namespace std;

const int mxn=1e6+10;
const int mod=1e9+7;

array<int,3> E[mxn];

vector<int> G[mxn];

int N,M;
int u[mxn],v[mxn];
int dep[mxn],sz[mxn],p[mxn],v2[mxn];

void dfs(int u,int fa){
	sz[u]=1;
	dep[u]=dep[fa]+1;
	for(auto v:G[u]){
		if(v==fa) continue;
		dfs(v,u);
		sz[u]+=sz[v];
	}
}
bool cmp(int x,int y){
	return x<y;
}
bool cmp2(array<int,3> x,array<int,3> y){
	return x[0]<y[0];
}
void init(){
	for(int i=0;i<=N;i++){
		G[i].clear();
		dep[i]=sz[i]=0;
	}
}
void solve(){
	cin>>N;
	init();
	for(int i=1;i<=N-1;i++){
		cin>>u[i]>>v[i];
		G[u[i]].push_back(v[i]);
		G[v[i]].push_back(u[i]);
	}
	dfs(1,0);
	for(int i=1;i<=N-1;i++){
		if(dep[u[i]]<dep[v[i]]) swap(u[i],v[i]);
		E[i]={sz[u[i]]*(N-sz[u[i]]),u[i],v[i]};
	}
	sort(E+1,E+1+N-1,cmp2);
	cin>>M;
	for(int i=1;i<=M;i++) cin>>p[i];
	sort(p+1,p+1+M,cmp);
	int ans=0;
	/*if(N-1>=M+1){
		for(int i=M+1;i<=N-1;i++) p[i]=1;
		for(int i=1;i<=N-1;i++){
			ans+=E[i][0]*p[i];
			ans%=mod;
		}
	}else{
		for(int i=1;i<=N-1;i++) ans+=E[i][0]*p[i]%mod,ans%=mod;
		for(int i=N;i<=M;i++) ans+=E[1][0]*p[i]%mod,ans%=mod;
	}
	cout<<ans%mod<<'\n';*/
	N --;
		
		if (M <= N) {
			for (int i = 1; i <= N - M; i ++) v2[i] = 1;
			for (int i = N - M + 1; i <= N; i ++) v2[i] = p[i - (N - M)];
		}
		else {
			v2[N] = 1;
			for (int i = 1; i < N; i ++) v2[i] = p[i];
			for (int i = N; i <= M; i ++) v2[N] = v2[N] * p[i] % mod;
		}
		
		for (int i = 1; i <= N; i ++) ans = (ans + E[i][0] % mod * v2[i] % mod) % mod;
		
		printf("%lld\n", ans);
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int __=1;cin>>__;
	while(__--)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker consul 的容器服务更新与发现

目录 一、Consul 简介 1.什么是服务注册与发现 2. 什么是consul 3.consul 架构 二、部署 consul 服务器&#xff08;192.168.88.10&#xff09; 1.建立 Consul 服务 2.查看集群信息 3.通过 http api 获取集群信息 三、registrator服务器&#xff08;192.168.88.60&…

Gnomon水下环境 下

不会全下去 鱼群 方向反了&#xff0c;位置不对 不动了 速度快&#xff0c;一个条 数量太多 太卡 使用的弧线没问题 &#xff0c;这块我有点晕 水泡制作 运动严重 减少晃动 turbulenceField1.phaseZ time*20; 总结 使用晶格调节大概样子,变成柔体 particleShape1.daxiaorand(…

shell实现数据库分库分表备份

#!/bin/bash2 3 backup/backup/db #存放数据库的位置4 nodatabasesinformation_schema|mycat|performance_schema|sys|mysql #要过滤的数据库5 6 mysql -uroot -predhat -e "show databases" -N | egrep -v "${nodatabases}" > dbname #将数据库存放在…

ansible自动化运维(二)剧本、角色编写实战

&#x1f618;作者简介&#xff1a;一名运维工作人员。 &#x1f44a;宣言&#xff1a;人生就是B&#xff08;birth&#xff09;和D&#xff08;death&#xff09;之间的C&#xff08;choise&#xff09;&#xff0c;做好每一个选择。 &#x1f64f;创作不易&#xff0c;动动小…

在C语言中,变量主要的作用是什么?

常量记忆数据只能存储一个固定的数据&#xff0c;永远不变&#xff0c;所以这当然不能算得上是记忆数据 变量存储的数据可以改变&#xff0c;你可以让它记忆5&#xff0c;下一步它可以变为10 如果你还无法理解 那么请不用尝试变量编程实现以下&#xff1a; 输入一个100之内…

Cesium态势标绘专题-简单箭头(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

NoSQL-Redis持久化

NoSQL-Redis持久化 一、Redis 高可用&#xff1a;1.概述&#xff1a; 二、Redis持久化&#xff1a;1.持久化的功能&#xff1a;2.Redis 提供两种方式进行持久化&#xff1a; 三、RDB 持久化&#xff1a;1.定义&#xff1a;2.触发条件&#xff1a;3.执行流程&#xff1a;4.启动时…

地下水除砷工艺盘点:生物法、混凝法、沉淀法、吸附法和离子交换法

砷(As)为非人体必需元素&#xff0c;既不溶解于水又不溶解于酸&#xff0c;在自然界有三价无机态 As(III)、五价无机态 As(V)以及有机砷MMA(甲基胂酸)、DMA(二甲基胂酸)、TMA(三甲基胂酸)等。 砷在水体中主要以三价和五价的无机酸形式存在&#xff0c;三价砷的毒性更强&#xf…

作为一名测试工程师,你知道“微信红包”怎么测试吗?

测试思维 测试任何事物的测试思路可以总结如下&#xff1a; 第一步&#xff1a;梳理产品的核心业务流程&#xff1a;明白这是个什么项目&#xff0c;实现了什么业务&#xff0c;以及是怎么实现的&#xff1f; 这个步骤一般是参考公司的需求文档来的&#xff0c;如果产品提供…

Mr. Cappuccino的第52杯咖啡——Mybatis环境搭建与使用

Mybatis环境搭建与使用 Mybatis介绍Mybatis环境搭建与使用基于XML方式-原生方式开发创建数据库表项目准备项目结构项目代码实体类中添加有参构造方法产生的问题 基于XML方式-mapper代理开发项目准备项目结构项目代码SQL映射文件中namespace未设置为接口全限定名产生的问题 基于…

ESP32 LVGL:使用menuconfig配置LVGL会导致全部文件重新编译问题解决

问题描述 在使用ESP32 IDF LVGL时&#xff0c;我们可以通过idf.py menuconfig来对LVGL进行配置&#xff0c;但是每次使用idf.py menuconfig配置完LVGL后&#xff0c;由于修改了工程的sdkconfig文件&#xff0c;因此所有的文件都需要重新编译。如下图&#xff1a; 需要编译几千…

Mkdocs中利用Js实现大小圈鼠标拖动样式

在docs/javascripts/extra.js下复制粘贴&#xff1a; var CURSOR;Math.lerp (a, b, n) > (1 - n) * a n * b;const getStyle (el, attr) > {try {return window.getComputedStyle? window.getComputedStyle(el)[attr]: el.currentStyle[attr];} catch (e) {}return …

Java并发(十三)----共享存在的问题

1、小故事 老王&#xff08;操作系统&#xff09;有一个功能强大的算盘&#xff08;CPU&#xff09;&#xff0c;现在想把它租出去&#xff0c;赚一点外快 小南、小女&#xff08;不同的线程&#xff09;来使用这个算盘来进行一些计算&#xff0c;并按照时间给老王支付费用…

多元函数习题

目录 例题1&#xff1a; 例题2&#xff1a; 例题3&#xff1a; 证明题 例1&#xff1a; 例题2 ​编辑 例题3&#xff1a; 例题4&#xff1a; 例题1&#xff1a; 第二问的解法2&#xff1a; 例题2&#xff1a; 选择D&#xff0c;偏导数存在与函数连续并没有关系。 例题3&…

Git竞合处理

Gitee新建一个代码仓库&#xff0c;clone到本地&#xff0c;模拟竞合的情况出现 这里仓库已经配好了ssh&#xff0c;所以没有添加账户绑定的步骤 clone到本地 模拟A同学Clone代码 git clone 项目地址新建一个文件&#xff0c;上传到仓库 push到仓库 代码仓库已经可以看到了…

mysql-速成补充

目录 1.演示事务 ​编辑 1.1 read-uncommitted 1.2 read-committed 1.3 repeatable read 1.4 幻读 1.5 serializable 1.6 savepoint 2 变量 2.1 语法 2.2 举例 3 存储过程和函数 3.1 特点和语法 3.2 举例 4.函数 4.1 语法 4.2 举例 5 流程控制 5.1 分…

window.location.protocol使用实战图片不同浏览器显示问题解决方案

图片在不同浏览器可能会显示不出来个别原因分析&#xff0c; 如火狐浏览器协议类型会有问题 但是谷歌可以 解决方案&#xff1a;将写死的协议 如http换成window.location.protocol就可以了 前景&#xff1a;前台项目和后台项目有时返回的并不是图片全路径 &#xff0c;有时候…

接口测试进阶之数据模板

大家好久不见了。今天的文章将介绍jinja2模板在接口测试数据上的应用。 这几个月我在想&#xff0c;进阶系列要怎么写。 毕竟很多情况下&#xff0c;我觉得写技术文章和做培训一样&#xff0c;都会有两个结果&#xff1a; 1.是需要这些知识的人看不懂。 2.是看得懂的人不需要…

数值线性代数: 共轭梯度法

本文记录共轭梯度噶求解线性方程组的原理及流程。 零、预修 0.1 LU分解 设&#xff0c;若对于&#xff0c;均有&#xff0c;则存在下三角矩阵和上三角矩阵&#xff0c;使得。 设&#xff0c;若对于&#xff0c;均有&#xff0c;则存在唯一的下三角矩阵和上三角矩阵&#xff…

【云原生】Docker私有仓库registry

目录 1&#xff09;用docker容器运行registry私有仓库服务。 2&#xff09;运行私有仓库服务 3&#xff09;镜像重命名(要上传的镜像名需要注明私仓的ip) 4&#xff09;编辑docker配置文件(因为默认是拉取docker官方的镜像&#xff0c;需要重新指定) 5&#xff09;其他dock…