当前位置: 首页 > news >正文

网站建设需要php吗佛山营销型建设网站

网站建设需要php吗,佛山营销型建设网站,城市生活网官方网站app,企业网页设计与推广文章目录 1. 根号分治哈希冲突 2. 线性分块引入教主的魔法[CQOI2011] 动态逆序对[国家集训队] 排队[HNOI2010] 弹飞绵羊蒲公英 1. 根号分治 哈希冲突 题目1 n n n 个数, m m m 次操作。操作 1 为修改某一个数的值,操作 2 为查询所有满足下标模 x x x …

文章目录

    • 1. 根号分治
      • 哈希冲突
    • 2. 线性分块
      • 引入
      • 教主的魔法
      • [CQOI2011] 动态逆序对
      • [国家集训队] 排队
      • [HNOI2010] 弹飞绵羊
      • 蒲公英

1. 根号分治

哈希冲突

题目1

n n n 个数, m m m 次操作。操作 1 为修改某一个数的值,操作 2 为查询所有满足下标模 x x x 等于 y y y 的数之和。

先来看两个暴力算法:

  • 算法 1:

    修改:直接修改。时间复杂度 O ( 1 ) O(1) O(1)
    查询:枚举下标模 x x x 等于 y y y 的数的和。时间复杂度 O ( n ) O(n) O(n)

  • 算法 2:

    先预处理出 f ( i , j ) f(i,j) f(i,j) 表示下标模 i i i 等于 j j j 的数之和。时间复杂度 O ( n 2 ) O(n^2) O(n2)
    修改:修改所有 i i i 下的 f ( i , x m o d i ) f(i,x\bmod i) f(i,xmodi)。时间复杂度 O ( n ) O(n) O(n)
    查询:直接查询。时间复杂度 O ( 1 ) O(1) O(1)

容易想到划定一个界限 B B B 选择使用的算法。

x x x 较大时,即 x > B x>B x>B 时,算法 1 的查询次数会较小,复杂度 O ( N B ) O(\frac N B) O(BN)

当我们仅用算法 2 处理模数 i i i 较小的情况时,即 i ≤ B i\le B iB 时,算法 2 复杂度会较低,预处理复杂度 O ( B 2 ) O(B^2) O(B2),修改复杂度 O ( B ) O(B) O(B)

总时间复杂度 O ( B 2 + m ( N B + B ) ) O(B^2+m(\frac N B + B)) O(B2+m(BN+B))。在 B = N B=\sqrt N B=N 时复杂度最低。

代码


2. 线性分块

引入

题目

给定 n n n 个数 a [ 1.. n ] a[1..n] a[1..n] m m m 次操作,区间修改,区间查询。

我们将数列分段,设块长为 B B B

对于区间 [ L , R ] [L,R] [L,R] 的询问:

  • L , R L,R L,R 在同一个块内,直接暴力枚举 [ L , R ] [L,R] [L,R] 统计。

  • L , R L,R L,R 不在同一个块内,则将 [ L , R ] [L,R] [L,R] 分成左右两个散块以及中间若干整块。对于每个整块,我们事先预处理出每个整块的 b i = ∑ a i b_i=\sum a_i bi=ai。对于散块,暴力统计。

    时间复杂度至多 O ( B + N B ) O(B+\frac N B) O(B+BN)

对于区间 [ L , R ] [L,R] [L,R] 的修改:

  • L , R L,R L,R 在同一个块内,直接暴力枚举 [ L , R ] [L,R] [L,R] 修改。

  • L , R L,R L,R 不在同一个块内,则将 [ L , R ] [L,R] [L,R] 分成左右两个散块以及中间若干整块。对于每个整块,我们修改整块的 b i b_i bi。对于散块,暴力修改。

    时间复杂度至多 O ( B + N B ) O(B+\frac N B) O(B+BN)

B = N B=\sqrt N B=N 时最优。

代码


教主的魔法

题目

给定 n n n 个数, m m m 次操作。区间修改,区间查询有多少个数 ≥ k \ge k k

设块长为 B B B

  • 对于区间 [ L , R ] [L,R] [L,R] 的询问:

    与上题基本一样,但是我们需要快速统计出整块中有多少个 ≥ k \ge k k 的数。考虑将所有整块内元素排序后二分查找。

    时间复杂度至多 O ( B + N B log ⁡ B ) O(B+\frac N B \log B) O(B+BNlogB)

  • 对于区间 [ L , R ] [L,R] [L,R] 的修改:

    修改整块并不会改变排序后的相对位置,记录标记表示增加的量即可。

    而对于散块的修改,可能会改变所在块的相对位置,我们暴力修改后重新排序。

    时间复杂度至多 O ( B + log ⁡ B + N B ) O(B +\log B + \frac N B) O(B+logB+BN)

复杂度最低时, B B B 的大小应该为 N \sqrt N N 左右(略大于 N \sqrt N N ,取 N \sqrt N N 也能过)。

代码

同类题 :Array Transformer (附代码)


[CQOI2011] 动态逆序对

题目

给定 n n n 个数的一个排列, m m m 此操作。每次删一个数,问删前逆序对个数。

删除一个数后,逆序对数量会减少这个数的贡献。第 i i i 个数的贡献为 [ 1 , i ) [1,i) [1,i) 中比 i i i 大的个数加上 ( i , n ] (i,n] (i,n] 中比 i i i 小的个数。和上一题类似,可以用二分或者树状数组解决。

代码


[国家集训队] 排队

题目

给定 n n n 个数 h 1 . . . h n h_1...h_n h1...hn m m m 次操作。每次操作交换两个数,问操作前的逆序对个数。

和上一题一样,考虑两个数交换前和交换后的贡献。

代码

双倍经验 :Anton and Permutation (附代码)


[HNOI2010] 弹飞绵羊

题目

题意见题面。

考虑预处理出 s t e p [ x ] step[x] step[x] 表示从 x x x 处开始弹几步能弹到下一块, p o s [ x ] pos[x] pos[x] 表示从 x x x 开始第一次弹到下一块的位置在哪里。

查询:每次跳到下一块,复杂度为 O ( N B ) O(\frac N B) O(BN)
修改:记修改点为 x x x ,所在块为 B B B ,块对应区间为 [ L B , R B ] [L_B,R_B] [LB,RB] ,那么可能会对 [ L B , x ] [L_B,x] [LB,x] 上的点的 p o s pos pos s t e p step step 造成影响。复杂度 O ( B ) O(B) O(B)

B = N B=\sqrt N B=N

代码

双倍经验 :Holes (附代码)


蒲公英

题目

静态求区间众数,强制在线。

分析:

  • n ≤ 4 × 1 0 4 , a ≤ 1 0 9 n\le 4 \times 10 ^ 4, a\le 10^9 n4×104,a109 ,考虑离散化。

  • 由于众数不满足一些性质(如可加性等),无法方便的用一些数据结构维护出来,考虑分块。

Solution

我们将序列分成 K K K 段,每段长度 N K \frac {N}{K} KN (左右)。

对于一次询问 [ l , r ] [l,r] [l,r] ,将其划分为若干整块和两块散块:
在这里插入图片描述

那么,答案一定为蓝色区间的众数或者红色区间出现过的数字。

考虑预处理出任意 i i i j j j 块间的众数,来快速求出蓝色区间的众数,预处理时间复杂度 O ( K 2 N ) O(K^2N) O(K2N)

// cnt[i][j][x] : x 在 i 到 j 块间出现的次数
// num[i][j] : i 到 j 块间的众数for(int i=1; i<=n; i++){int B = ceil((1.0 * i) / (1.0 * len));belong[i] = B;cnt[B][B][a[i]] ++ ;}for(int i=1; i<=n; i++){int B = ceil((1.0 * i) / (1.0 * len));if(cnt[B][B][a[i]] == cnt[B][B][num[B][B]] && a[i] < num[B][B]) num[B][B] = a[i];if(cnt[B][B][a[i]] > cnt[B][B][num[B][B]]) num[B][B] = a[i];}for(int i=1; i<=k; i++)for(int j=i+1; j<=k; j++)for(int x=1; x<=tot; x++){cnt[i][j][x] = cnt[i][j-1][x] + cnt[j][j][x];if(cnt[i][j][x] == cnt[i][j][num[i][j]] && x < num[i][j]) num[i][j] = x;if(cnt[i][j][x] > cnt[i][j][num[i][j]]) num[i][j] = x;}

对于每次询问,我们 O ( 1 ) O(1) O(1) 求蓝色区间的众数, O ( N K ) O(\frac N K) O(KN) 枚举红色区间的数,计算 [ l , r ] [l,r] [l,r] 的众数,询问时间复杂度 O ( M N K ) O(M \frac N K) O(MKN)

总时间复杂度 O ( N K 2 + M N K ) O(NK^2+M \frac N K) O(NK2+MKN),如果我们认为 N , M N,M N,M 同构,那么 K = N 1 3 K=N^{\frac 1 3} K=N31 时复杂度最低。

代码


http://www.yayakq.cn/news/881210/

相关文章:

  • 做暧暖ox网站腾讯云提供网站建设吗
  • 自适应网站导航是怎么做的做网站发布网
  • 成都制作网站的公司简介江苏城乡建设职业学院网站
  • 网站开发 放大图片微信公众平台注册不了
  • 网站开发h5页面网站集约化建设建设成效
  • 太原网站建设技术托管点石家装
  • 做网站能赚钱吗流量卡代理平台有哪些
  • 北京网站制作设计哪个公司好郴州刚刚发生的事
  • 网站建设方案 doc网站建设新报价图片欣赏
  • 网站代码怎么写国内比较好的saas平台
  • 岳阳市规划局建设工程公示网站手机制作网站app
  • 备案成功的网站关于做ppt的网站有哪些内容吗
  • 网站域名包括哪些关于网站建设的奖项名称
  • 做饮食找工作哪个网站好吉首做网站
  • 昆山 网站运营网站制作公司一站式服务
  • 做网站定金要多少网红营销
  • 请人帮忙做淘宝网站多少钱下载互联网
  • 飞言情做最好的言情网站wordpress如何让一个图片跟随悬浮
  • 58网站开发要多少钱上海易雅达网站建设公司怎么样
  • 网站群建设的优点深圳建筑行业招聘网
  • 济南网站建设排名企业宣传册模板文案
  • 网站专题方案如何对网站ftp进行上传
  • 网站设计研究方法微信开发小程序开发网站建设
  • 国内餐饮类网站欣赏江西冰溪建设集团网站
  • 网站关键词密这么稀释简洁网站倒计时代码
  • 网站推广软件污上海公关公司排名
  • asp网站设为首页代码用qq号码可以做网站吗
  • 做宣传海报网站做外围网站犯法吗
  • 烟台网站建设合肥公司网站设计一般包括
  • 北京市建设工程造价管理处 网站wordpress 获取子类