首页 > 其他分享 >2023NOIP A层联测26 T4 abstract

2023NOIP A层联测26 T4 abstract

时间:2023-11-09 09:48:33浏览次数:32  
标签:26 log int T4 2023NOIP mp 节点 ll mod

2023NOIP A层联测26 T4 abstract

乱证明求性质的光速幂优化题。

思路

对于每一个节点,到该节点的子树内的叶子节点的路径中(包括路径上的点),出现的值只有 \(k\times(\log V+\log V)\) 个。

那么在以该点为终点,以子树内节点为起点的路径中,取值只有 \(k\times(\log V+\log V)\)。

这是因为,如果以某个非叶节点为起点到该点的路径中,取值严格包含在:到该节点的子树内的叶子节点的路径中出现的值。

我们可以叶子开始向父亲传值,如果父亲有多个枝丫,那么将枝丫的结果合并,由于这样的枝丫不超过 \(k\) 个,此处为 \(O(k^2\log^2 V)\)。

那么最终时间复杂度为 \(O(k^2\log^2 V \log A+nk\log V \log A)\)。

此处 \(\log A\) 为快速幂时间复杂度。

为了消去这个 \(\log A\),可以使用光速幂,\(O(1)\) 查询。

不过快速幂可以卡过(乐:D

CODE

#include<bits/stdc++.h>
using namespace std;

#define F first
#define S second
#define ll long long

const ll mod=111121,MOD=998244353;
const int maxn=1e5+5;

struct Edge
{
    int to,nxt;
}edge[maxn*2];

struct Hash
{
    int operator()(const pair<int,int> &x)const{
        return (1ll*x.F*MOD+x.second)%MOD;
    }
};
unordered_map< pair<int,int> , int, Hash >mp[maxn];//mp 记录某一点的二元组数量

int n,tot;
int a[maxn],head[maxn];

ll ans;

void add(int x,int y)
{
    tot++;
    edge[tot].to=y;
    edge[tot].nxt=head[x];
    head[x]=tot;
}

ll ksm(ll x,ll y)
{
    ll sum=1;
    for(;y;y/=2,x=x*x%mod) if(y&1) sum=sum*x%mod;
    return sum;
}

void dfs(int u,int f)
{
    if(a[u])
    {
        mp[u][make_pair(a[u],a[u])]=1;
        ans=(ans+ksm(a[u],a[u]))%mod;
    }

    for(int i=head[u];i;i=edge[i].nxt)
    {
        int v=edge[i].to;
        if(v==f) continue;
        dfs(v,u);
        for(auto j:mp[u])
        {
            for(auto k:mp[v])
                ans=(ans+ksm(j.F.F&k.F.F,j.F.S|k.F.S)*j.S%mod*k.S)%mod;
        }
        for(auto j:mp[v])
        {
            if(j.F.F&&a[u]) mp[u][make_pair(j.F.F&a[u],j.F.S|a[u])]+=j.S;
        }
    }
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<n;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        add(x,y),add(y,x);
    }
    dfs(1,0);
    printf("%lld",ans);
}

标签:26,log,int,T4,2023NOIP,mp,节点,ll,mod
From: https://www.cnblogs.com/binbinbjl/p/17819006.html

相关文章

  • 2023NOIP A层联测26 T2 competition
    2023NOIPA层联测26T2competitiontjm的做法,很抽象。考场思路考虑每道题被做过多少次肯定不现实,那么考虑每一道题有多少次没有做出来。假设某一次可以做出来题\(x\)的人是\(i\),而\(i\)下一个人可以做出这道题的人是\(j\),于是题\(x\)有\(C_{j-i}^2\)次不会被做出来......
  • 2023NOIP A层联测26 T3 tour
    2023NOIPA层联测26T3tour有意思的树上主席树。思路首先考虑一个点\(p\)能计入答案的情况,就是\(dis(x,p)-a_p\gea_p\)。我们把\(x\toy\)的路径拆成\(x\tolca,lca\toy\)两条。记录一个点\(x\)到根路径上的前缀和为\(s_x\),对于两条路径,我们分类讨论:第一......
  • 2609
    给你一个仅由 0 和 1 组成的二进制字符串 s 。  如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。 返回  s 中最长的平衡子字符串长度。子字符串是字......
  • vue-test4 -----插槽
    <template><!--<Mainclass="cccc"/><component-a/>--><slot-demo><template#header="slotProps"><p>插槽标题-{{slotProps.msg}}</p></template><template......
  • vue-test4 -------组件之间的数据传递
    <template><h3>CompA</h3><component-b:onfun="dateFun"></component-b><p>{{msg}}</p></template><script>importComponentBfrom"@/components/ComponentB.vue";exportdefault{......
  • D - ABC Puzzle -- ATCODER ABC 326
    D-ABCPuzzlehttps://atcoder.jp/contests/abc326/tasks/abc326_dSampleInput1Copy5ABCBCACAABSampleOutput1CopyYesAC..B.BA.CC.BA.BA.C...CBA思路充分利用约束条件,构造算法,避免穷举所有情况,然后再根据约束条件判断情况的合法性。 如下代码,优......
  • 2609. 最长平衡子字符串
    给你一个仅由 0 和 1 组成的二进制字符串 s 。  如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。 返回  s 中最长的平衡子字符串长度。子字符串是字......
  • 实验三_OOP_张文瑞_202213260018
    任务1源代码:11#pragmaonce2233#include<iostream>44usingstd::cout;55usingstd::endl;6677classPoint{88public:99Point(intx0=0,inty0=0);1010~Point()=default;11111212intget_x()......
  • H.26x中SEI信息解读(转)
    原文:https://www.jianshu.com/p/23d9ab930b49作者:Li_Xianglin来源:简书H.264SEIhttp://www.itu.int/rec/T-REC-H.264 NALheader起始码(暗红底色)"0x00000001"分割出来的比特流即是NALunit,起始码紧跟的第一个字节(墨绿底色)是NALheader。上图“NALheader”一共出现了......
  • H265 NALU类型详细解析(转)
    原文:https://blog.csdn.net/u014470361/article/details/89541544作者:夜风~来源:CSDN前言在海思自hi3516a带的开发固件中,有H265编码的实例,在SAMPLE_VENC_1080P_CLASSIC(HI_VOID)应用实例中有涉及,那么本文将对H265的nal头和nalu的类型进行相关解析。h265Nalu类型解析 FF:......