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);
}

2023NOIP A层联测26 T4 abstract的更多相关文章

  1. 从零开始编写自己的C#框架(16)——Web层后端父类

    本章节讲述的各个类是后端系统的核心之一,涉及到系统安全验证.操作日志记录.页面与按键权限控制.后端页面功能封装等内容,希望学习本系列的朋友认真查看新增的类与函数,这对以后使用本框架进行开发时非常重要. ...

  2. 使用T4模板生成代码的学习

    之前做项目使用的都是Db First,直接在项目中添加Entity Framework,使用T4模板(T4模板引擎之基础入门)生成DAL BLL层等(T4模板是一个同事给的,也没有仔细研究,代码如下: ...

  3. ASP.NET MVC4入门到精通系列目录汇总

    序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...

  4. 转-封装网络请求库,统一处理通用异常 (基于volley网络请求库)

    http://blog.csdn.net/kroclin/article/details/40540761 一.前言 volley的发布让网络请求也变得十分便利,但是我们通常懒得很想用一两句代码实现一 ...

  5. java 考试试题

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自学员 ...

  6. Scala中的语言特性是如何实现的(3) -- Trait

    我的新博客地址:http://cuipengfei.me/blog/2013/10/13/scala-trait/ 我在Coursera上跟了一门叫做Functional Programming Pr ...

  7. Effective Java通俗理解(下)

    Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...

  8. 【代码总结● Swing中的一些操作与设置】

    Swing中设置关闭窗口验证与添加背景图片 package com.swing.test; import java.awt.EventQueue; import java.awt.Image; imp ...

  9. 理解Spring定时任务的fixedRate和fixedDelay

    用过  Spring 的 @EnableScheduling 的都知道,我们用三种形式来部署计划任务,即 @Scheduled 注解的 fixedRate(fixedRateString), fixe ...

  10. 笔试题之java基础

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自传智 ...

随机推荐

  1. 斐讯 N1 刷机记录

    Prerequisites USB 公对公线 Windows 操纵系统 AMLogic USB Burning Tool,安装后名字为 Aml_Burn_Tool. 降级 打开终端,输入 hdwwiz ...

  2. Prism:框架介绍与安装

    Prism:框架介绍与安装 什么是Prism? Prism是一个用于在 WPF.Xamarin Form.Uno 平台和 WinUI 中构建松散耦合.可维护和可测试的 XAML 应用程序框架 Gith ...

  3. 反转字符串II(541)

    题目描述 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符. 如果剩余字符少于 k 个,则将剩余字符全部反转. 如果剩余字符小于 2 ...

  4. 2024 NepCTF

    NepCTF NepMagic -- CheckIn 直接玩游戏就能出 注意有一关要把隐藏的方块全找到 NepCamera 先使用tshark读取数据 结果文件中发现大量jpeg头ffd8ffe0. ...

  5. 【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?

    通过前面的学习,我们已经知道,怎么将本地自己制作的镜像发布到阿里云远程镜像仓库中去.但是在实际工作开发中,一般,我们都是将公司的镜像发布到公司自己搭建的私服镜像仓库中,那么一个私服的镜像仓库怎么搭建? ...

  6. Instant exceeds minimum or maximum instant

    使用 Instant.now().plusSeconds("xxxxx")报错  Instant exceeds minimum or maximum instant原因是取值范围 ...

  7. 9.5内网横向&代理&隧道

    Socks代理思路: 工具:nps.frp.ngrok.reGeorg.sockscap64.earthworm.proxifier.proxychains 知识点 1.内外网简单知识 2.内网1和内 ...

  8. sicp每日一题[2.3]

    Exercise 2.3 Implement a representation for rectangles in a plane. (Hint: You may want to make use o ...

  9. Transformer应用于时序任务:综述《Transformers in Time Series: A Survey》

    2022年9月13日 21:28 摸鱼了一天,看看综述. 论文:Transformers in Time Series: A Survey GitHub: 阿里达摩院 2022的论文. 摘要 从两个角 ...

  10. MOGA-Net: 多目标遗传算法求解复杂网络中的社区《A Multiobjective Genetic Algorithm to Find Communities in Complex Networks》(遗传算法、多目标优化算法、帕累托最优)

    论文:A Multiobjective Genetic Algorithm to Find Communities in Complex Networks GitHub: IEEE 2012的论文. ...