首页 > 其他分享 >BZOJ 3509

BZOJ 3509

时间:2023-09-19 20:23:10浏览次数:41  
标签:3509 多项式 sum belong sqrt 2a BZOJ

题目链接

description

给定一个长度为 \(n\) 的数组 \(a\),求有多少对 \(i,j,k(1\leq i<j<k\leq n)\) 满足 \(a_k-a_j=a_j-a_i\)

\(n\leq 10^5\)

值域大小 3e4.

solution

三个数,看起来就不好用数据结构维护。

\(2a_j=a_i+a_k\) 可以当做多项式两项的指数相加得到指数为 \(2a_j\) 的项。由于 \(i,j,k\) 有大小顺序,不好直接构造多项式统计,也难分治做。

由于序列长度只有 \(1e5\) 直接分块。对于 \(i,j,k\) 中至少两个在同一个块中的情况,不难 \(O(n\sqrt{n})\) 枚举得到它们对答案的贡献。

然后考虑 \(i,j,k\) 不在同一个块中的情况。设 \(belong(x)\) 表示 \(x\) 所在的块从左往右的编号。枚举块编号 \(t\),构造多项式 \(A(x)=\sum \sum\limits_{belong(p)<t} [a_p=i] x^i\) 以及 \(B(x)=\sum \sum\limits_{belong(p)>t} [a_p=i] x^i\)。计算他们的乘积。然后扫描块 \(t\) 中的元素 \(a_i\),将多项式乘积的次数为 \(2a_i\) 的项的系数加到答案中即可。

时间复杂度 \(O(m\sqrt{n}+n\sqrt{n})\),\(m\) 是值域大小。

code

参考代码链接:BZOJ By Hydro OJ

标签:3509,多项式,sum,belong,sqrt,2a,BZOJ
From: https://www.cnblogs.com/FreshOrange/p/17715705.html

相关文章

  • BZOJ 3451
    题目链接description厉害题。给定一棵树,按照题面要求求一个错误点分治的期望执行次数。(不想描述题面了qwq)solution考虑拆开计算每个点期望几层点分治后被删除。这个期望值显然就是它对答案的贡献。我们不妨以这个点为根,那么相当于要求每次删除一个未被删除的点的子树,求删完......
  • BZOJ3309 DZY Loves Math
    题目大意对于正整数\(n\),定义\(f(n)\)为\(n\)所包含质因子的最大幂指数。例如\(f(1960)=f(2^3\times5^1\times7^2)=3\),\(f(10007)=1\),\(f(1)=0\)。给定正整数\(a,b\),求下式的值:\[\sum^{a}_{i=1}\sum^{b}_{j=1}f(\gcd(i,j))\]推导首先记\(n=\min(a,b),m=\max(a,b)......
  • [BZOJ 4361] isn
    简述题意给出一个长度为\(n\)的序列\(A(A_1,A_2,\dots,A_n)\)。如果序列\(A\)不是非降的,你必须从中删去一个数,并重复这一操作,直到\(A\)非降为止。求有多少种不同的操作方案,答案模\(10^9+7\)。题面转换......
  • 【BZOJ 3364】Distance Queries 距离咨询 题解
    原题简化题意:有一棵\(n\)个点的树,\(q\)组询问,每次询问回答两点间的距离。令\(dis[i][j]\)表示\(i\)到\(j\)的距离,根节点为\(rt\),则有\(dis[i][j]=dis[rt][i]+dis[rt][j]-2×dis[rt][lca(i,j)]\),按照题意打即可。#include<bits/stdc++.h>usingnamespacestd;#d......
  • BZOJ3337 ORZJRY I 题解
    https://vjudge.net/problem/黑暗爆炸-3337题意试维护一个序列,支持以下\(11\)种操作:输入格式说明1xw在\(a_x\)后插入\(w\)2x删除\(a_x\)3xy翻转\((a_x,a_{x+1},\dots,a_y)\)4xyk将\((a_x,a_{x+1},\dots,a_y)\)右移\(k\)次......
  • BZOJ 4321 queue2 题解
    在硬盘里翻到了当时没推完的这个题,今天补完了最后几步。题目链接:https://hydro.ac/d/bzoj/p/4321对任意相邻两个元素差的绝对值不为\(1\)的\(n\)阶排列计数。\(\mathcal{O}(n^2)\)做法是考虑按照值域由小到大逐步插入,记录\(f_{i,j}\)为长度为\(i\)的排列,一共有\(j\)......
  • 题解 BZOJ4543【[POI2014] HOT-Hotels】
    长链剖分优化DP板子题了,但是虽然是板子这个转移方程也很难想。problem树。求\(\sum_{1\leqi<j<k\leqn}[dist(i,j)=dist(i,k)=dist(j,k)].\)。\(n\leq10^5\)。solution与重链剖分相似,长链剖分是将树剖成很多条长链。我们定义长儿子,为一个点的儿子中子树深度最大的一个儿......
  • 【求助+半题解】BZOJ1461字符串的匹配
    先说思路:因为我们是比对较短的\(B\)与较长的\(A\)的子串,所以我们求不变的\(B\)的\(next\)对于这道题我们可以使用树状数组查询前缀和维护数的排名。对于相同的数我们查询的排名是有误的,因此不仅要比对小于等于该数的前缀和,也要比对小于该数的前缀和。如:对于\(A=2\)\(2\),\(B......
  • 题解 //「BZOJ2406」矩阵
    赛时公告现在呢?:现在有弹窗了吗「2023-07-1916:45:07」此时无声胜有声。F.「BZOJ2406」矩阵http://222.180.160.110:1024/contest/3825/problem/7这是头一次见识到把矩阵和网络流结合在一起的题目。不过这种处理方式也是我们在学习二分图时的常客了:把行和列连边表示某一元......
  • BZOJ 1461 题解
    考虑设计一个哈希函数\(hash(x)=f(x)\timesbase^x\)。其中\(f(x)\)表示\(\sum_{j=1}^{i-1}[j<i]\)。然后类似于滑动窗口计算区间哈希值,加入一个数就计算贡献,减去一个数就计算这个数产生了贡献,两个东西都可以树状数组维护,那么愉快做完了。#include<bits/stdc++.h>#de......