• NOIP2018联合权值


    联合权值


    对考试时的分析:

    • (最主要)忘记链式前向星的储存原理了,(其实一开始就不是很懂),导致整个没法实现
    • 认清事实后想(认命)打暴力,然鹅傻fufu地研究(三道题)题意以及被T1那个肥肠简单的模拟拖了时间……emmmm

    考后分析题目:

        //打了好长的解释都没了  我恨华为
        //乘法运算律是关键,不看题解真的写不出来
        //重点回忆链式前向星的用法
        //输入不太好  但是手机编程太难,先不改了
    #include<bits/stdc++.h>
    using namespace std;
    int n,a,b;
    long long sum,maxn,w[300000];
    struct Edge
    {
        int to,next;
    }edge[1000000];
    
    int head[300000],cnt;
    
    void add(int a,int b)
    {
        edge[++cnt].to = b;
        edge[cnt].next = head[a];
        head[a] = cnt;
    }
    
    int main()
    {
        scanf("%d",&n);
        for(int i=0;i<n-1;i++){
            scanf("%d%d",&a,&b);
            add(a,b),add(b,a);
        }
        for(int i = 1; i <= n; i++) scanf("%lld",&w[i]);
        long long he,rmax;//一段的和与一段的最大值
        int node;
        for(int i=1;i<=n;i++)
        {
            node=head[i];//第一个元素
            he=(rmax=w[edge[node].to])%10007;//得到初始值
            node=edge[node].next;//下一个
            for(;node!=0;node=edge[node].next)//枚举与之相连的点
            {
                sum=(sum+he*w[edge[node].to])%10007;//乘法结合律
                maxn=max(maxn,rmax*w[edge[node].to]);
                he=(he+w[edge[node].to])%10007;
                rmax=max(rmax,w[edge[node].to]);
            }
        }
        printf("%lld %lld",maxn,(sum*2)%10007);
        return 0;
    }
    
  • 相关阅读:
    thinkphp3.2生成二维码
    php实现图片下载
    yii2.0 Activeform表单部分组件使用方法
    Yii2美化confirm
    Yii2学习笔记之场景
    tp5页面输出时,搜索后跳转下一页的处理
    php页面输出时,js设置input框的选中值
    mac中使用rz,sz上传文件
    golang的命令行程序开发
    Sring MVC基于Java Config方式配置Mybatis, 无XML
  • 原文地址:https://www.cnblogs.com/phemiku/p/11767077.html
Copyright © 2020-2023  润新知