首页 > 其他分享 >ARC169 A Please Sign

ARC169 A Please Sign

时间:2023-12-10 10:11:20浏览次数:31  
标签:ARC169 int printf Please Sign 最深 maxn 深度

Link

ARC169 A Please Sign

Question

给出 长度为 \(n\) 的数组 \(A\),以及长度为 \(n-1\) 的数组 \(P\),满足 \(P_i<i\),\(P\) 标号为 \(2\sim n\)

每一轮操作为 \(A_{P_i} \leftarrow A_i+A_{P_i}\)

求 无限轮后,\(A_1\) 值的正负性

Solution

由于 \(P_i<i\) 所以可以把问题抽象成树,\(A_i\) 表示结点,\(P_i-i\) 表示边,其中 \(P_i\) 为 \(i\) 的父节点,每次操作相当于把父节点的值减去子节点的值

我们发现,深度最深的点起决定性作用,因为无限次之后

如果深度最深的点是负的,那么肯定能把深度较浅的点减成负的。如果深度最深的点是正的,那么肯定能把深度较浅的点加成正的。

往往深度最深的不是一个点,如果深度最深的那些点的加和为 \(0\),那么就看深度第二深的点集的加和以此类推,直到非零为止

如果加和都为 \(0\),那么就有 \(A_1\) 的初始状态来决定答案

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=24;
typedef long long LL;
LL a[maxn],ans;
vector<int> G[maxn];
LL vis[maxn];
int p[maxn];
int dep[maxn];
void DFS(int x,int dp){
    dep[x]=dp;
    for(auto v:G[x]){
        DFS(v,dp+1);
    }
}
int main(){
    int N;
    scanf("%d",&N);
    for(int i=1;i<=N;i++)
        scanf("%lld",&a[i]);
    for(int i=2;i<=N;i++){
        scanf("%d",&p[i]);
        G[p[i]].push_back(i);
    }
    DFS(1,0);
    for(int i=2;i<=N;i++)
        vis[dep[i]]+=a[i];
    for(int i=N;i>=1;i--){
        if(vis[i]!=0){
            if(vis[i]>0)
                {printf("+\n");return 0;}
            else 
                {printf("-\n");return 0;}
        }
    }
    if(a[1]>0)
        {printf("+\n");return 0;}
    else if(a[1]<0)
        {printf("-\n");return 0;}
    else 
        {printf("0\n");return 0;}
    return 0;
}

标签:ARC169,int,printf,Please,Sign,最深,maxn,深度
From: https://www.cnblogs.com/martian148/p/17892223.html

相关文章

  • 用AntDesignBlazor快速开发一个权限系统
    写在前面:如果您是一个C#的后台开发人员,又或是C#的WPF开发人,如果想快速开发自己的网站系统,那么选择Blazor技术是太适合你不过了。(在没有Blazor之前,我会推荐Vue),尤其当我看到AntDesginBlazor(https://antblazor.com/zh-CN/)全家桶的时候,毫不犹豫就开始了我的愉快之旅。一、登录界面......
  • a-table(AntDesign Vue)实现表格行上下拖动排序
    参考链接:https://blog.csdn.net/song_de/article/details/125218350https://blog.csdn.net/m0_61342618/article/details/132556739?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1-132556739-blog-125218350.235v39pc_releva......
  • powerDesigner导出Excel脚本
    导出excel的脚本如何将里面的表结构导出来到本地excel呢?步骤:(1)打开powerDesigner,同时按住ctrl+shift+X,脚本框就会弹出来同时按住ctrl+shift+X,脚本框就会弹出 (2)在脚本框中输入下面的代码(无需修改,直接复制粘贴就可),按下“Run”  分目录递归,查找当前PDM下所有表,并导出Exce......
  • docker拉取镜像错误missing signature key
    Centos7,使用docker拉取的时候,报错信息:missingsignaturekey解决:1、复制下面的内容yumerasedocker\docker-client\docker-client-latest\docker-common\docker-latest\......
  • antd 5.0 定制主题如此酷炫,我决定开启 @ant-design/cssinjs 阅读之旅
    前言antd5.0正式发布已经有一段时间了,发布当天,一心二用的看完直播。很喜欢整个设计,有种简约快乐工作的感觉,某些功能设计初衷也给了我一些启发。antd5.0提供的主题定制挺酷炫的,加之我最近对「CSS-in-JS」很感兴趣。于是迫不及待的打开了它的源码,准备研究一番。我大部分情况下都......
  • ant design使用,批量添加单词,修改单个单词
    backend项目页面路径:/Users/songximing/backend/src/pages/app/listen/Words/index.tsx弹窗修改单个单词,列表的input没变,解决办法参考:https://blog.csdn.net/weixin_42881588/article/details/124406364reactinput的defaultValue不会变化给input加了个key:{ti......
  • Codeforces Round 904 (Div. 2) C. Medium Design
    jly:开始的想法:首先枚举max的位置。包含它的一定是全加,剩下的一定都不加。然后求所有位置的最小值。初始全0,枚举max之后,因为是加区间,min一定在两端(最左或最右)。所以不需要枚举max,我们枚举min就好(因为加区间和初始全0,这个题的特殊性)。写法注意的点:下标从0开始,区间的左端点都-1,右端......
  • AntDesignBlazor示例——列表查询条件
    本示例是AntDesignBlazor的入门示例,在学习的同时分享出来,以供新手参考。示例代码仓库:https://gitee.com/known/AntDesignDemo1.学习目标重构项目文件结构添加日期查询条件实现查询业务逻辑2.重构项目结构在实现列表查询条件功能之前,我们先重构一下项目结构,创建天气Mod......
  • Ant Design Vue2表单验证失效、select下拉框验证失效
    简述AntDesignVue2表单验证失效、表单校验三个下拉框,级联联动,动态赋值,第一项changge之后2,3需要=null或者='',但是发现明明第二个select已经选择了而且this.form.b不是空为啥还是校验不通过前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注......
  • Ant Design Vue2表单验证失效、select下拉框验证失效
    简述AntDesignVue2表单验证失效、表单校验三个下拉框,级联联动,动态赋值,第一项changge之后2,3需要=null或者='',但是发现明明第二个select已经选择了而且this.form.b不是空为啥还是校验不通过前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注......