03 2021 档案
摘要:一、引入 二、一维解法(推荐解法) const int maxn=5E4+100; int C[maxn],W[maxn];//花费 价值 int dp[maxn*4]; int V; int main() { int n; cin>>n>>V; for(int i=1;i<=n;i++) { ci
阅读全文
摘要:一、引言 讲完了凸包,一个凸包间的距离问题,那么如果有两个凸包,求最小(或最大)距离怎么求呢? 二、思路 说白了,我们是求图形与图形之间的距离,我们可以转换成线段与线段之间的距离,再转换成点与线段之间的距离,最后转换成点与点之间的距离。 1.点与点的距离 不解释 2.点与线段的距离 点与线段一共有如
阅读全文
摘要:POJ2187 一、引言 上节的POJ2187,是求一个凸包中的最远的两个点的距离,用暴力,O(n²)也能过,但是没有用到旋转卡壳。这节就来看看怎么用旋转卡壳来卡这个最远距离。 二、找対踵点 这个最远的距离肯定是在凸包上,这是毋庸置疑的,我们首先建立好凸包后,然后检索凸包的点,寻找这个点的対踵点(即
阅读全文
摘要:一、前驱知识: 1.叉积:A×B A.x*B.y-A.y*B.x >0 A在B的顺时针方向 <0 A在B的逆时针方向 2.点积:A·B A.x*B.x+A.y+B.y 3.两点之间距离: 可以用点积方便的求解,即: sqrt(A.x*A.x+A.y*A.y); 4.计算几何精度问题: dcmp函数,
阅读全文
摘要:一、注释 背包怎么理解呢? 就是把背包的容量从0到V逐渐刷新,逐渐扩大容量,利用dp思想,先解决小容量,在小容量的基础上一步步解决大容量,直到我们需要的那个容量V 例如:让求容量V=5,就先求1 2 3 4 一步步扩展过来 Vdp12345 二、解法 ①二维解法 const int maxn=101
阅读全文
摘要:题目链接 dp[j] 表示使用的币值最大为i时 来兑换j分钱 的种数 不断提高币值i的值,来刷新dp[j]的值 例如: dp[5] 当i=1时 dp[5]=1; 当i=2时 dp[5]+=dp[5-2]; 即dp[5]=dp[5]+dp[3]=1+2=3; 原来的+dp[3] 当i=3时 dp[5]
阅读全文
摘要:戳 LCS 最长公共子序列 关于LCS tql LCS #include<bits/stdc++.h> #define ll long long #define INF 0x3f3f3f3f using namespace std; int c[1100][1100]; //前i 前j个元素 的lc
阅读全文