ICode9

精准搜索请尝试: 精确搜索
  • [HEOI2016/TJOI2016]序列(cdq优化dp)2021-10-07 23:34:41

    给定一个序列 \(a\) 和若干对整数 \(x,y\),表示在一次变化中, \(a_x \gets y\)。这次变化结束后,\(a\)复原。试选出一个子序列,使其在任意一次变化中都满足单调不降。 LIS 问题作为 dp 入门题十分熟悉,即 \(f_i=\max\{f_j\}+1\),要求 \(j\) 满足 \(j<i,a_j\le a_i\)。这道题实际上是增加

  • 关于偏序问题2021-10-04 22:34:35

    二维偏序问题,可以用排序+树状数组实现 多维呢,我们发现有bitset压位(not paratical) kdt(利用分治,常数极大) 二进制分组主席树 区间修改主席树(空间极大) 树套树(空间极大),又分为多种树套多种树 cdq分治,常数极小,只能离线 整体二分,在特殊情况下只能用这个,离线 定期重构,同上,在批量修改类问题

  • cdq实现树状数组2021-09-16 20:05:28

    题目链接 思路 毒瘤的一批的东西 也算是cdq的一个应用吧 代码 #include<bits/stdc++.h> #define fi first #define se second #define debug cout<<"I AM HERE"<<endl; using namespace std; typedef long long ll; const int maxn=2e6+5,inf=0x3f3f3f3f,mod=1e9+7; const

  • 【瞎口胡】CDQ 分治2021-09-11 19:32:47

    本篇内容将持续更新。 CDQ 分治是一种离线的分治算法。其主要思想是,对于一个规模为 \(n\) 的问题,首先计算 \([1,\left \lfloor \dfrac n2 \right \rfloor],[\left \lfloor \dfrac n2 \right \rfloor+1,n]\) 这两个子问题内部的答案,再计算这两个子问题相互贡献的答案。 一个比较经

  • cdq 分治、整体二分、二进制分组以及高维数点问题总结2021-08-30 22:03:08

    小螺号呀滴滴地吹,ycx 呀 xjb 写。 数据结构非经典算法 cdq 分治 传统分治算法是当前区间分成两个区间递归下去各解决各自的。cdq 分治是不仅把两部分的子问题都解决了,还让左部分对右部分进行贡献(右对左也行?)。如果左对右贡献的时间复杂度仅与当前处理区间长度 \(n\) 有关,并且是其 p

  • [学习笔记] 浅析cdq分治2021-08-29 13:34:26

    正如其名, cdq分治是一种分治算法, 通常用于解决受限制的离线贡献问题 这个算法通过分治, 不断地将要处理的区间分成左区间和右区间, 然后统计这两个区间之间的互相贡献 在这个过程中, 我们需要保证这两个区间的东西确实是能互相产生贡献的两类东西 如何做到呢? 许多时候在cdq前排

  • CDQ小结2021-08-11 09:32:42

    其实就是扩展归并排序。 适用于处理偏序问题。 算法 对于三维或以上偏序,我们采用CDQ分治。 第一个思想是排序。 先使第一维有序,然后将区间分成两半后两边各自按第二维排序,可以保证左一半的第一维小于右一半。 然后就可以对左右做类似归并排序的事情,用左边更新右边的答案。 更新过

  • P4169 [Violet]天使玩偶2021-08-10 22:33:19

    两种操作:1.加入点(x,y); 2.查询距(x,y)最近的点的曼哈顿距离距离 思路:绝对值拆开通常可以取max,不过这里直接分类讨论4种情况,我们发现如果找\(i\)点左下点\(j\)\((x_j<=x_i且y_j<=y_i)\)到\(i\)的最小距离:\(x_i-x_j+y_i-y_j=(x_i+y_i)-(x_j+y_j)\) 所以使距离最小即让\(x_j+y_j

  • BZOJ4553 序列2021-08-08 10:04:05

    BZOJ4553 序列 题目链接:序列 - 黑暗爆炸 4553 ​ 显然,这是一道dp题。我们首先需要考虑什么样的情况才能使得任意一种变化中,一个子序列能恒为不降序列。设我们有一个子序列 \(S\)。考虑其中相邻的两个点 \(i,j\)。由于我们必须满足所有变化中 \(v_j>=v_i\),同时,题意告诉我们,每种变

  • CDQ分治(cdq orz2021-08-03 12:02:24

    没想到有一天我这样的菜鸡也会学CDQ分治 绝大部分内容来自【洛谷日报#115】CDQ分治和整体二分,如有雷同,不是巧合 CDQ分治是一种基于分治思想的离线算法,能吊打在线解法 前置芝士:分治 经典例子:归并排序(逆序对) 众所周知,归并排序是每次将区间[l,r]拆分成[l,mid],[mid+1,r],然后再\(O

  • 题解[CF1045G]2021-08-02 17:32:09

    题目链接 提供一个稍微不同的 cdq 分治写法,不依赖 \(K\) 的大小。 首先一个限制为 \(q\) 的值差距不大于 \(K\) 。 于是可以对 q 排完序后对每个下标 i 查 q 在 \(q_i+K\) 内的贡献减去 q 在 \(q_i-K-1\) 内的贡献, 这一维便可直接用 \(cdq\) 在外层解决。 而后是“能相互看到”的

  • CDQ 分治做题记录2021-07-25 20:31:07

    P2345 [USACO04OPEN]MooFest G 按 \(v\) 从小到大排序,这样可以转化为 \(v_j\times|x_i-x_j|(i<j)\)。 考虑如何计算前一段区间对后一段区间的贡献。设前一段当前扫到 \(i\),后一段当前扫到 \(j\)。 如果 \(x_i\leq x_j\),则贡献为 \(\sum\limits_{k=j}^r x_k-x_i\);如果 \(x_i>x_j\),

  • JZOJ 3304. Theresa与数据结构2021-07-10 16:04:19

    \(\text{Problem}\) 标准四维偏序 带修改(加和删除)和询问的三维空间正方体内部(包括边上)的点的数目 \(\text{Analysis}\) 打法很多,\(\text{cdq}\) 套 \(\text{cdq}\) 加上树状数组处理或者 \(\text{cdq}\) 套树套树(如树状数组套线段树)等方法都可以 \(\text{K-D tree}\) 的 \(O(n^{1.

  • 万字长文·三维偏序/cdq分治2021-06-16 20:32:57

    万字长文·三维偏序/cdq分治 cdq分治 静态区间问题 cdq分治是一种解决区间统计问题的常用方法 点分治相当于吧cdq分治挪到树上 cdq分治即把一个序列分为两部分 区间统计的量分为跨中点的 左边的 右边的 (一下所说统计均指在区间中点) 先递归处理左边的和右边的 然后再寻找某种\(O(n)

  • 点分治&cdq分治 总结2021-06-14 09:35:23

    洛谷题单 点分治 前置芝士 树的重心 树分治 例题略解 P3806 【模板】点分治1 板子题,先暴力找到整棵树的重心,然后先求出重心到各点的距离,进而算出他所在树的各个节点的距离,在对应的ans数组加一;然后再接着扫子节点,并把儿子节点子树的贡献减去,最后回答询问。 然后我们愉快的\(TLE60p

  • 题解-P38102021-06-13 15:34:51

    P3810 【模板】三维偏序(陌上花开) 更好的阅读体验1 更好的阅读体验2 前置算法 树状数组求逆序对 归并排序求逆序对 解题之前,让我们来看一看弱化版本 \(\to\) 二维偏序 题意 给定两个长度为数组 \(a_1,a_2,\dots,a_n\),\(b_1,b_2,\dots,b_n\) 求对于每一个 \(i\),\(a_j\le a_i\)

  • 6.9赛后总结2021-06-09 22:36:11

    6.9模拟赛赛后总结 赛时历程 大约八点看完题目感到,啥也不会,好像T3的暴力最可做。 打着打着发现第一个性质分也好做,记录个las然后小小讨论一下就好。 对拍很成功,已经九点多。 其它啥也不会怎么搞,T1想到了一个\(O(y-x)\)(y-x<=1e9)的伞兵DP,估计也骗不了分。 慢慢的,到点了。 赛后发

  • cdq分治2021-05-24 10:33:17

    【算法简介】 CDQ 分治是解决一类「修改独立,询问可离线」的问题。 思路是对时间分治,用左边的修改处理右边的询问。可以发现这种分治法对于可离线的数据结构问题比较有效,只要修改独立即可,配合一些「时光倒流」的操作可以完成撤销等复杂操作。 代价仅多一层 log,而且常数较小。  

  • P2345 [USACO04OPEN]MooFest G cdq分治 树状数组2021-05-23 23:02:30

    题意:横坐标上若干点,坐标为X[i],每个点有个权值val,问你所有两两 m a x ( v a

  • 学 Win32 汇编[25] - 符号扩展指令: CBW、CWDE、CDQ、CWD2021-04-30 12:06:47

    学 Win32 汇编[25] - 符号扩展指令: CBW、CWDE、CDQ、CWD CBW、CWDE、CDQ、CWD: 扩展指令 ;CBW(Convert Byte to Word): 将 AL 扩展为 AX ;CWDE(Convert Word to Extended Double): 将 AX 扩展为 EAX ;CDQ(Convert Doubleword to Quadword): 将 EAX 扩展为 6

  • [NOI2014]购票(斜率优化dp+CDQ分治+点分治)2021-04-06 09:04:53

    题目:洛谷P2305、LOJ#2249 题目描述: 给定一棵\(n\)个点的树,根为\(1\),树上每条边的长度已知,从每个点\(x\)到根的方法为:选择一个祖先\(a\),到达它需要消耗的代价为\(dis_{x,a} \cdot p_{x} + q_{x}\),然后依次往上,直到到达根,其中\(dis_{x,y}\)表示的是树上两点\(x,y\)之间的距离,\(p,q\)

  • JZOJ 5608 Subset(cdq 分治)2021-03-19 20:31:03

    刚看到这道题的时候觉得特别难,里面的限制条件太恶心了,不好做 题面 给出三个 1 1 1 到 n n n 的排列

  • 题解-P4169 [Violet]天使玩偶/SJY摆棋子2021-03-09 20:35:56

    \(\Large\natural\) P4169 [Violet]天使玩偶/SJY摆棋子\ 原题链接 题意 由于特殊原因,加了个题意简述 一开始有 \(n\) 个关键点 \((a,b)\)。然后有 \(T\) 个操作: 多出一个关键点 \((a,b)\)。 询问如果我站在 \((x,y)\),最近的关键点距离我多远。(这里的距离是曼哈顿距离) \(n,T\le 3

  • 洛谷 P3810 【模板】三维偏序(陌上花开) 题解2021-01-06 12:01:30

    一、题目: 洛谷原题 二、思路: 很明显这是一道CDQ分治的模板题。在这里简单讲一下CDQ分治的大概思路。 CDQ分治的目的是将动态的修改、查询离线,从而转化为静态的操作。具体来说是这样的: 假设\(a\)是一个修改、查询的序列。定义\(CDQ(l,r)\)为处理\(a[l\sim r]\)的函数。 然后我们发

  • [学习笔记]多维偏序2020-12-30 22:03:53

    多维偏序 https://www.cnblogs.com/Miracevin/p/9426812.html一般情况下,我们比较一个数大小,就是ai>aj即可, 而在上升子序列中,当i>j并且ai>aj的时候,才可以认为i这位的数大于j这位的数。 这就是一个二维偏序。   类似的,有n个数,每个数m个属性,一个数比另一个数大,当且仅当这个数的所有

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有