随笔分类 -  NOIP-分治-CDQ分治

摘要:题意 有、复杂,自己上网搜 思路 $(x,y)$ 表示从$x$到$y$联通的时间长度。 那么查询操作相当于二维平面上的单点查询。 对于每一个$i$,维护一个最左能到达的$lm$,和最右能到达的$rm$。 那么对于每一个更新操作,相当于对左上角为$(lm,i)$,右下角为$(i,rm)$的矩形做修改。 阅读全文
posted @ 2019-08-22 17:50 Ilverene 阅读(275) 评论(0) 推荐(0)
摘要:题意 有一个数列,每个元素均有一个完成耗时$t_i$与完成耗费$f_i$,每个元素的耗费等于其完成时刻乘以完成耗费。可以将这些元素分为任意组,每一组的元素完成时刻一样。每一组都会有一个固定的额外时间耗费$s$。数据范围$3 10^5$。 思路 首先推出状态转移方程$dp[i]=min(dp[j]+s 阅读全文
posted @ 2019-08-19 20:14 Ilverene 阅读(138) 评论(0) 推荐(0)
摘要:题意 给定一个数列,求$\sum^n_{i=1}\sum^n_{j=i}(j i+1)min(a_i,...,a_j)max(a_i,...,a_j)$。 思路 采用CDQ分治解决问题。 对于当前的区间$[l,r]$,如果为点直接更新答案。 否则可以分成左右区间$[l,mid],[mid+1,r]$ 阅读全文
posted @ 2019-08-19 13:02 Ilverene 阅读(144) 评论(0) 推荐(0)
摘要:简介 $CDQ$分治是由国家队选手陈丹琦在$08$年提出的一种基于时间的离线分治算法。因而得名。 可以在某些问题中取代诸如$k d tree$的高级数据结构。 前置知识 归并排序 实现思路 CDQ分治的大体思路如下: 1. 统计左区间答案。 2. 统计右区间答案。 3. 统计左区间对右区间产生的影响 阅读全文
posted @ 2019-08-18 18:50 Ilverene 阅读(557) 评论(0) 推荐(0)
摘要:题意 三维偏序模板题。 思路 第一维排序,第二维CDQ分治,第三维树状数组。 代码 cpp include using namespace std; namespace StandardIO { template inline void read (T &x) { x=0;T f=1;char c= 阅读全文
posted @ 2019-08-16 19:09 Ilverene 阅读(117) 评论(0) 推荐(0)