首页 > 其他分享 >abc287F - Components

abc287F - Components

时间:2023-09-19 22:35:24浏览次数:37  
标签:sz Components int mo abc287F include ll fo

F - Components

一眼经典的树上背包
\(f[x][s][0/1]\)表示在x的子树中有s个连通块,选不选x的方案数
那么转移的话就是按照背包的转移即可
然后隐约记得这个是\(O(n^2)\)的
但是一直TLE,后面发现是有一个地方写法有问题,应该在计算完当前子树后再更新的size,这样可以保证复杂度。

实际跑起来会更快。

#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#define fo(i,a,b) for (int (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (int (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))
#define A puts("YES")
#define B puts("NO")
using namespace std;
typedef long long ll;
const int N=5005;
const ll mo=998244353;
ll f[N][N][2],g[N][N][2];
int tot,head[N],to[N*2],nex[N*2],n,sz[N];
int x,y;
void add(int x,int y){
	to[++tot]=y; nex[tot]=head[x]; head[x]=tot;
}
void ADD(ll &x,ll y){
	x=(x+y)%mo;
}
void dfs(int x,int y){
	sz[x]=1;
	g[x][1][1]=1;
	g[x][0][0]=1;
	
	for (int i=head[x];i;i=nex[i]){
		int v=to[i];
		if (v==y) continue;
		dfs(v,x);
	
		fo(k,0,sz[x]) {
			fo(s,0,sz[v]) {
				ADD(f[x][k+s][1], g[x][k][1]*f[v][s][0]%mo + g[x][k+1][1]*f[v][s][1]%mo);
				ADD(f[x][k+s][0], (f[v][s][0]+ f[v][s][1])%mo *g[x][k][0] %mo);
			}
		}
		
		sz[x]+=sz[v];
		
		fo(k,0,sz[x]) {
			g[x][k][0]=f[x][k][0];
			g[x][k][1]=f[x][k][1];
			
			f[x][k][0]=f[x][k][1]=0;
		}
	}

	fo(k,0,sz[x]) f[x][k][0]=g[x][k][0], f[x][k][1]=g[x][k][1];
	while (!f[x][sz[x]][0] && !f[x][sz[x]][1] && sz[x]) sz[x]--;
}
int main(){
	
//	freopen("data.in","r",stdin);
	scanf("%d",&n);
	fo(i,1,n-1){
		scanf("%d %d",&x,&y);
		add(x,y); add(y,x);
	}
	
	dfs(1,0);
	
	fo(i,1,n) printf("%lld\n",(f[1][i][0]+f[1][i][1])%mo);
	
	return 0;
	
}

 
 
 

标签:sz,Components,int,mo,abc287F,include,ll,fo
From: https://www.cnblogs.com/ganking/p/17716023.html

相关文章

  • 2023-09-08 小程序之启用组件按需注入 ==》 添加一行代码:"lazyCodeLoading": "require
    在manifest.json文件里面的mp-weix对象添加代码:"lazyCodeLoading":"requiredComponents"可实现组件按需注入,引用官方说法就是:启用按需注入后,小程序仅注入当前访问页面所需的自定义组件和页面代码。未访问的页面、当前页面未声明的自定义组件不会被加载和初始化,对应代码文件将不被......
  • Visual Components如何添加新的模型 北京衡祖
    在使用VisualComponents仿真软件时,当发现当前现有的模型库里缺少需要的模型时,需要添加新的模型以便更好地操作实现需要的仿真功能。今天小编和大家分享一下使用VisualComponents如何添加新的模型,一起来看一下吧!1、打开VisualComponents软件后,在【开始】选项卡下会看到【电子目......
  • Visual Components如何添加新的模型 北京衡祖
    在使用VisualComponents仿真软件时,当发现当前现有的模型库里缺少需要的模型时,需要添加新的模型以便更好地操作实现需要的仿真功能。今天小编和大家分享一下使用VisualComponents如何添加新的模型,一起来看一下吧! 1、打开VisualComponents软件后,在【开始】选项卡下会看到【电......
  • Kubernetes Components
    KubernetesComponentsWhenyoudeployKubernetes,yougetacluster.AKubernetesclusterconsistsofasetofworkermachines,callednodes,thatruncontainerizedapplications.Everyclusterhasatleastoneworkernode.Theworkernode(s)hostthePods......
  • 图解Spark Graphx基于connectedComponents函数实现连通图底层原理
    原创/朱季谦第一次写这么长的graphx源码解读,还是比较晦涩,有较多不足之处,争取改进。一、连通图说明连通图是指图中的任意两个顶点之间都存在路径相连而组成的一个子图。用一个图来说明,例如,下面这个叫graph的大图里,存在两个连通图。左边是一个连接图,该子图里每个顶点都存在路......
  • AtCoder Beginner Contest 292 D - Unicyclic Components
    D-UnicyclicComponents原题链接题意:判断一个连通块的边和点个数是否相同思路:对它使用并查集吧点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=200010,M=N<<1;//维护连通图中点和边的个数intsd[N],se[N],p[N];boolf[N];//谁是祖宗int......
  • [React Typescript] Strongly type Shared props for multiple components (React.FC<
    import{Equal,Expect}from"../helpers/type-utils";typeInputProps=React.ComponentProps<"input">;constCOMPONENTS={text:(props)=>{return<input{...props}type="text"/>;},number:(p......
  • [React Typescript] Strongly Typing Lazy Loaded Components with Generics
    Navigatingtothetypedefinitionfor lazy by CMD+click inlocalVSCode,orinthe DefinitelyTyped repo.Wecanseethefollowingdefinition:functionlazy<TextendsComponentType<any>>( factory:()=>Promise<{default:T}>):L......
  • ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段
    应用中设置一般会存在这样的设置,如夜间勿扰模式,从8:00-23:00,此时如何判断当前时间是否在该时间段内。难点主要在于如何用NSDate生成一个8:00的时间和23:00的时间,然后用当前的时间跟这俩时间作对比就好了。下面提供两条思路:法1.用NSDate生成当前时间,然后转为字符串,从字符串中取出当前的......
  • Visual Components 专业版功能介绍 衡祖仿真
    VisualComponents专业版Professional版本包括VisualComponents精华版Essentials中所有的功能,并提供您用于建模和创建自己的组件的工具。VisualComponents专业版功能1、GEOMETRYSIMPLIFICATION几何体简化通过简化和删除(CAD)模型中不必要的细节,减小文件并提高模拟性能。2、COMP......