题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=2731 (luogu)https://www.luogu.org/problemnew/show/P3219 题解: 先讲一种复杂度明显不对但是本题数据跑得很快的做法: 先按底边\(y\)坐标排序,从下往上扫,每扫到一行链表维护当前的所有区间,另外再开个数组记录每个横坐标被覆盖的次数.复杂度\(O(\sum d_i)\) 然后ckw巨佬的做法: 按底边\(y\)坐标排序,找…
题面 二维平面中,给定 \(N\) 个等腰直角三角形(每个三角形的两条直角边分别平行于坐标轴,斜边从左上到右下).我们用三个非负整数 \((x, y, d)\) 来描述这样一个三角形,三角形三个顶点的坐标分别为 \((x, y), (x + d, y)\) 和 \((x, y + d)\) .要求计算这 \(N\) 个三角形所覆盖的总面积.例如,下图有 \(3\) 个三角形,覆盖的总面积为 11.0. 输入格式: 输入文件第一行为一个正整数N,表示三角形的个数. 接下来的 \(N\) 行每行有用…
[题解]三角形 [P1222] / 三角形覆盖问题 [HNOI2012] [P3219] 传送门: 三角形 \(\text{[P1222]}\) 三角形覆盖问题 \(\text{[HNOI2012] [P3219]}\) [题目描述] 给出 \(n\) 个等腰直角三角的顶点和直角边长,求覆盖总面积. [输入] 第一行一个整数 \(n\),表示三角形个数,接下来 \(n\) 行每行三个整数 \(x,y,m\),分别表示顶点坐标.直角边长(两直角边分别平行于 \(x,y\) 轴且顶点在左下角). […
[BZOJ 1535] [Luogu 3426]SZA-Template (KMP+fail树+双向链表) 题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置不能喷涂不同的字符.做一个模版很费工夫,所以他想要模版的长度尽量小,求最小长度是多少. 拿样例来说ababbababbabababbabababbababbaba , 模版为前8个字符abab…
题目链接:BZOJ - 1336 题目分析 最小圆覆盖有一个算法叫做随机增量法,看起来复杂度像是 O(n^3) ,但是可以证明其实平均是 O(n) 的,至于为什么我不知道= = 为什么是随机呢?因为算法进行前要将所有的点 random_shuffle 一次.为什么要这样做呢?因为这样就可以防止出题人用最坏情况卡掉增量算法. 这和随机化快排使用随机是一个道理. 算法步骤: random_shuffle n 个点 将圆设定为以 P[1] 为圆心,以 0 为半径 for i : 1 to n { if…
Luogu 2764 最小路径覆盖问题 / Libre 6002 「网络流 24 题」最小路径覆盖 (网络流,最大流) Description 给定有向图G=(V,E).设P是G的一个简单路(顶点不相交)的集合.如果V中每个顶点恰好在P的一条路上,则称P是G的一个路径覆盖.P中路径可以从V的任何一个顶点开始,长度也是任意的,特别地,可以为0.G的最小路径覆盖是G的所含路径条数最少的路径覆盖. 设计一个有效算法求一个有向无环图G的最小路径覆盖. Input 第1行有2个正整数n和m.n是给定有向无…
想象一条平行于\(y\)轴的扫描线,从低往高扫描.如何确定关键高度才能使每两个关键高度之间分割出的图形易于计算呢? 关键高度有:三角形底边高度.三角形上顶点高度.三角形交点的高度. ​ 如此分割,我们会发现,相邻两条扫描线之间的图形,是一个梯形,那么维护每条扫描线上的有效线段长度即可. 如何维护呢?用一个数组\(a_i\)表示第\(i\)格被三角形覆盖了多少次,用一个双向链表记录与每一个与当前扫描线相交的三角形的相交的部分\([l,r]\). 扫描线遇到三角形底端时,将\(a\)的\([x,x+…
[Luogu 3224] HNOI2012 永无乡 特别水一个平衡树题. 不认真的代价是调试时间指数增长. 我写的 SBT,因为 Treap 的 rand() 实在写够了. 用并查集维护这些点的关系,然后启发式暴力合并,以及找第 \(k\) 小. 就是把子树较小的并到较大的里,一个一个点插入. 因为要插入新的点,给 SBT 预留的空间要大一些.(我试过只改变原来的点的信息,结果失败了.) SBT 需要开的空间为 \(MAXN+MAXM\),因为 \(n\) 个点,每个点最多被插入 \(m\) 次…
Description 二维平面中,给定   N个等腰直角三角形(每个三角形的两条直角边分别     平行于坐标轴,斜边从左上到右下).我们用三个非负整数( x, y, d)来描   述这样一个三角形,三角形三个顶点的坐标   分别为(x, y), (x + d, y)和(x, y +     d).要求计算这   N个三角形所覆盖的总面   积.例如,下图有 3 个三角形,覆盖的总面积为 11.0.   Input 输入文件第一行为一个正整数N,表示三角形的个数.接下来的 N 行每行有用空格隔…
题面 中文题面,难得解释了 BZOJ传送门 Luogu传送门 分析 树上带修莫队板子题... 开始没给分块大小赋初值T了好一会... CODE #include <bits/stdc++.h> using namespace std; typedef long long LL; template<typename T>inline void read(T &num) { char ch; while((ch=getchar())<'0'||ch>'9'); fo…