凸包
Keep_Trying_Go
无
展开
-
poj2438(哈密顿回路)
这道题完全是使用的网上模版!自己根据定理来写的一直报WA。哈密顿图定义:经过图中每个顶点一次且仅一次的回路(通路)称为哈密回路(通路)。存在哈密顿回路的图称为哈密顿图。#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;const int maxn=505;int ans[maxn],g[maxn][maxn原创 2021-05-15 12:14:04 · 181 阅读 · 0 评论 -
poj1386(判断一个有向图是否存在欧拉回路)
1.欧拉回路:定义:经过图(有向图或无向图)中每条边一次且仅一次并且行遍图中每个顶点的回路( 闭合的欧拉路径,即一个环,保证每条边都通过且仅通过一次)。2.问题2:判断一个图是否有欧拉路径:(1)图G是连通的,无孤立的点。(2)有向图每个点的入度等于出度。(3)有向图,可以存在两个点,其入度不等于出度,其中一个入度比出度大一,为路径的起点;另一个出度不入度大一,为路径的终点。#include<iostream>#include<algorithm>#include<原创 2021-05-14 23:51:02 · 1320 阅读 · 0 评论 -
HDU1878(判断一个无向图是否存在欧拉回路)
1.欧拉回路:定义:经过图(有向图或无向图)中每条边一次且仅一次并且行遍图中每个顶点的回路( 闭合的欧拉路径,即一个环,保证每条边都通过且仅通过一次)。2.问题1:判断一个无向图是否有欧拉回路的充要条件:(1)图G是连通的,无孤立的点。(2)无向图奇度点数为0。#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>u原创 2021-05-14 22:04:07 · 869 阅读 · 0 评论 -
HDU1756(判断一个点是否在多边形内)
以下内容是在自己学习中总结出来了的,如果有什么错误,请指出,谢谢!判断一个点是否在多边形内:(1)判断方法一(具有一定的局限性):将测试点的Y坐标与多边形的每一个点进行比较,将得到一 个与多边形的交点列表 。如果测试点的两边点的个数是奇数数个,则测试点在多边形内,否则 在多边形外。(2)判断方法二:当测试点的扫描线正好穿过多边形的一个顶点时,扫描线与边a有一个交点,与边 b也有一个交点,一共两个角点,右边也是同样的情况下,则依据判断方法一,这个测试线点在 多边形外。但是这个测试点实际上在多边形内,所以原创 2021-05-14 18:58:36 · 442 阅读 · 0 评论 -
poj1419(最大独立集)
先看一下最大团问题:其中,形式参数t表示第t个顶点,Place(t)用来判断第t个顶点能否放入团里。二维数组a[][]是图的邻接矩阵。一维数组x[]记录当前解。搜索到第t层时,从第1 个顶点用第t-1个顶点的状态存放入在x[1:t-1]中;一维数组best记录当前最优解,变量cn,bestcn分别记录当前已包含在团里面的顶点个数和当前最优解包含在团里面的顶点个数,初始化都为0。最大独立集:一个点数最多的点集,且满足集合内的点互不干扰。最大独立集=补图中的最大团数方法一:#include&l原创 2021-05-14 12:29:22 · 673 阅读 · 0 评论 -
HDU1530(最大团问题)
1定义:其中,形式参数t表示第t个顶点,Place(t)用来判断第t个顶点能否放入团里。二维数组a[][]是图的邻接矩阵。一维数组x[]记录当前解。搜索到第t层时,从第1 个顶点用第t-1个顶点的状态存放入在x[1:t-1]中;一维数组bestx记录当前最优解,变量cn,bestcn分别记录当前已包含在团里面的顶点个数和当前最优解包含在团里面的顶点个数,初始化都为0。时间复杂度较大!方法一:#include<iostream>#include<algorithm>原创 2021-05-14 10:48:25 · 312 阅读 · 0 评论 -
poj1639(最小K度生成树)
即最小k+1度限制生成树属于最小k度限制生成树的邻集。既然知道了最小k度限制生成树,求解最小k+1度限制生成树的步骤:方法一:枚举法(1)可知最小k+1度限制生成树属于最小k度限制生成树,因此可以通过枚举最小k度限制生成树上的一次可行解。(2)为了使V0的度增加,枚举的可行解中必须有一条边与V0关联。(3)假设我们已经得到了一棵最小生成树。(4)现在枚举V0关联且不在树上边,分别添加到树上。(5)添加边之后,会形成环,则删除边的权值越大的,所得到的生成树的权值和就越小,因此需要删除权值最大的边原创 2021-05-11 17:15:21 · 307 阅读 · 0 评论 -
poj2976(0-1分数规划)
0-1分数规划设x[i]等于1或0.则我们所求的比率 rate = ∑(cost[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m .z( rate ) = ∑(cost[i] * x[i]) - rate* ∑(dist[i] * x[i]) 二分法求解:在定出一个搜索范围和精度之后,可以使用二分法进行搜索:对于当前的搜索区间[left,right],mid=(left+right)/2,根据z(mid)的值及z(rate)的增减性,对搜索区间进行更新:若z(m原创 2021-05-09 21:17:39 · 131 阅读 · 0 评论 -
poj3517(约瑟夫环问题)
题意:给出n,k,m,首先将第m个人移出,之后向后第k个人被移出。#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;const int maxx=105;int n,m,k;int main(){ while(scanf("%d %d %d",&n,&k,&m)!=EOF){ if(n==0原创 2021-05-06 13:09:14 · 205 阅读 · 0 评论 -
poj1012(约瑟夫环问题)
题意:给出2k个人,前k个好人,后k个坏人,现在要把后k个坏人选出,但是在还未选出完k个坏人之前,不得有一个好人被选出,找出这样最小的m间隔。#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;const int maxx=105;int vis[maxx];int n;int solve(int n){//如果已经原创 2021-05-06 12:40:29 · 204 阅读 · 0 评论 -
HDU1443(约瑟夫环问题)
题意:给出2k个人,前k个好人,后k个坏人,现在要把后k个坏人选出,但是在还未选出完k个坏人之前,不得有一个好人被选出,找出这样最小的m间隔。这个道是看了网上大佬的思路的!自己没有做出来!#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;const int maxx=105;int vis[maxx];int n;原创 2021-05-06 00:26:59 · 451 阅读 · 0 评论 -
HDU3089(约瑟夫环问题)
题意:给出N个数,然后给出K,1到n圈的n个人开始,数K个数之后淘汰一个人,直到只有一个人幸存下来。暴力法-WA#include<iostream>#include<algorithm>#include<cmath>#include<cstring>using namespace std;struct node{ int x; node*next; node(int x):x(x),next(NULL){}};int n,k;int原创 2021-05-05 23:51:15 · 165 阅读 · 0 评论 -
HDU2925(约瑟夫环问题)
题意:n个孩子坐在N把椅子上,围绕着一个圆圈。椅子的编号从1到N。你选择一个正数D.节目开始进行,从第一张椅子开始,开始计算孩子们的人数。当数到D时,那个孩子离开游戏,移走他/她的椅子。节目再次开始计数,从圈中的下一位主席开始。剩下的最后一个孩子是赢家。方法一:暴力法-超时#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std原创 2021-05-05 23:07:17 · 189 阅读 · 0 评论 -
HDU3949(线性基算法模版)
题意:给出N个数,再给出q次查询,每一次的查询在N个数中的值进行异或后第k小的值是多少!这个线性基我也今天刚学,也只是在套模版,有些地方感觉有点难理解!#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#include<cstring>using namespace std;typedef long long ll;const int maxx=原创 2021-05-05 20:46:04 · 246 阅读 · 0 评论 -
poj3264(ST表模版)
ST 表算法用于查询区间最值,为静态算法,查询区间最值时不能更新信息,预处理复杂度为 O(nlongn),查询为 O(1)。适用于不更新信息且查询很多的问题。题意:求解范围内最高的奶牛和最短的奶牛之间的高度差异。#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using原创 2021-04-29 14:32:05 · 238 阅读 · 0 评论 -
HDU2586(ST表+dfs)
ST 表算法用于查询区间最值,为静态算法,查询区间最值时不能更新信息,预处理复杂度为 O(nlongn),查询为 O(1)。适用于不更新信息且查询很多的问题。题意:首先要计算出各个可到达点之间的长度,然后利用区间查找求解!#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>原创 2021-04-29 14:12:02 · 247 阅读 · 0 评论 -
HDU5443(ST表)
ST 表算法用于查询区间最值,为静态算法,查询区间最值时不能更新信息,预处理复杂度为 O(nlongn),查询为 O(1)。适用于不更新信息且查询很多的问题。题意:找出给定区间的最大水源。#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxx=3005原创 2021-04-29 13:40:27 · 193 阅读 · 0 评论 -
HDU3183(ST表)
ST (RMQ)表ST 表算法用于查询区间最值,为静态算法,查询区间最值时不能更新信息,预处理复杂度为 O(nlongn),查询为 O(1)。适用于不更新信息且查询很多的问题。题意:从给出的一串数字总删除m个字符,使剩下的数字组合是最小的(注意这个顺序是不能变的)#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>u原创 2021-04-29 13:15:09 · 463 阅读 · 0 评论 -
poj2420(模拟退火算法)
#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>#define esp 1e-7#define T 100#define delta 0.985using namespace std;const int maxx=1005;const int inf=0x3f3f3f3f;int n;struct node{ double x,y; node(do原创 2021-04-28 20:54:35 · 191 阅读 · 0 评论 -
HDU5017(模拟退火算法)
题意:求解椭圆上的点到(0, 0,0)之间的最短距离。这个算法也是看了大佬之后才写的^ _ ^.#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#define esp 1e-9#define T 0.99using namespace std;const int maxx=1005;const int inf=0x3f3f3f3f;const do原创 2021-04-27 21:58:58 · 143 阅读 · 0 评论 -
HDU2215(最小圆覆盖问题)
题意:就是求最小圆覆盖问题方法一:#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<cstdio>using namespace std;const int maxx=1005;const int inf=0x3f3f3f3f;struct node{ double x,y;};node b[maxx];node原创 2021-04-27 15:08:55 · 170 阅读 · 0 评论 -
poj2069(最小球覆盖+算法模版)
#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>using namespace std;const double sep=1e-6;const double base=0.98;const int maxx=1e3+5;struct node{ double x,y,z;}t[maxx];int n;double x,y;double z;原创 2021-04-27 13:12:42 · 168 阅读 · 0 评论 -
HDU4720(最小圆覆盖问题)
题意:给出四个点的坐标,现在判断第四个点是否在最小覆盖圆里面,如果在则输出Safe(注意包括边界),否则输出Danger.#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<cstdio>using namespace std;const int maxx=1005;const int inf=0x3f3f3f3f;struc原创 2021-04-26 21:30:18 · 162 阅读 · 0 评论 -
HDU3932(最小圆覆盖问题)
题意:求出最小覆盖圆的圆心坐标和最小半径。#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<cstdio>using namespace std;const int maxx=1005;const int inf=0x3f3f3f3f;struct node{ double x,y;};node b[maxx];no原创 2021-04-26 21:18:07 · 139 阅读 · 0 评论 -
HDU3007(最小圆覆盖问题)
题意:给定n个点,用一个最小的圆把这些点全部覆盖,求这个最下覆盖圆的圆心及半径#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<cstdio>using namespace std;const int maxx=1005;const int inf=0x3f3f3f3f;struct node{ double x,y;}原创 2021-04-26 21:11:44 · 280 阅读 · 0 评论 -
HDU2036
求多边形的面积(模版):#include<iostream>#include<algorithm>#include<cmath>#include<iomanip>using namespace std;const int maxx=105;int n;struct node{ double x,y;}num[maxx];double Area(node*p,int n){ double sum=0; if(n<3)return原创 2021-02-24 00:11:11 · 65 阅读 · 0 评论 -
poj1654
方法一(超出内存限制)#include<iostream>#include<algorithm>#include<cmath>#include<cstring>using namespace std;typedef long long ll;const int maxx=1e3+5;int n;struct node{ double x,y;}num[maxx];double Area(node*p,int n){ if(n<3原创 2021-02-24 00:04:45 · 132 阅读 · 0 评论 -
HDU1115
#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;struct node{ double x,y; node friend operator -(node a,node b){ return {a.x-b.x,a.y-b.y}; } double friend operator原创 2021-02-23 11:23:31 · 136 阅读 · 0 评论 -
HDU2105
#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int n;struct node{ double x,y; node friend operator -(node a,node b){ return {a.x-b.x,a.y-b.y}; } double friend o原创 2021-02-23 11:22:25 · 137 阅读 · 0 评论 -
HDU1385(多边形重心)
#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<iomanip>using namespace std;const int maxx=1e6+5;;int n;struct node{ double x,y;}a[maxx];int main(){ int t; cin>>t; while(t--){原创 2021-02-23 11:19:38 · 127 阅读 · 0 评论 -
HDU1392(凸包求周长模版)
其实这个求凸包周长也算是模版。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<iomanip>using namespace std;const int maxx=1e5+5;struct point{ double x,y;}p[maxx],s[maxx];double dis(point a,point b){原创 2021-02-19 10:44:18 · 175 阅读 · 0 评论 -
HDU2108(凹多边形还是凸多边形)
题意:判断多边形是凸多边形还是凹多边形。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int maxx=1e5+10;int n;struct node{ double x,y; node friend operator -(node a,node b){//重载减法 return {a.x-b原创 2021-02-18 11:35:03 · 142 阅读 · 0 评论