首页 > 其他分享 >Solution Set - CDQ分治

Solution Set - CDQ分治

时间:2023-05-18 22:33:57浏览次数:32  
标签:le 洛谷 分治 Solution 给定 Set CDQ 序列

A[洛谷P2163].给定平面上若干个点,多次询问给定矩形内的点数。
B[洛谷P3810].给定若干个三元组,对所有\(k\),求这样三元组的个数:恰有\(k\)个三元组,满足其每个分量都不超过它的相应分量。
C[洛谷P3157].给定一个序列,从中依次删去某些元素,求每次删除前逆序对数目。
D[CF762E/CF1045G].给定若干三元组\((x_i,r_i,f_i)\),求满足\(|x_i-x_j|\le \min(r_i,r_j)\)且\(|f_i-f_j|\le k\)的无序对\((i,j)\)数目。
E[CF641E].维护一个带时间戳的multiset,要求在某时刻插入/删除某个数,询问某个数的个数。
F[洛谷P4390].维护一个平面,单点修改,矩形查询。
G[洛谷P4093].给定一个序列,可能发生若干种修改中的至多一种,修改形如将某个数改为某个值。求在所有情况下都是单调不减子序列的最长子序列。
H[洛谷P2487].给定两个序列,求一个最长的下标序列,使得其在两个序列都单调递减。在所有这样的序列中等概率取一个,求包含某个位置的概率。
I[洛谷P4027].给定两种金券在\(n\)天内的单价及初始钱数,每一天可以将所有的钱兑换两种金券(两种金券的比例给定),或者卖掉所有金券。求\(n\)天后的最大钱数。
J[洛谷P3206].给定一棵树,边有权,给定若干次修改某条边的权,求每次修改后的最小生成树边权和。
K[CF848C].给定一个序列,单点修改,询问某段区间中所有数最后一次出现位置减去第一次出现位置的值的和。


A离线询问,用二维前缀和转化,然后按照横坐标顺序加点和处理询问。
B是CDQ分治模板,用树状数组维护。
C将时间看作一位,还是模板。也可以用分块。
D先按照\(r\)排序,然后用双指针处理\(x\),用树状数组处理\(f\)。
E直接用CDQ分治,开桶统计即可。
F用CDQ分治,中间使用A题思路。
G考虑DP,记录每个位置原始值\(a_i\),最小可能值\(b_i\),最大可能值\(c_i\),则\(dp_i=max\{dp_j\}+1\),其中\(j \le i,a_j \le b_i,c_j \le a_i\),用CDQ分治优化转移即可。
H和G类似。
I列出转移方程(很容易)后斜率优化,也用CDQ分治维护。
J对操作序列CDQ分治,处理每段序列时,将不会影响的边先处理——加入某些必选入最小生成树的边,然后缩点。用一个按秩合并的可撤销并查集维护。
K树套树,转化为对满足\(l \le i \le r,nxt_i \le r\)的所有\(i\)求\(nxt_i - i\)之和。

标签:le,洛谷,分治,Solution,给定,Set,CDQ,序列
From: https://www.cnblogs.com/by-chance/p/17413491.html

相关文章

  • setInterval 如何立即执行一次
    最近有点闲暇时间了,我就想优化下代码。如下,对于这段代码,本意是先执行一次,然后隔一段时间后再执行一次this.getData(token,this.replaceChar(fitnames)||'',this.replaceChar(devices)||'',this.replaceChar(totalFitNames)||'');consttimer=setInterval((......
  • docker 安装nginx 主机可以访问,但是外网访问不了--set:nu
    在外网确实访问不了:第一步:查看端口是否打开ss  -auput|grep":80"第二:查看防火墙是否打开firewall -cmd --state第三:是否缺少内核的转发vim/etc/sysctl.conf添加 net.ipv4.ip_forward=1查看配置是否生效 ......
  • 37、list与Set区别
    (1)List简介实际上有两种List:一种是基本的ArrayList,其优点在于随机访问元素,另一种是LinkedList,它并不是为快速随机访问设计的,而是快速的插入或删除。ArrayList:由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。LinkedList:对顺序访问进行了......
  • 41、说一下 HashSet 的实现原理?
    HashSet实际上是一个HashMap实例,数据存储结构都是数组+链表。HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value都是一个统一的对象PRESENT。privatestaticfinalObjectPRESENT=newObject();HashSet中add方法调用的是底层HashMap中的put方法,put......
  • 40、set有哪些实现类?
    (1)HashSetHashSet是set接口的实现类,set下面最主要的实现类就是HashSet(也就是用的最多的),此外还有LinkedHashSet和TreeSet。HashSet是无序的、不可重复的。通过对象的hashCode和equals方法保证对象的唯一性。HashSet内部的存储结构是哈希表,是线程不安全的。(2)TreeSetTreeSet对元素......
  • Maven - settings.xml配置
      settings.xml<?xmlversion="1.0"encoding="UTF-8"?><!--LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTICEfiledistributedwiththisworkforadditional......
  • redis中set与setnx区别
    转自:https://www.zhangshilong.cn/work/320344.htmlRedis命令SETNX的使用(包含Java分布式锁实现)可以参考Redis官网对SETNX命令的介绍:https://redis.io/commands/setnxSETNX命令简介命令格式SETNXkeyvalue将key的值设为value,当且仅当key不存在。若给定的key已经存......
  • HashSet 的基本使用
    ​ HashSet是Java中的集合类之一,它实现了Set接口,并基于哈希表实现。它不允许集合中存在重复元素,因此可以用来存储一组唯一的对象。在HashSet中,每个元素都对应着一个唯一的键值,这个键值是通过元素的hashCode()方法计算出来的。具体来说,HashSet通过将元素的hashCode()......
  • HashSet 的基本使用
    ​ HashSet是Java中的集合类之一,它实现了Set接口,并基于哈希表实现。它不允许集合中存在重复元素,因此可以用来存储一组唯一的对象。在HashSet中,每个元素都对应着一个唯一的键值,这个键值是通过元素的hashCode()方法计算出来的。具体来说,HashSet通过将元素的hashCode()......
  • Nacos 启动出现No DataSource set
     出现此问题需检查下:配置信息是否已启用,默认nacos使用内置数据库,如果要使用外置数据库时需要更改配置文件: application.properties 更新如下4个信息,设置为要使用的外部数据库信息 启动nacos如果还是出现连接数据库失败提示:在保障外部数据库可用,且配置数据连接信息......