2023NOIP A层联测26 T4 abstract
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的更多相关文章
- 从零开始编写自己的C#框架(16)——Web层后端父类
本章节讲述的各个类是后端系统的核心之一,涉及到系统安全验证.操作日志记录.页面与按键权限控制.后端页面功能封装等内容,希望学习本系列的朋友认真查看新增的类与函数,这对以后使用本框架进行开发时非常重要. ...
- 使用T4模板生成代码的学习
之前做项目使用的都是Db First,直接在项目中添加Entity Framework,使用T4模板(T4模板引擎之基础入门)生成DAL BLL层等(T4模板是一个同事给的,也没有仔细研究,代码如下: ...
- ASP.NET MVC4入门到精通系列目录汇总
序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...
- 转-封装网络请求库,统一处理通用异常 (基于volley网络请求库)
http://blog.csdn.net/kroclin/article/details/40540761 一.前言 volley的发布让网络请求也变得十分便利,但是我们通常懒得很想用一两句代码实现一 ...
- java 考试试题
Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自学员 ...
- Scala中的语言特性是如何实现的(3) -- Trait
我的新博客地址:http://cuipengfei.me/blog/2013/10/13/scala-trait/ 我在Coursera上跟了一门叫做Functional Programming Pr ...
- Effective Java通俗理解(下)
Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...
- 【代码总结● Swing中的一些操作与设置】
Swing中设置关闭窗口验证与添加背景图片 package com.swing.test; import java.awt.EventQueue; import java.awt.Image; imp ...
- 理解Spring定时任务的fixedRate和fixedDelay
用过 Spring 的 @EnableScheduling 的都知道,我们用三种形式来部署计划任务,即 @Scheduled 注解的 fixedRate(fixedRateString), fixe ...
- 笔试题之java基础
Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自传智 ...
随机推荐
- Ubuntu 24.04 安装 Python 2.7
Ubuntu 24.04 对 Python 2.7 的维护已经停止了,因此 Python 2.7 已从 Ubuntu 24.04 软件包移除.如果想要安装 Python 2.7,需要我们自己从 Pyt ...
- DASCTF 2024暑期挑战赛 RE
DASCTF 2024暑期挑战赛 DosSnake 使用ghidra看反汇编 发现有XOR操作 在ida里面看汇编跟一下 字符DASCTF地址往下6个存放的数据与DASCTF字符串进行异或 A=[0x ...
- Gson toJson 忽略 long 为 0的数据
起因于数据id过大,所以将对应int , Integer都修改为long, 测试过程中发现 Gson toJson时,字段将int为0的数据忽略,但long 没有, 所以 1. 新增适配器 impor ...
- EF Core – Owned Entity Types & Complex Types
前言 EF Core 8.0 推出了 Complex Types,这篇要来介绍一下. 由于它和 Owned Entity Types 傻傻分不清楚,加上我之前也没有写过 Owned Entity Ty ...
- Angular 18+ 高级教程 – Component 组件 の Attribute Directives 属性型指令
介绍 指令就是没有模板的组件.除了模板其它的都有,比如 selector.inject.@Input.lifecycle 等等. 那既然都有完整的组件了,为什么还搞一个少掉模板的指令呢? 很简单啊,因 ...
- Go runtime 调度器精讲(十):异步抢占
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占.本讲会介绍基于信号的真抢占式调度. 在介绍真抢占式调度之前看下 Go 的两种抢 ...
- Python版Mysql爆破小脚本
本文给大家分享的是使用Python制作的MySQL在线用户密码的暴力破解脚本,非常的好用,有需要的小伙伴可以参考下 Mysql Python版本爆破小脚本,需要安装Python插件MySQL-py ...
- Vue 3 + Vite + SuerMap iClient构建报错Uncaught TypeError utils.inherits is not a function
一.现象 Uncaught TypeError: utils.inherits is not a function 二.问题产生原因 Elasticsearch本身就需要这些东西,以前没有问题是因为W ...
- Windows平台下安装与配置MySQL9
要在Windows平台下安装MySQL,可以使用图行化的安装包.图形化的安装包提供了详细的安装向导,以便于用户一步一步地完成对MySQL的安装.本节将详细介绍使用图形化安装包安装MySQL的方法. 1 ...
- php生成验证码类
php生成验证码类 直接看代码 <?php session_start(); class Code{ //资源 private $img; //画布宽度 private $width=100; ...