
笔记
文章平均质量分 78
zkss
热爱,才能走的更远
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
计算几何——凸包
凸包作为计算几何入门必学的知识非常重要,那么什么是凸包呢?凸包的定义可以理解为给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。在找凸包的时候需要使用向量,因为两向量的叉积的正负可以判断两个向量所处的方位。向量以及相应的操作建议写成结构体的形式封装起来,包括运算符重载。struct point{ double x, y; double pos; point operator+(point a) { return point{ x + a.x,y + a.原创 2021-03-19 21:01:37 · 1856 阅读 · 2 评论 -
扩展欧几里得算法
如果存在整数a,b,满足ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b),那么必然存在一个x0,y0使等式成立。这就是贝祖尔定理。我们可以来看看这个等式,把它化简一下ax1+by1===gcd(a,b)===gcd(b,a%b)===bx2+(a%b)y2而a%b===a-a/b*b所以, ax1+by1===bx2+(a-a / b *b) y2ax1+by1===bx2+ay2-b * a/b * y2ax1+by1===ay2+b(x2-a/b * y2原创 2021-03-14 15:26:19 · 200 阅读 · 0 评论 -
ST表的学习
作用ST表的优势在于可以把查询一个区间的最值的时间复杂度降为O(n)O(n)O(n)。状态转移假设有一个数组里有10000个元素,第i个元素记为ar[i]。我们用f[i][j]表示从第i个元素开始,向右i+2j-1的 这些元素的最大值。有f[i][j]=max(f[i][j-1],f[i+2j-1][j-1])这其实是把区间[i][j]分成了两个部分,每部分的长度均为2j-1,将两个部分的最大值保存在f[i][j]中。有了这个状态转移方程后,就可以求出所有的f数组了。不难看出,时间复杂度为O(n原创 2021-03-13 15:09:41 · 189 阅读 · 0 评论 -
2021-3-12 大二周赛题解
A - 思维题<<<题目链接>>>本题关键在于将T-array[i]和arrary[i]分组考虑,而当arrary[i]*2==T时,将平均分配至两组为最优解。用map以及标记数组简单实现即可#include<bits/stdc++.h>using namespace std;typedef long long ll;map<int, int>m, vis;const int N = 100005;int ar[N];int a原创 2021-03-12 19:13:47 · 200 阅读 · 0 评论 -
区间dp的四边形优化问题
四边形优化首先我们先要了解满足四边形不等式 所需要的条件。当 a1<a2⩽b1<b2a1<a2\leqslant b1<b2a1<a2⩽b1<b2且有 m[a1,b1]+m[a2,b2]⩽m[a1,b2]+m[a2,b1]m[a1,b1]+m[a2,b2]\leqslant m[a1,b2]+m[a2,b1]m[a1,b1]+m[a2,b2]⩽m[a1,b2]+m[a2,b1]时,满足四边形不等式很显然,对于区间动态规划问题,上述不等式通常是成立的,因为a1~原创 2021-03-12 12:08:16 · 267 阅读 · 0 评论