题意: 一个凸多边形和$m$个光源,问最少选择几个光源使得多边形所有边都被照亮 思路: 对于每个光源,处理出能照到的边,即为区间完全覆盖问题,但是区间是环形的,枚举起点处理 #include <bits/stdc++.h> using namespace std; typedef long long ...
分类:
其他好文 时间:
2020-12-10 11:38:18
阅读次数:
15
前置知识 二叉树 正篇 首先先来一个问题:给出一个长度为n的序列和m个操作,操作分别是: 1. 单点修改 2. 单点查询 3. 区间加减 4. 区间查询和 "模板题出处" 最简单的做法就是在数组上暴力for, 这样的话单点修改和查询的时间复杂度是$O(1)$, 区间加减和区间查询的复杂度是$O(n) ...
分类:
其他好文 时间:
2020-04-09 00:48:47
阅读次数:
63
# 题意N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。 # 题解1.按照左端点从小到大排序2.从前往后依次枚举每个区间,在所有能覆盖的start区间中选择右端点最大的区间,然后将start更新成右端点的最 ...
分类:
其他好文 时间:
2020-03-22 01:36:32
阅读次数:
73
本题难点在正确性证明。 令 $f_i$ 表示 $[1,i]$ 被全部覆盖的最小花费。答案为 $f_m$。 首先发现,添加一个区间 $[0,0]$ 不会影响答案。所以 $f_i$ 的初值可以设为 $i$。(这个很重要,没了就不对了!) 转移,如果 $i$ 已经被某个初始区间完全覆盖了,那么可以从 $f ...
分类:
其他好文 时间:
2019-11-23 20:08:50
阅读次数:
111
数据结构—分块 分块是一种非常好理解、非常好写的数据结构。与其说分块是数据结构,倒不如说它是一种“算法”,甚至是一种“思想”。我个人认为,分块的思想和分治法很像。它们的基本实现方式都可以概括成:将一个大问题拆成若干小问题,最后求解完小问题之后将答案汇总得出大问题的答案。 分块的基本实现是这样的:对于 ...
分类:
其他好文 时间:
2019-08-29 23:31:08
阅读次数:
120
一、区间完全覆盖问题 题目 给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖。 解析 先将所有线段按起点从小到大排序。排完序后,枚举每一个线段(被其它线段包含的线段不用考虑,因为很明显包含它的线段比它更优),将其作为最左端的线段, 再 ...
分类:
其他好文 时间:
2019-07-08 13:23:14
阅读次数:
172
题意:给你一颗树,每个节点有有一个权值,每次询问从x到y的最短路上权值在c到d之间的所有的点的权值和是多少。 思路:肯定要用树剖,因为询问c到d之间这种操作树上倍增很难做,但是用其它数据结构可以比较好的查询。我们可以用线段树来进行这种操作。每次询问一个区间时,如果当前区间被查询区间完全覆盖,并且区间 ...
分类:
其他好文 时间:
2019-04-03 22:05:36
阅读次数:
173
我们对于线段树的区间修改你可以用一个最傻的办法循环进行单点修改(时间复杂度太高十分麻瓜)所以,我们要用一个聪明的做法延迟标记(LAZY) 在限度拿书的“区间查询”指令中,每当遇到被询问区间[l,r]完全覆盖的节点时,可以立即把该节点上存储的信息作为候选答案返回。已经有大佬证明,被询问区间[l,r]在 ...
分类:
其他好文 时间:
2019-01-20 13:45:10
阅读次数:
196
一、区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖。 样例:一个长度为8的区间,可选的线段有[2,6],[1,4],[3,6],[3,7],[6,8],[2,4],[3,5]。 求解过程: 1、将每一条线 ...
分类:
其他好文 时间:
2018-10-21 14:23:44
阅读次数:
234
//线段树 //每个节点代表一段区间 除叶节点外均有左右子节点 //左子节点:[L,(L+R)/2] 右子节点:[(L+R)/2+1,R] 叶节点长度为1 #include #include #include #include #include #include using namespace st... ...
分类:
其他好文 时间:
2018-07-08 20:15:26
阅读次数:
173