[Comet OJ - Contest #9 & X Round 3] Namid[A]me
一开始读错题了,以为是\(\sum_{1\leq u\leq v\leq n}f(u,v)\),还疑惑这题这么简单怎么没人做(
实际上是\(\sum_{1\leq u\leq v\leq n}f(u,v)^{f(u,v)}\)(捂脸)
这个东西拆分是几乎不可做的,因此只能直接算。
发现对于固定起点的一条链,在链上做前缀\(\text{and}\)运算时只会使某些位的\(1\)变为\(0\),因此可能的\(\text{and}\)取值只有不超过\(\log a\)种。即,对于确定根的某个子树,以根为一端的链\(\text{and}\)值最多只有\(d\log a\)种,其中\(d\)为子树叶子个数。
直接dfs即可,每个点维护子树中以其为一端的链\(\text{and}\)值的种类和出现次数的集合。每次合并两棵子树时,暴力枚举两个集合中所有值计算。发现两个叶子只有在lca处才会产生\(\log^2a\)的复杂度,即合并叶子的总复杂度不超过\(d^2\log^2a\)。又由于路径最多\(n^2\)条,\(nd\leq 3\times 10^6\)就变成很强的性质了,\(O(\min(n,d\log a)^2)\leq O(nd\log a)\),在\(d\)取\(\frac{n}{\log a}\)时取到等号。
然而\(\color{grey}{\text{swk}}\)太菜了,犯了两个错误,都会导致复杂度上升至\(O(nd\log^2 a)\):
维护子树中以其为一端的链\(\text{and}\)值的种类和出现次数的集合时,每次合并一棵子树要对值的种类去重。\(\color{grey}{\text{swk}}\)采用了暴力排序后去重的方法。然而正解是直接将两个vector拼接在一起,只在交接处去重。可以发现这样做不会使复杂度上界上升。
题面中的模数是有深意的,给出原根的目的是通过预处理离散对数来避免快速幂。然而\(\color{grey}{\text{swk}}\)没注意到这点,就直接暴力快速幂了QAQ
然而所幸的是这两只\(\log a\)都属于常数较小的一类,加之数据很难做到卡满,\(\color{grey}{\text{swk}}\)仍然完成了\(2999ms\)通过时限\(3s\)的题目的壮举(逃
[Comet OJ - Contest #9 & X Round 3] Namid[A]me的更多相关文章
- Comet OJ - Contest #9 & X Round 3题解
传送门 \(A\) 咕咕 typedef long long ll; int a1,a2,n,d;ll res; int main(){ scanf("%d%d%d",&a ...
- Comet OJ - Contest #9 & X Round 3 【XR-3】核心城市 【树的理解】
一.题目 [XR-3]核心城市 二.分析 题意就是在树中确定$K$个点,满足剩下的$N-K$个点中到这$K$个点的最大距离尽可能小. 理解上肯定是确定一个根,这个根是这个图的中心. 可以通过根据结点的 ...
- Comet OJ - Contest #2 简要题解
Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...
- Comet OJ - Contest #2简要题解
Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...
- Comet OJ - Contest #4--前缀和
原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...
- Comet OJ - Contest #11 题解&赛后总结
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...
- Comet OJ - Contest #8
Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...
- Comet OJ - Contest #13-C2
Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...
- Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」
来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...
随机推荐
- 【洛谷T89379 【qbxt】复读警告】
题目链接 这个题可以应用dp #include<bits/stdc++.h> using namespace std; ; inline int read() { ,b=; char c= ...
- jest 事件测试
概述 最近玩 Jest,测试 Vue 组件上的事件,有一些心得,记录下来供以后开发时参考,相信对其他人也有用. 事件测试 对于 Vue 组件上的事件,分为 2 种,一种是子组件 Emit 的事件,另一 ...
- 用apicloud+vue的VueLazyload实现缓存图片懒加载
<script src="../../script/vue-lazyload.js"></script><img v-lazy="remot ...
- 12 oracle 数据库坏块--物理坏块-ORA-01578/ORA-01110
oracle 数据库坏块--物理坏块 数据坏块的类型物理坏块:通常是由于硬件损坏如磁盘异常导致.内存有问题.存储链有问题. IO有问题.文件系统有问题. Oracle本身的问题等逻辑坏块:可能都是软件 ...
- Hibernate API的使用(Query、Criteria、SQLQuery对象)
Query对象 我们使用Query对象不需要编写SQL语句,但是得写HQL语句. HQL:Hibernate Query Language:Hibernate提供的查询语言,和SQL语句很相似. HQ ...
- HTML5 表单的补充+注意事项
input标签中 type="image" 与 type="submit"属性 的区别 (下文简写image和submit) 1.这两者都可以响应请 ...
- 【Linux开发】【Qt开发】交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
一. 什么是ABI和EABI1) ABI: 二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)在计算机中,应用 ...
- netcore 使用redis session 分布式共享
首先准备redis服务器(docker 和redis3.0内置的哨兵进行高可用设置) 网站配置Redis作为存储session的介质(配置文件这些略).然后可以了解一下MachineKey这个东西.( ...
- selenium学习-对当前浏览器窗口截屏
方法:get_screenshot_as_file(filename) # coding=UTF-8 #16.对当前浏览器窗口截屏 import sys reload(sys) sys.setdefa ...
- 文件压缩、解压工具类。文件压缩格式为zip
package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.Fi ...