传送门


一开始读错题了,以为是\(\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. hook C++

    Intercepting Calls to COM Interfaces(hook com接口) 通过COM组件IFileOperation越权复制文件 代码注入之远程线程篇 使用VC++通过远程进程 ...

  2. leetcode 437 Path Sum III 路径和

      相关问题:112 path sum /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo ...

  3. jenkins不展示set Build Description Setter插件

    问题描述: 1.jenkins 已下载 set build descripteion ,并且配置过,可以在构建历史中展示就用二维码 2.问题:构建历史中不展示二维码了,如图: 总是排查: 1.首先想到 ...

  4. Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler />

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  5. 全局namespace与模块内的namespace

    declare global{ declare namespace xxx } 相当于 在一个js文件的顶级部分 declare namespace xxx 声明的都是全局的namespace, 如果 ...

  6. 测开之路一百四十三:ORM框架之SQLAlchemy模型及表创建

    基于前一篇内容,可以使用模型的结构 目录结构 main,入口层 from flask import Flaskfrom flask_sqlalchemy import SQLAlchemy app = ...

  7. eslint 修改规则 函数形参不使用报错

    函数再定义形参以后未使用就会出现报错的问题,需要设置一项eslint 规则 再.eslintrc.js   rules里面添加 "no-unused-vars": "of ...

  8. 学习kettle遇到的问题

    一. 解决mysql连接缺少驱动问题:http://www.mamicode.com/info-detail-1724584.html 1.下载驱动 https://dev.mysql.com/dow ...

  9. python字符串-方法

    一.1. upper()作用:将字符串中字符转换为大写 In [17]: spam Out[17]: 'hello,world' In [18]: print(spam.upper()) HELLO, ...

  10. 关于java范型

    1 范型只在编译阶段有效 编译器在编译阶段检查范型结果之后,就会将范型信息删除.范型信息不会进入运行时阶段. 泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型. 2 不能对确定的范型 ...