摘要:
凸包问题,求出凸包后,计算距离,不知道为什么n==2的情况居然不是两点距离的2倍,而是正好是两点的距离。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>using namespace std;#define maxn 505struct point{ double x, y;}pnt[maxn], res[maxn];int n, m;b 阅读全文
摘要:
看是否所有定点的度都是偶数,并使用并查集看图是否连通。我开始因为没有判断是否连通而错了许多次。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 1005int n, m, f[maxn], father[maxn];int getanc(int a){ if (father[a] == a) return a; return father[a] = getanc(fat 阅读全文
摘要:
求多边形面积,选定(0,0)点,用三角形法求,求三角形面积时用叉积,把式子展开并合并同类项可得模板中的公式。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 101struct XPoint{ double x, y;}point[maxn];int n;void input(){ for (int i = 0; i < n; i++) { scanf(" 阅读全文
摘要:
最短路+dfs,dfs的时候要记忆化,并记得判断能否从该点来。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define INF 0x03F3F3F3Fconst int N = 1000;int path[N], vis[N];int n, m;int cost[N][N], lowcost[N], dp[N];void input(){ scanf("%d", &a 阅读全文
摘要:
双向广度优先搜索,本来是想哪个节点少扩展哪个,但是有一个问题,就是有可能上端的x层节点扩展出x+1层,下端的y层扩展出y+1层,这两个+1层有重合,便直接跳出,输出x+y+1,这样可能导致错误,因为x层节点并没有完全扩展完毕,很可能接下来要扩展的x层节点会扩展出的x+1层节点直接与y层节点重合。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>using namespace std;stru 阅读全文
摘要:
记忆化搜索,使用dfs,从0,0点开始,把每个点对应的剩下路程所能得到的最大值存入f数组。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>#include <cmath>#include <queue>using namespace std;#define maxn 105int map[maxn][maxn];int f[maxn][maxn];int ans, 阅读全文