题面 传送门 前置芝士 扫描线,积分求面积 题解 我怎么老是忘了积分可以求面积-- 首先,这两个投影的最小的\(x\)坐标和最大的\(x\)坐标必须相等,否则肯定无解 我们考虑一种方法,枚举\(x\)坐标,并令每一个\(x\)处对应的多边形的面积最大.只有每一个\(x\)处面积都取最大,多面体的体积才能取到最大值 怎么样才能让对应的多边形面积最大呢?我们令\(h(c)\)表示\(xy\)平面上\(x=c\)处投影的长度之和,令\(g(c)\)表示\(xz\)平面上\(x=c\)处的投影长度之和.…
题面 传送门 题解 我们枚举这个凸多边形\(y\)坐标最小的点\(p_i\),然后对于所有\(y\)坐标大于等于它的点极角排序 我们预处理出\(s_{j,k}\)表示三角形\(p_i,p_j,p_k\)内部的点的\(b\)总和(不包括边界),然后记\(dp_{i,j,k}\)表示这个凸多边形之前两个点是\(p_i,p_j\),还需要\(k\)个点,最小的\(b\)是多少,然后可以直接记忆化搜索 //minamoto #include<bits/stdc++.h> #define R regis…
题面 传送门 题解 好眼熟丫-- 一月月赛最后一题--,代码都不用改-- //minamoto #include<bits/stdc++.h> #define R register #define fi first #define se second #define ll long long #define pb push_back #define IT vector<pair<node,int> >::iterator #define inline __inline_…
传送门 •题意 给你三个矩形,依次编号为 1,2,3: 判断 矩形1 是否被 矩形2 和 矩形3 完全覆盖: 如果没有完全覆盖,输出 "YES",反之,输出 "NO": •题解 我是用扫描线做的: 首先,定义如下数据结构: struct Data { int x; int y1,y2; int f; int id; bool operator < (const Data& obj)const { return x < obj.x; } }line…
1845: [Cqoi2005] 三角形面积并 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 1151  Solved: 313[Submit][Status][Discuss] Description 给出n个三角形,求它们并的面积. Input 第一行为n(N < = 100), 即三角形的个数 以下n行,每行6个整数x1, y1, x2, y2, x3, y3,代表三角形的顶点坐标.坐标均为不超过10 ^ 6的实数,输入数据保留1位小数 Out…
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2178.html 题目传送门 - BZOJ2178 题意 给出 $n(n\leq 1000)$ 个圆,求面积并. 所有圆的圆心坐标和半径都是绝对值不大于 1000 的整数. 题解 自适应辛普森积分模板题.注意先删掉被其他圆包含的圆. 但是 bzoj 大概是加过数据了,网上大部分直接自适应辛普森的代码都 TLE 了. 有一种卡常方法效果很好: 把 x 坐标按照整点划分成 $O(1000)$ 个区间,对于…
Subtree Removal 很显然不可能选择砍掉一对有祖先关系的子树.令$f_i$表示$i$子树的答案,如果$i$不被砍,那就是$a_i + \sum\limits_j f_j$:如果$i$被砍,那就是$-x$.取个$max$就好了. 时间.空间复杂度$O(n)$. #include <bits/stdc++.h> using namespace std; ; int tc, n, xx; int a[N]; vector<int> g[N]; long long f[N];…
传送门 \(PEWDSVTS\) 我哪根筋不对了要把所有可行的拿出来\(sort\)一下--还有忘开\(long\ long\)真的好难受-- int main(){ // freopen("testdata.in","r",stdin); for(int T=read();T;--T){ n=read(),A=read(),B=read(),X=read(),Y=read(),Z=read(),top=sum=0; d=(Z-B+Y-1)/Y,res=Z-1ll*…
传送门 \(MAXEP\) 二分,不过二分的时候要注意把\(mid\)设成\(\left\lfloor{9l+r\over 10}\right\rfloor\),这样往右的次数不会超过\(6\)次 //minamoto #include<bits/stdc++.h> #define R register #define inline __inline__ __attribute__((always_inline)) #define fp(i,a,b) for(R int i=(a),I=(b)…
\(JUMP\) 很容易写出转移柿子 \[f_i=\min_{p_j<p_i}\{(h_i-h_j)^2+f_j\}+w_i\] 把\(\min\)里面的东西展开一下 \[f_j=\min_{p_j<p_i}\{-2h_jh_i+h_j^2+f_j\}+h_i^2+w_i\] 里面的\(\min\)是一个一次函数 首先这是一个类似于区间查询的东西,我们可以用树状数组 里面查询的东西是一个最小值,也就是说我们要资瓷插入一次函数并求最小值,超哥线段树就行了 所以这其实是个树套树,不过树状数组套什么…