ICode9

精准搜索请尝试: 精确搜索
  • cdq分治模板2020-12-19 23:03:50

    可求解多维偏序问题 三维偏序(陌上花开) 有 nn 个元素,第 ii 个元素有 \(a_i\)、\(b_i\) 、\(c_i\) 三个属性,设 \(f(i)\)表示满足\(a_j \leq a_i\)且 \(b_j \leq b_i\) 且 \(c_j \leq c_i\)的 j 的数量。 对于 \(d \in [0, n)\),求 f(i) = d 的数量 输入格式 第一行两个整数 nn、kk,分

  • 平面最近点对2020-12-19 23:01:19

    cdq分治可以很好地处理平面点对间具有某种性质的值或数量,最近点对也不例外。 参考OI Wiki 先对x排序,cdq返回点集内部最近点对的距离记为mindis。 考虑如何合并左右区间,对于处于点集A的点a和B的点b,显然 \(|a.x-b.x|<=mindis\) 设a,b属于C,找到C后,对于点p,k属于C,显然也要满足 \(|p.y-k.

  • AcWing2847 老C的任务(CDQ分治)2020-12-12 16:34:45

    计算二维前缀和,更新一下归并的板子 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=5e5+10; struct node{ int x,y,z,p,id,sign; ll sum; bool operator <(const node & t)const{ if(x!=t.x) return x<

  • 模拟赛 26 题解2020-11-25 20:05:03

    树形dp+构造+期望+停时定理+cdq分治 A.路哥 首先我们可以求出所有权值为 \(k\) 的方案数总和,再除以 \(2^{n-1}\) 就是总期望。 可以树形dp,设 \(f[i][j]\) 表示当前考虑到 \(i\) 点,所拿的总和为 \(j\) 的方案数。 这样设状态,是按照 \(dfs\) 序进行推进的,所以每次处理儿子的时候要继

  • 初窥CDQ分治2020-11-11 11:02:36

    现在还不是很懂cdq分治是啥。 我对它的理解大概就是一种分治方法 / 思想。 这个方法有一些限制:[区间L] < [区间R](需要对整个数组sort一遍) 这个方法可以做到:用来解决各种区间段转移问题[x->y(x<y)]的,比如,求逆序对数。(本质上就是计算左区间对右区间的贡献)   拓展:将修改转化为左区间

  • P4169-CDQ分治/K-D tree(三维偏序)-天使玩偶2020-10-06 08:31:24

    P4169-CDQ分治/K-D tree(三维偏序)-天使玩偶 这是一篇两种做法都有的题解 题外话 我写吐了…… 本着不看题解的原则,没写(不会)K-D tree,就写了个cdq分治的做法。下面是我的写题步骤: 想着树状数组维护不了区间最值,于是写了线段树,因为一个**的错误调了几个小时; cdq只写了两个方向。显

  • [CDQ分治]三维偏序2020-05-24 11:55:28

    题目链接 Code #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; #define RG register int #define LL long long template<typename elemType> inline void Read(elemType &T){ el

  • CF1045G AI robots2020-05-15 17:54:15

    \(CDQ\)分治的妙题。 考虑按视野从大到小排序,那右边的可以看见左边的话左边一定看得见右边的,直接\(CDQ\)就行了。对于这种\([x-K,x+K]\)的区间维护可以在统计的时候差分也可以直接在更新的时候差分。本代码使用后者。 #include <cstdio> #include <cstring> #include <algorithm>

  • 【题解】P3374 【模板】树状数组 1 - $CDQ$ - 二维偏序2020-05-05 21:05:03

    P3374 【模板】树状数组 1 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上 \(x\) 求出某区间每一个数的和。 前言 感觉最近学东西真的太快了...挺

  • cdq分治2020-04-23 17:54:34

    【cdq分治】 数据结构问题: 维护某种数据结构,使其对一系列操作(查询/修改)一次快速做出响应。 “时间轴”:操作的顺序 如果需要实时进行响应,称为【在线算法】,在查询时立即回答,然后再继续进行下一次操作;否则需要预先知晓整个操作序列,经过一系列计算,批量回答所有查询,称为【离线算法】

  • P3810 陌上花开 (CDQ分治)2020-04-20 21:55:17

    CDQ分治付出了log的时间代价来使静态的三维偏序问题转化成了二位偏序问题后用用树状数组维护 所谓三位偏序就是a<=a1,b<=b1,c<=c1这种情况,我们将第一维当作时间轴,之后排序来树状数组 这道题是模板题 #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib

  • CF1324D Pair of Topics2020-03-13 12:55:03

    好像题解里都是树状数组(起码我翻到的是 说一种cdq分治的(这应该算是cdq分治了 用cdq比较简单,所以可以作为一个练手题 cdq分治其实是一种模糊的思想,处理\([l,r]\)区间内,有多少\((i,j)\)满足某种条件 这里假设\(i<j\),我们取一个\(mid=\frac{i+j}{2}\) \(i<j\leq mid\),问题转换到区

  • KD-tree2020-03-05 14:58:03

    题目都太难了 我心态有点爆炸 来点简单的东西愉悦一下身心。 打代码真的是一件令人欢快的事情。 KD-tree这个数据结构以前学过好多遍了 以前我还学会过 但是好像一直没写过到现在也就忘了。。 趁这个晚上赶紧补一发。 首先是 nth_element函数 所需头文件 algorithm 使用格式nth_e

  • CDQ分治-陌上花开(附典型错误及原因)2020-01-31 17:01:18

    CDQ分治-陌上花开 题目大意 对于给遗传给定的序列: \[ (x,y,z)_1, (x,y,z)_2, (x,y,z)_3, \cdots, (x,y,z)_n \] 求: \[ \sum_{x_i < x_j,~y_i < y_j,~z_i<z_j,~i ≠j}1 \] 题解: CDQ分治,顾名思义就是要进行分治,但是它可以解决比普通分治更多的问题。CDQ分治的整体思想,是: 对于一个需

  • 整理2020-01-22 22:51:47

    学习计划 DP 计数DP 概率DP 插头DP 数据结构 动态点分治 李超线段树 后缀平衡树 图论 A* 欧拉图 数学 多项式 博弈论 生成函数 概率期望 线性代数 组合数学 莫比乌斯反演 字符串 回文自动机 计算几何 半平面交 三角剖分 杂项 整体二分 舞蹈链 文章 期望 高斯约旦 类欧几里得算法 1

  • CDQ分治2020-01-22 20:54:46

    \(code :\) void cdq(int l,int r) { if(l==r) return; int mid=(l+r)>>1; cdq(l,mid),cdq(mid+1,r); sort(q+l,q+mid+1,cmp2); sort(q+mid+1,q+r+1,cmp2); int pos=l; for(int i=mid+1;i<=r;++i) { while(q[i].b>=q[p

  • Day6 - K - 陌上花开 HYSBZ - 32622020-01-18 13:00:55

    有n朵花,每朵花有三个属性:花形(s)、颜色(c)、气味(m),用三个整数表示。 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。 定义一朵花A比另一朵花B要美丽,当且仅Sa>=Sb,Ca>=Cb,Ma>=Mb。 显然,两朵花可能有同样的属性。需要统计出评出每个等级的花的数量。   I

  • [BZOJ3295][CQOI2011]动态逆序对(cdq分治+树状数组)2020-01-15 14:08:07

    Solution 此题可以十分简单粗暴地套用树状数组套主席树的模板。 或者:cdq分治。 此题中,原先给出一个数列,之后会删除一些数。但是,呃,删除操作好像有点儿麻烦。反正允许离线,那就当作是初始给出一些数,先把这些数加入序列,之后会再添加一些数。也就是全部反过来算。 可以把每次的答案分成

  • cdq分治学习笔记(非教学向)2019-12-27 22:57:00

    cdq分治学习笔记(非教学向) (非完全版,待更) cdq分治是什么? cdq分治就是将一个大问题分解成两个规模是它一半的子问题,和两个子问题之间的答案统计的算法,复杂度$ nklogn $ cdq分治怎么写? 详见例题代码 cdq分治可以干什么? 在我目前的理解中,cdq分治是用来解决一些和偏序有关的题

  • Noi2016十连测第二场-黑暗 (二项式定理/斯特林数+CDQ+NTT)2019-12-27 13:02:08

    Noi2016十连测第二场-黑暗 (二项式定理/斯特林数+CDQ+NTT) 题意: n 个点的无向图,每条边都可能存在,一个图的权值是连通块个数的 m 次方,求所有可能的图的权值和。 考虑\(dp[i][j]\)表示\(j\)个点,权值为\(i\)次方 我们首先要预处理出\(n\)个点无向联通图的数量\(g[i]\),模板题:BZOJ-3456

  • [Violet]天使玩偶/SJY摆棋子 [cdq分治]2019-12-06 19:00:08

    P4169 [Violet]天使玩偶/SJY摆棋子 求离 \((x,y)\) 最近点的距离 距离的定义是 \(|x1-x2|+|y1-y2|\) 直接cdq 4次 考虑左上右上左下右下就可以了…略微卡常数… #include <bits/stdc++.h> #define ls(x) ch[x][0] #define rs(x) ch[x][1] #define rep(i , j , k) for(int i = j ;

  • 三维偏序——cdq分治2019-10-27 14:53:35

    题目:   有 n 个元素,第 i 个元素有 ai 、bi 、ci 三个属性,设 f(i) 表示满足 aj ≤ ai 且 bj ≤ bi 且 cj ≤ ci 的 j 的数量。对于 d∈[0,n),求 f(i)=d  的 i 的数量。 题解:   可以对第一维a进行排序(O(nlogn)),然后对第二维进行归并排序(O(nlogn)),在归并时对于 bi

  • cdq分治学习2019-10-06 19:02:57

    经典问题:三维偏序 题:https://www.luogu.org/problem/P3810 一般处理:先按照自己定义的第一维排好序,那么在接下来的俩维判断中,我们就可以消除第一维造成的影响,接着用以前学过的分治排序法来处理第二维,以第二维作为排序对象,对于分治的[l,midd]和[midd+1,r]这俩个区间 对于区间 [m+1,

  • CF12D Ball(cdq)2019-09-12 22:53:46

    同样鸽了很久的三维偏序,不同点在于保证没有重复的三元组,但是要求的是严格大于。 基本思路跟带等号的cdq一模一样,但是要极度注意一个细节 比如有两个三元组(1 1 1)和(1 2 3),在三个元素都严格大于的情况下,显然第二个三元组不能大于第一个三元组 这意味着在对初始序列执行第一次排序

  • [考试反思]0908NOIP模拟测试40:颠簸2019-09-08 16:51:09

    怎么说呢?好像也没什么可说的。 把我的优缺点都表现出来了的一场考试。 T3是个小的dp想出来就能打,打出来就能A。我上来过了一遍题目觉得T3最简单(然而也并不是很简单) 然后就开始打,交,其实已经A了但还是不放心地调了半天,拿到一个首杀。 然后滚回T1交暴力,再滚去T2交暴力,结束!   什么

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

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

ICode9版权所有