首页 > 其他分享 >VOCV - Con-Junctions

VOCV - Con-Junctions

时间:2022-11-06 23:55:52浏览次数:20  
标签:int Junctions 放置 ans 节点 VOCV Con

VOCV - Con-Junctions

题目大意:

一个 \(n\) 个节点的树,需要在某一些节点放置灯最终点亮所有边。

当一个节点上放置灯后,与它相连的所有边都被点亮。

试求最少放置的灯的数量与放灯最少时的方案数。方案数膜 10007 输出。

思路:

我们可以想到树形 \(dp\) .

设 \(f[i][0/1]\) 表示 \(i\) 节点是否放置灯的以 \(i\) 为根节点的树的最少放置灯数。

那么可以想到转移:

\[f[i][1] += \min(f[to][1], f[to][0]), to \in son_i \]

\[f[i][0] += f[to][1], to \in son_i \]

同理我们在转移 \(f\) 时更新 \(ans\)(存储最少时的方案数)

如果 \(f[to][0] < f[to][1]\) ,\(ans[i][1] = ans[i][1] * ans[to][0]\)

如果 \(f[to][0] > f[to][1]\), \(ans[i][1] = ans[i][1] * ans[to][1]\)

如果 \(f[to][0] == f[to][1]\) ,\(ans[i][1] = (ans[to][0] + ans[to][1]) * ans[i][1]\)

\(ans[i][0] = ans[i][0] * ans[to][1]\)

代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 5;
const int Mod = 10007;
int t, n, cnt, head[N], f[N][5];
long long ans[N][5];

struct Edge {
	int to, next;
}e[N << 1]; 

inline int read() {
	int x = 0, f = 1;
	char c = getchar();
	while (!isdigit(c)) {
		if (c == '-') f = -1;
		c = getchar();
	}
	while (isdigit(c)) x = x * 10 + c - '0', c = getchar();
	return x * f;
}

inline void add(int x, int y) {
	e[++cnt].to = y;
	e[cnt].next = head[x];
	head[x] = cnt;
}

inline void dfs(int x, int fa) {
	f[x][1] = 1;
	f[x][0] = 0;
	ans[x][1] = ans[x][0] = 1;
	int to;
	for (int i = head[x]; i ; i = e[i].next) {
		to = e[i].to;
		if (to == fa) continue;
		dfs(to, x);
	//	f[x][1] += min(f[to][1], f[to][0]);
	//	f[x][0] += f[to][1];
		
		if (f[to][1] < f[to][0]) {
			f[x][1] += f[to][1];
			ans[x][1] = (ans[x][1] * ans[to][1]) % Mod;
		}
		else if (f[to][0] < f[to][1]) {
			f[x][1] += f[to][0];
			ans[x][1] = (ans[x][1] * ans[to][0]) % Mod;
		}
		else if (f[to][0] == f[to][1]) {
			f[x][1] += f[to][1];
			ans[x][1] = ans[x][1] * (ans[to][1] + ans[to][0]) % Mod;
		}
		
		f[x][0] += f[to][1];
		ans[x][0] = ans[x][0] * ans[to][1] % Mod;
	}
}

signed main() {
	t = read();
	while (t--) {
		cnt = 0;
		memset(head, 0, sizeof (head));
		memset(f, 0, sizeof (f));
		n = read();
		int x, y;
		for (int i = 1; i <= n - 1; ++i) {
			x = read(), y = read();
			add(x, y);
			add(y, x);
		}
		dfs(1, 0);
		if (f[1][1] < f[1][0]) printf("%d %lld\n", f[1][1], ans[1][1]);
		else if (f[1][1] > f[1][0]) printf("%d %lld\n", f[1][0], ans[1][0]);
		else if (f[1][1] == f[1][0]) printf("%d %lld\n", f[1][0], (ans[1][0] + ans[1][1]) % Mod);
	}
	return 0;
} 

标签:int,Junctions,放置,ans,节点,VOCV,Con
From: https://www.cnblogs.com/Miraclys/p/16864685.html

相关文章

  • 什么是ServletContext
    1.ServletContext是一个接口,它表示Servlet上下文对象2.一个web工程,只有一个ServletContext对象实例3.ServletContext对象是一个域对象什么是域对象?域对象,是可以象Map一......
  • 使用selenium-java报错:java.lang.NoSuchMethodError: com.google.common.base.Precond
    引入selenium-java依赖,发现到WebDriverdriver=newChromeDriver()时报错解决:<dependency><groupId>com.google.guava</groupId><a......
  • contests-in-202211
    2022.11模拟赛日志postedon2022-11-0115:57:02|under日志|source希望NOIP2022GD赛区能正常举办!更希望初中生能正常参赛。CMB说:CSP-S分数高于某个线的初......
  • contests-in-202210
    2022.10模拟赛日志postedon2022-10-2316:03:39|under日志|source停课以来,每天都是模拟赛;怎么说呢,有点想念我的学校。膜拜SS221005(20221005)A简单构造,很会。......
  • Vulnhub THM Containme靶机解题过程
    THMContainmev4识别目标主机IP地址VirtualBox中启动THMContainme靶机kaliLinux利用netdiscover识别其IP地址:┌──(kali㉿kali)-[~/Vulnhub/THM_Containme]└─$......
  • SAP Java Connector 正常运行所需的网络配置
    SAPJCO在本地安装成功并且将目录加到PATH环境变量后,运行命令行:java-jarsapjco3.jar如果看到下列弹出窗口,说明JCO配置成功。JCo使用基于TCP/IP的CPI-C协议......
  • @RestController注解
    参考声明:https://www.cnblogs.com/melodyjerry/p/14357630.html参考声明:https://www.cnblogs.com/flower-dance/p/14267042.html@RestController@RestController注......
  • windows11安装机器学习Anaconda环境
    Anaconda是一个开源的Python发行版本,是一个安装、管理python相关包的软件,还自带python、JupyterNotebook、Spyder,有管理包的conda工具,非常有用。安装步骤:1.Anaconda下......
  • Mathis Petrovich-2021-Action-Conditioned-3D-Human-Motion-Synthesis-with-Transfor
    #Action-Conditioned3DHumanMotionSynthesisWithTransformerVAE#paper1.paper-info1.1MetadataAuthor::[[MathisPetrovich]],[[MichaelJ.Black]],[......
  • CentOS 8.3 XXX Cluster Initialization Configuration
    一、CentOS8.3XXXClusterInitializationConfiguration1节点规划官方建议节点数量为奇数个hostnameIP节点规划角色maset01192.168.80.31Master01(主节......