上一页 1 ··· 115 116 117 118 119 120 121 122 123 ··· 182 下一页
摘要: 题意:给出一些不等式,求是否存在可行解。分析:差分约束系统,对于bellman和spfa来说,解差分的不同在于,对于不连通图bellman能直接处理,而spfa不能,需要加入超级源(一个到所有点都有一条长度为0的边的点),并把超级源作为起点,才能保证在扩展过程中到达每个点。否则差分约束系统的部分内容就不会被检测到。当然也不是所有题遇到这种不连通的情况都可以使用超级源。因为这种超级源相当于把不同的连通分支在数轴上的起点都平移到了原点。如题目有特殊要求,则可以对不同的连通分支分别做单独处理。View Code #include <iostream>#include <cstdio 阅读全文
posted @ 2011-07-06 09:40 undefined2024 阅读(695) 评论(0) 推荐(0)
摘要: 简单题View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define maxn 200char st[maxn], st1[maxn];int n, ans;char word[maxn * 100][maxn];void ins(char *st){ for (int i = 0; i < ans; i++) if (strcmp(s 阅读全文
posted @ 2011-07-05 14:56 undefined2024 阅读(242) 评论(0) 推荐(0)
摘要: 题意:给出一个多边形和一个圆,问是否是凸多边形,若是则再问圆是否在凸多边形内部。分析:计算几何分3步:1、判断是否是凸多边形2、判断点是否在多边形内部3、判断点到各边的距离是否大于等于半径首先,若点是顺时针则reverse()改为逆时针,reverse函数就是用来把数组反向的。然后利用每3个相邻点组成的两条向量的叉积来判断,都应大于等于零。然后,判断是否在内部,利用钉子点和多边形每两个相邻点,组成两个向量。判断叉积是否全都大于0(全为逆时针)。再就是判断点到直线的距离,利用三角形面积除以底边,面积用叉积求。View Code #include <iostream>#include 阅读全文
posted @ 2011-07-05 11:09 undefined2024 阅读(947) 评论(0) 推荐(0)
摘要: 题意:给出一个正方形,每条边上有n个点,把这些点作为端点拉线组成的网格(整个正方形由一些四边行拼成),求最大格的面积。分析:计算几何,求出所有线的交点,分别计算每个格的面积。在求线段交点时可以用叉积面积的方式,求ac,bd交点:void intersection(Point &a, Point &b, Point &c, Point &d, Point &ret){ double s1 = xmulti(a, c, b); double s2 = xmulti(a, c, d); ret.x = (s1 * d.x - s2 * b.x) / (s1 - 阅读全文
posted @ 2011-07-04 17:55 undefined2024 阅读(202) 评论(0) 推荐(0)
摘要: 题意:给一组小括号与中括号的序列,添加最少的字符,使该序列变为合法序列,输出该合法序列。分析:dp,f[i][j]表示从i位到j位的序列变为合法序列最少添加多少个字符。如果匹配st[s]与st[e]匹配,那么f[s][e] = f[s + 1][e - 1];否则f[s][e] = f[s][k] + f[k + 1][e];我们还要用v[][]记录每个f[s][e]是从哪得来的。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>us 阅读全文
posted @ 2011-07-04 16:41 undefined2024 阅读(1451) 评论(0) 推荐(0)
上一页 1 ··· 115 116 117 118 119 120 121 122 123 ··· 182 下一页