P11378[GESP202412 七级]燃烧 题解
闲话
花了一个小时。
主要原因:条初始值硬控我半小时,题目看错硬控我半小时(悲)。
正文
看题目,就是求从哪个点出发所得到的所有单调下降序列的总长度最长(这个描述好奇怪,不过意思是对的)。
题目中说的是树,但其实可以当做图来做,因为题目中提到的是“节点”,而与父亲儿子节点无关,也就是说儿子节点也可以访问父亲节点。
大体思路:先输入,其中若有一条边 $(1,2)$,则在 $1$ 与 $2$ 的边中都要加入它,也就是当成无向图来做。
然后就是求最大值。
如何求最大值呢,其实每个点的最大值就是其所有值小于其本身的点的最大值的总和。然后再求每个点的最大值就可以了。
另外还要加个记忆化,记录每个点的答案的最大值,再打擂台即可 A。
总感觉我的方法过于非主流。
AC 代码
#include<bits/stdc++.h>//万能头
using namespace std;//标准命名空间
using ll = long long;//【不开longlong见祖宗】,当然这题随便
const ll N=1e5+1;//n<=100000$
vector<ll> t[N];//存储节点、邻接点
ll n,x,a,b;//临时输入变量
ll ans[N],last_ans;//存储答案
ll work(ll i)//计算编号为i的点的答案
{
ll not_all=1;//自己算一个节点
for(ll j=1;j<ll(t[i].size());++j)//循环访问与自己有边的节点
if(t[i][0]>t[t[i][j]][0])//严格小于
{
if(!ans[t[i][j]]) ans[t[i][j]]=work(t[i][j]);//如果没有计算过就当场计算
not_all+=ans[t[i][j]];//加和计算
}
return not_all;//返回该点的值
}
int main()
{
scanf("%lld",&n);//输入节点数
for(ll i=1;i<=n;++i)//是n个点
{
scanf("%lld",&x);
t[i].push_back(x);//存储自己的值
}
for(ll i=1;i<n;++i)//注意是n-1条边,因为是树
{
scanf("%lld%lld",&a,&b);
t[a].push_back(b);//父亲节点与儿子节点 ,所以存储
t[b].push_back(a);//当成无向图处理 ,所以存储
}
for(ll i=1;i<=n;++i)//计算n个点的答案
if(!ans[i])//如果在算其它点时没有算过再计算
ans[i]=work(i);//计算
for(ll i=1;i<=n;++i)//打擂台——
last_ans=max(last_ans,ans[i]);//——求最大值
printf("%lld\n",last_ans);//输出
return 0;//完结撒花
}
P11378[GESP202412 七级]燃烧 题解的更多相关文章
- Codeforces Round #545 Div1 题解
Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...
- 洛谷P1496 火烧赤壁【题解】
事先声明 本题解文字比较多,较为详细,算法为离散化和差分,如会的大佬可以移步去别处看这道题的思路(因为作者比较懒,不想新开两个专题). 题目简要 给定每个起火部分的起点和终点,请你求出燃烧位置的长度之 ...
- AlloyRenderingEngine燃烧的进度条
写在前面 Github: https://github.com/AlloyTeam/AlloyGameEngine HTML 5新增了progress标签,那么再去使用AlloyRenderingEn ...
- 【Pyrosim案例】02:简单燃烧
1 案例说明 本案例介绍一个简单的燃烧模拟. 本案例通过指定热释放率(Heat Release Rate,HRR)来定义一个500kW的燃烧火焰.利用热释放率来定义燃烧火焰在火灾安全工程中描述火焰的一 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
随机推荐
- JSP——EL表达式&JSTL标签
EL表达式 JSTL 标签 使用方法: if 标签 foreach 标签: <c:forEach items= ...
- 《Spring Data JPA从入门到精通》内容简介、前言
内容简介 本书以Spring Boot为技术基础,从入门到精通,由浅入深地介绍Spring Data JPA的使用.有语法,有实践,有原理剖析. 本书分为12章,内容包括整体认识JPA.JPA基础查询 ...
- LeetCode 1819. 序列中不同最大公约数的数目(数论)
题目描述 给你一个由正整数组成的数组 nums . 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数. 例如,序列 [4,6,16] 的最大公约数是 2 . 数组的一个 子序列 本质 ...
- C#/.NET/.NET Core开发实战教程集
DotNetGuide介绍 DotNetGuide是一个专注于C#/.NET/.NET Core学习.工作.面试指南的GitHub知识库,该知识库在GitHub中Star数已突破6.5k+当然这离不开 ...
- centos7 nginx+php7yum安装
centos7 nginx+php7yum安装. 一.安装nginx 1.安装yum源 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/ ...
- Serilog文档翻译系列(七) - 应用设置、调试和诊断、开发接收器
01.应用设置 Serilog 支持在 App.config 和 Web.config 文件中使用简单的 配置语法,以设置最低日志级别.为事件添加额外属性以及控制日志输出. Serilog 主要通过代 ...
- 进程切换分析(2):TLB处理
一.前言 进程切换是一个复杂的过程,本文不准备详细描述整个进程切换的方方面面,而是关注进程切换中一个小小的知识点:TLB的处理.为了能够讲清楚这个问题,我们在第二章描述在单CPU场景下一些和TLB相关 ...
- 使用 vue2 + element-ui 登录的时候的逻辑
1. 自动校验表单逻辑 // 1. 自动表单验证 try { // 这个形式自动表单验证麻烦 // this.$refs.loginForm.validate((valid)=>{ ... }) ...
- 盘点.NET支持的 处理器架构
在一个会议上,中国招投标协会的技术负责人居然当着很多领导的面说.NET不能在国产服务器上运行,可以说这个技术负责人非蠢即坏.国产服务器的处理器架构主要包括x86.ARM.LoongArch.risc- ...
- 云原生爱好者周刊:寻找 Netlify 开源替代品
开源项目推荐 Coolify Coolify 是一个开源自托管的 Heroku/Netlify 替代品,颜值还不错. Podman Desktop Podman Desktop 是针对 Podman ...