传送门


一开始读错题了,以为是\(\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的更多相关文章

  1. 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 ...

  2. Comet OJ - Contest #9 & X Round 3 【XR-3】核心城市 【树的理解】

    一.题目 [XR-3]核心城市 二.分析 题意就是在树中确定$K$个点,满足剩下的$N-K$个点中到这$K$个点的最大距离尽可能小. 理解上肯定是确定一个根,这个根是这个图的中心. 可以通过根据结点的 ...

  3. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

  4. Comet OJ - Contest #2简要题解

    Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...

  5. Comet OJ - Contest #4--前缀和

    原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...

  6. Comet OJ - Contest #11 题解&赛后总结

    Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...

  7. Comet OJ - Contest #8

    Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...

  8. Comet OJ - Contest #13-C2

    Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...

  9. Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」

    来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...

随机推荐

  1. 【flask_sqlalchemy】模糊查询

    flask_sqlalchemy的查询方法有filter()和filter_() 这2个方法的主要区别如下: 模块 语法 ><(大于和小于)查询 and_和or_查询 filter_by( ...

  2. 设计模式(2): 响应store中数据的变化

    概述 最近最近做项目的时候总会思考一些大的应用设计模式相关的问题,我把自己的思考记录下来,供以后开发时参考,相信对其他人也有用. store里面响应数据变化 通常情况下,我们会把数据存在store里面 ...

  3. linux使用ltrace和strace跟踪程序执行过程

    yum install strace yum install ltrace 1.strace  ping -c 1 www.baidu.com 2.ltrace  ping -c 1 www.baid ...

  4. unity让碰撞只发生一次

    碰撞发生在帧的开始,所以你可以检测到冲突,并在LateUpdate复位: private bool hasCollided = false; void OnCollisionEnter(Collisi ...

  5. keras recall

    # accuracy, fmeasure, precision,recall def mcor(y_true, y_pred): y_pred_pos = K.round(K.clip(y_pred, ...

  6. 全自动网络安装centos(一)安装前准备工作

    centos系统启动文件详解: 注:在centos6里需要给NetworkManager服务关闭并且禁止开机启动,6和7里都需要将selinux关闭,否则会出现网络配置异常情况,并且要将防火墙关闭. ...

  7. springboot工程启动时,报错:No bean named 'shiroFilter' available

    在启动Springboot项目时,报错:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ' ...

  8. 小z的洞穴之旅 QDUOJ 并查集+连通块

    小z的洞穴之旅 QDUOJ 并查集+连通块 原题链接 题意 小 z 同学在某个闲暇的周末决定去野外探险一波,结果在丛林深处中误打误撞进入了一个神秘的洞穴,虽然洞穴中光线昏暗,但小 z 凭借其敏锐的眼力 ...

  9. linux中断处理上下部分

    一.linux中断处理为什么要分为上下部 1.1. 中断处理的上半部(top half,又叫顶半部)和处理的下半部(bottom half,又叫底半部) 1.1. linux中断处理不参与调度,故中断 ...

  10. 区间gcd

    http://codeforces.com/problemset/problem/914/D 题意:给你n个数,两种操作:1.询问区间[l,r]在至多一次修改一个数的条件下区间gcd是否等于x. 2. ...