2022-05-07每日刷题打卡

2022-05-07每日刷题打卡

代码源——每日一题

题目描述

有一棵 n 个节点的以1为根的有根树。现在可以对这棵树进行若干次操作,每一次操作可以选择树上的一个点然后删掉这个点和它的儿子之间的所有边。

现在想要知道对于每一个 k∈[1,n],最少需要多少次操作才能让图中恰好存在 k 个联通块。

输入格式

第一行输入一个正整数 n。

第二行输入 n−1 个整数 fi 表示 i+1 号点的父亲,保证 1≤fi≤i。

输出格式

输出 n 个整数,第 i 个数表示 k=i 时的答案,如果无法让图中恰好存在 k 个联通块,则输出-1。

样例输入1

6
1 2 1 1 2

样例输出1

0 -1 1 1 -1 2

数据规模

共10个测试点。

测试点1,2,3满足n≤20。

测试点4,5,6满足n≤100。

对于所有数据,满足1≤n≤3000。

问题解析

这题其实就是背包问题的转化。

因为我们是每次选一个点,把它和它孩子的所有点的链接都断开,拿样例来说,连在第一个点上的点有三个,那么我们要是选择了第一个点,那么第一个点和它三个孩子的链接就会断开,这样此时就会有4个连通块:第一个点+第一个点的三个孩子。连在第二个点上的孩子有两个,所以我们要是断开第二个点,那么连通块就会有三个,如果把1和2都选了,那么一共就是6个连通块(样例如图所示)。
在这里插入图片描述

那么此时就相当于一个背包问题了,我们转化一下:每个点有多少孩子,相当于这个货物值多少钱。比如第一个点,有3个孩子,所以它的价值是3,当我们选择拿这个点放入背包,那么我们的价值就+3,即多了三个连通块。然后我们就根据需要的总价值(总连通块数)来选择我们需要的货物即可。

#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<math.h>
#include<set>
#include<numeric>
#include<string>
#include<string.h>
#include<iterator>
#include<map>
#include<unordered_map>
#include<stack>
#include<list>
#include<queue>
#include<iomanip>#define endl '\n';
typedef long long ll;
typedef pair<ll, ll>PII;
const int MOD = 1e9 + 7, N = 3010;int n, f[N], w[N];int main()
{cin >> n;for (int i = 2; i <= n; i++){int x;cin >> x;w[x]++;}memset(f, 0x3f, sizeof f);f[1] = 0;for (int i = 1; i <= n; i++){if (w[i] == 0)continue;for (int j = n; j >= w[i]; j--)f[j] = min(f[j], f[j - w[i]] + 1);}for (int i = 1; i <= n; i++){if (f[i] == 0x3f3f3f3f)cout << -1 << " ";else cout << f[i] << " ";}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《花雕学AI》哪种技能5年10年后还会被市场需要? 该如何提高这些能力?

随着AI人工智能、ChatGPT等新的技术革新的发展&#xff0c;未来职业场景确实会发生变化&#xff0c;一些传统的职业可能会被取代&#xff0c;而一些新的职业可能会出现。根据世界经济论坛所发布的《未来就业报告》&#xff0c;一半的劳动力需要在2025年之前完成技能重塑。那么&…

想清楚这些的程序员,35岁绝不会被毕业

一、成长与能力 1、成长理解 成长是一个过程。在这个过程中&#xff0c;可能会发生各种事件&#xff0c;有些是正向的&#xff0c;有些是负向的。这些事件会影响成长的速度与方向&#xff0c;体现到个人能力上。我是这么看待这个过程的&#xff1a; 【正向事件】&#xff1a…

华为鸿蒙 OS 尝鲜,跑了个 “hello world”!跑通后,我特么开始怀疑人生...

最近华为鸿蒙OS 2.0正式开源&#xff01;关于鸿蒙的教程其实网上也已经有一些尝鲜的小伙伴分享的相关文章了&#xff0c;编者我按照步骤一步步跑下来&#xff0c;整个流程还是非常简单的&#xff0c;尤其是对Android开发的小伙伴来说&#xff0c;从IDE到项目的创建及项目的编译…

梅科尔工作室-鸿蒙笔记1

梅科尔工作室-于天姿-鸿蒙笔记1 一、主要目录配置文件作用 1、stage模型 其中常用模块为app.json模块&#xff0c;entry模块&#xff0c;module.json模块。 app.json5中&#xff0c;icon是应用图标&#xff0c;可在pages中添加图片&#xff0c;从而改变图标&#xff1b;labe…

华为鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 作者&#xff1a;一个俗人 来源&#xff1a;https://my.oschina.net/u/169565/blog/4557279 最近华为鸿蒙OS 2.0正式开源&#xff01;关于鸿蒙的教程其实网上也已经有一些尝鲜的小伙伴分享的相关文章了&#xff0c;编者我…

值得一谈的鸿蒙2.0,程序员们拿起你们手中的编译器撸一下hello world

一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统 。现已开源,名为OpenHarmony。 2019年8月9日,华为在HDC开发者大会上正式发布鸿蒙系统。 2020年9月10日,华为在HDC开发者大会上如约发布鸿蒙 2.0,并面向应用开发者发布Beta版本…

梅克尔工作室-赵一帆-鸿蒙笔记4

1.页面的跳转和数据传递 Ability是一种包含用户界面的应用组件&#xff0c;主要用于和用户进行交互。Ability也是系统调度的单元&#xff0c;为应用提供窗口在其中绘制界面。 每一个Ability实例&#xff0c;都对应于一个最近任务列表中的任务。 一个应用可以有一个Ability&…

鸿蒙手机Beta版本官宣!我们带着成果和Code来了!!

12月16号&#xff0c;也就是今天&#xff0c;华为鸿蒙OS手机开发者Beta版本来啦&#xff01; 发布会给出了最新版的开发环境&#xff08;DevEco Studio 2.0 Beta3&#xff09;&#xff0c;支持手机等多设备模拟器的跨端运行调试&#xff0c;大家已经可以上手体验鸿蒙手机应用开…

鸿蒙3.0来了,这次,我真的想批评鸿蒙了

昨天我在朋友圈跟大家分享了一个鸿蒙新消息&#xff1a;鸿蒙 HarmonyOS 3.0 预计在3月开启内测。 ​发布之后就有很多同学过来问我关于鸿蒙3.0的问题&#xff0c;老王着实有点惊讶&#xff0c;没想到大家对于鸿蒙的关注度一直都在。 其实&#xff0c;我跟大家分享了那么久的鸿蒙…

鸿蒙系统可支持exe文件,效仿华为鸿蒙系统!微软放大招:新版Win10系统兼容安卓应用...

【12月1日讯】相信大家都知道&#xff0c;华为鸿蒙OS2.0系统手机Bate版本即将在12月16日正式发布&#xff0c;届时有关于华为鸿蒙手机OS系统的所有细节都将得到曝光&#xff0c;这也是广大网友们最为期待的东西&#xff0c;但就在11月28日&#xff0c;根据媒体最新报道&#xf…

刚刚用华为鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....

最近华为鸿蒙OS 2.0正式开源&#xff01;关于鸿蒙的教程其实网上也已经有一些尝鲜的小伙伴分享的相关文章了&#xff0c;编者我按照步骤一步步跑下来&#xff0c;整个流程还是非常简单的&#xff0c;尤其是对Android开发的小伙伴来说&#xff0c;从IDE到项目的创建及项目的编译…

在华为鸿蒙OS上尝鲜,我的第一个“hello world”

点击上方“java大数据修炼之道”&#xff0c;选择“设为星标” 优质文章和精品资源, 第一时间送达 目前&#xff0c;鸿蒙操作系统&#xff08; OpenHarmony&#xff09;已在Gitee上开源&#xff0c;并宣布把OpenHarmony 捐献给开放原子开源基金会&#xff08;OpenAtom Foundati…

在华为鸿蒙OS上我的第一个“hello world”

一、注册账号 访问华为开发者联盟官网。 注册华为开发者联盟帐号&#xff0c;并点击右上角头像旁边的下拉图标&#xff0c;点击“立即前 往实名认证”上传信息进行实名认证。 2.实名认证后&#xff0c;在开发者联盟网站中选择“开发 > 开发工具 > HUAWEI DevEco Studio…

谁告诉你鸿蒙(HarmonyOS)不能在macOS下玩,一副没见过世面的样子!

目前鸿蒙的macOS版开发工具DevEco Studio还没有发布&#xff0c;具体什么时候发布&#xff0c;还是个未知数。不过我们还是可以在macOS下玩一玩鸿蒙的。由于鸿蒙内置了Android&#xff0c;所以Android就是鸿蒙的后门&#xff0c;与其说是玩鸿蒙&#xff0c;不如说是借Android的…

华为鸿蒙OS上尝鲜跑了个“hello world”,我特么开始怀疑人生!

点击上方“程序IT圈”&#xff0c;选择“设为星标” 回复“资源”获取独家整理的学习资料 作者&#xff1a;一个俗人 来源&#xff1a;https://my.oschina.net/u/169565/blog/4557279 目前&#xff0c;鸿蒙操作系统&#xff08; OpenHarmony&#xff09;已在Gitee上开源&#x…

独家对话华为王成录:手机 HarmonyOS 开发者 Beta 版将如约而至

今年9月的华为开发者大会HDC2020上&#xff0c;华为发布了面向全场景的分布式操作系统HarmonyOS 2.0。这款操作系统一经发布便获得了业内的热切关注&#xff0c;在开源社区更是掀起了一股讨论的热潮。那么HarmonyOS为行业带来了什么变化&#xff1f;HarmonyOS为开发者提供什么便…

牛逼!用华为鸿蒙 OS 2.0 系统写出了HelloWorld!那些说鸿蒙是PPT的可以闭嘴了!

开发效果再最后。先说一下心理感受。 作为比较早期跟鸿蒙团队有接触的开发者。 &#xff08;此段避免误解&#xff0c;有修改&#xff09;18年那会是真的一行代码也不给看的&#xff0c;能给看的只有负责人手里的20页ppt&#xff0c;讲鸿蒙概念&#xff0c;都非常宽泛。负责人也…

刚刚用华为鸿蒙跑了个“hello world”!感觉还不错!

点击上方“Github爱好者社区”&#xff0c;选择星标 回复“资料”&#xff0c;获取小编整理的一份资料 作者&#xff1a;一个俗人 来源&#xff1a;my.oschina.net/u/169565/blog/4557279 最近华为鸿蒙OS 2.0正式开源&#xff01;关于鸿蒙的教程其实网上也已经有一些尝鲜的小伙…

尝鲜!我在华为鸿蒙上编写的第一个 Hello World!

最激动入门级选手的心的时刻来了&#xff0c;本示例将演示如何编写简单业务&#xff0c;输出“Hello World”。 修改源码 bugfix和新增业务两种情况&#xff0c;涉及源码修改。下面以新增业务举例&#xff0c;向开发者介绍如何进行源码修改。 1.确定目录结构。 开发者编写业务时…

AIGC for code(text-to-codeAIGC/AI生成代码/生成式AI之代码生成/AI编程工具/自动编程/自动生成代码/智能编程工具/智能编程系统)

AIGC&#xff0c;Artificial Intelligence Generated Content&#xff0c;人工智能生成内容 AIGC for code&#xff0c;AI生成代码 1 Github Copilot 1.1 简介 Copilot是由微软的子公司Github与openAI共同开发的人工智能&#xff08;AI&#xff09;驱动的编程助手。它能够直…