[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\) 替换成 ...
随机推荐
- 使用System.ComponentModel.DataAnnotations验证字段数据正确性
在.NET MVC 中,当页面提交model到Action的时候,自动填充ModelState.使用ModelState.IsValid进行方便快捷的数据验证,其验证也是调用命名空间System.Co ...
- easyhook源码分析一
easyhook简要说明: easyhook是一个开源的hook库(http://easyhook.github.io/),其支持托管代码(.NET)和非托管代码(C/C++)hook,这里只分析了其 ...
- ubuntu通过windows下的ccproxy代理上网
网上教程很多,需要注意的是将ubuntu的ip和windows的Ip设置到同一个网段,即子网掩码是1的对应的部分要相同.由于没有配置到同一个网段,折腾了我好久.
- day66—angularJS学习笔记-表达式
转行学开发,代码100天——2018-05-21 angular的变量数据初始化: ng-init="quantity=1;cost=30;student={firstName:'李',la ...
- java常用加密算法
常用加密算法的Java实现(一) ——单向加密算法MD5和SHA 日期:2014/6/1 文:阿蜜果 1.Java的安全体系架构 1.1 Java的安全体系架构介绍 Java中为安 ...
- Flink数据流图的生成----简单执行计划的生成
Flink的数据流图的生成主要分为简单执行计划-->StreamGraph的生成-->JobGraph的生成-->ExecutionGraph的生成-->物理执行图.其中前三个 ...
- gitlab在centos7.3上搭建
gitlab在centos7.3上搭建 最近接到gitlab+jenkins的任务,由于以前只接触过GitHub,并只是简单的使用,这里简单记录gitlab与jenkins搭建的 环境: centos ...
- IDEA给类和方法配置注释模板(参数换行显示)
创建类模板 1.打开设置:File–>settings–>Editor–>File and Code Templates–>Includes 2.输入注释模板 #if (${P ...
- 【ABAP系列】SAP ABAP SY-SUBRC的含义解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP SY-SUBR ...
- Canvas入门08-绘制仪表盘
需求 实现下图所示的仪表盘的绘制. 分析 我们先来将仪表盘进行图形拆分,并定义尺寸. 我们绘制的逻辑: 绘制中心圆 绘制环外圈圆 绘制环内圈圆 绘制刻度内圈圆 绘制刻度线 绘制刻度文字 绘制指针 定义 ...