首页 > 其他分享 >寻找不变值求可变值(排名)

寻找不变值求可变值(排名)

时间:2024-04-20 21:44:06浏览次数:9  
标签:dfs2 int fa continue 值求 可变 排名 include dp

题目链接

https://codeforces.com/problemset/problem/1153/D

题目大意

image

题目思路

定义dp[u]为u节点在其子树中的排名为多少? !太妙了!

题目代码

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#define ll long long
const int inf = 0x7fffffff;
const int N = 3e5 + 5;
using namespace std;
int n,k;
int op[N],fa[N],s[N],dp[N];
vector<vector<int>>g(N);
void dfs1(int u,int fa)
{
	for(int v:g[u])
	{
		if(v == fa) continue;
		dfs1(v,u);
		s[u] += s[v];
	}
	// 如果是叶子节点 
	if(g[u].size() == 1 && u != -1){
		s[u] = 1;
		dp[u] = 1;
	}
	return; 
}
void dfs2(int u,int fa)
{
	if(g[u].size() == 1 && u != -1) return;
	if(op[u] == 1){
		dp[u] = inf;
		for(int v:g[u])
		{
			if(v == fa) continue;
			dfs2(v,u);
			dp[u] = min(dp[u],dp[v]);
		}
	}else{
		for(int v:g[u])
		{
			if(v == fa) continue;
			dfs2(v,u);
			dp[u] += dp[v];
		}
	}
}
int main()
{
	cin >> n;
	for(int i = 1;i <= n;++i) cin >> op[i];
	for(int i = 2;i <= n;++i){
		int x;cin >> x;
		g[x].push_back(i);
		g[i].push_back(x);
	}
	dfs1(1,0);dfs2(1,0);
	cout << s[1] - dp[1] + 1 << '\n';
	return 0;
}

标签:dfs2,int,fa,continue,值求,可变,排名,include,dp
From: https://www.cnblogs.com/gebeng/p/18148224

相关文章

  • rust和内部可变性模式RefCell<T>
    内部可变性(Interiormutability)是Rust中的一个设计模式,它允许你即使在有不可变引用时也可以改变数据,这通常是借用规则所不允许的。为了改变数据,该模式在数据结构中使用 unsafe 代码来模糊Rust通常的可变性和借用规则。不安全代码表明我们在手动检查这些规则而不是让编译器替......
  • python-深浅复制,可变/不可变对象
    #深复制(拷贝)'''importcopya=[1,2,3,[4,5,6]]#深拷贝a_deepcopy=copy.deepcopy(a)print(id(a))#140399549872448print(id(a_deepcopy))#140399549873280a[2]=100print(a)#[1,2,100,[4,5,6]]print(a_deepcopy)#[1,2,3......
  • 函数式编程思想 VS 可变性理论 20240415
    函数式编程(FunctionalProgramming,FP)是一种编程范式,它将计算视为数学函数的求值,并避免使用程序状态以及易变对象。函数式编程的核心思想包括:不可变性(Immutability):在函数式编程中,数据是不变的。一旦创建了一个数据结构,就不能再改变它。所有的操作都会产生新的数据结构。纯......
  • el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能,利用@sort-cha
        写这篇博客的原因是前段时间做了一个数据列可变的表格,同时需要实现在网页中更新了数据列之后,能够对表格进行排序的需求。如果想要直接了解实现el-table的动态数据动态排序(列数据是通过计算获得,并且可以在页面中修改,在此基础上实现数据变化后实时更新)。请直接跳到......
  • 可变参数、递归
    可变参数packagecom.xqstudy.method;publicclassDemo3{publicstaticvoidmain(String[]args){Demo3demo3=newDemo3();demo3.test(1,2,3,4,5,63);}publicvoidtest(int...i){System.out.println(i[0]);Syst......
  • 什么是百度排名技术
    什么是百度排名技术百度排名是指在百度搜索引擎中,网站或网页在特定关键词搜索时的排名情况。百度排名可以直接影响网站的流量和曝光度,因此对于网络营销和推广非常重要。#百度排名讲一下就是蜘蛛池的一个配置和维护,我们上一节课想好了一个选择好我们的域名服务器和植入池的一......
  • immer 不可变对象状态管理的工具
    immer是一个不可变对象状态管理的node包,一般主要场景应用到react等项目中,当然node项目也是可以使用的优点遵循不可变数据流强类型开箱即用的结构共享开箱即用的对象冻结jsonpatche支持gzip之后比较小内部参考处理如下图参考资料https://immerjs.github.io/imm......
  • 百度小程序发帖软件怎么优化SEO排名关键词
    百度小程序发帖软件怎么优化SEO排名关键词手把手教你,如何做SEO关键词优化?!#官网建站#seo#百度排名2024创业好项目:做H5响应式建站代理!排名展示推荐阅读:百度小程序发帖外推软件是什么百度不收录我们的网站怎么办呢?网站SEO优化一定要做好,今天咱们说说网站SEO优化的三......
  • 【外推SEO案例】搜索留痕排名代发反的链接怎么查看
    【外推SEO案例】搜索留痕排名代发反的链接怎么查看搜索留痕外链怎么发更有效果?高质量SEO外链制作教学,附带【2000+搜索留痕外链资源】分享哦!#SEO外链#搜索留痕优化#百度SEO#搜索引擎优化#百度排名#搜索留痕推广#SEO技术#搜索留痕运营经典的搜索排名为什么一直那么高?我......
  • 机械识别技术在懂车帝SEO排名代发中的应用与优势
    机械识别技术在懂车帝SEO排名代发中的应用与优势机械行业在懂车帝如何做SEO布局#seo优化seo排名关键词排名#干货分享#短视频运营欢迎大家来到百收网SEO课堂,我是狂潮老师,那么我们第三节课讲的是网页,必须符合机械识别啊。那么在这里再次提醒一下,如果同学们你们的基础不好,那......