上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 66 下一页
摘要: 题意:给定一个点,一个圆,以及一个矩形,现在问从一个点到一个圆再到一个矩形的最短距离为多少?到达一个目标可以只挨着或者穿过它。解法:目前只知道从一个点到圆上按照[0,PI],[PI,2*PI]的两个半圆进行划分确实是满足距离是一个凹函数,但是加上到矩形的距离后仍然满足三分性质则不知道怎么得到的。具体做法是先将整个坐标系平移使得圆心落在(0, 0)处,然后三分枚举圆上的点,距离由两部分组成,一部分是点到圆上点的距离,一部分是点到矩形的距离,后者转化为点到四条线段的距离求解。代码如下:#include <cstdlib>#include <cstring>#include 阅读全文
posted @ 2013-05-30 16:37 沐阳 阅读(694) 评论(0) 推荐(0) 编辑
摘要: 题意:问给定的一张图中,相距最远最远的两个点的距离为多少。解法:直接对每一顶点搜索一遍即可。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>#include <iostream>#include <string>#include <map>using namespace std;int N, M;const int INF = 0x3f3f3f3f;map<string,int>mp;stru 阅读全文
posted @ 2013-05-30 12:31 沐阳 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 题意:要求计算两个和值比较大小。注意没有马或者是炮的时候能量减1,且能量不能小于1。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;int table[10] = {16, 7, 8, 1, 1, 2, 3};int main() { int T; scanf("%d", &T); while (T--) { int x, 阅读全文
posted @ 2013-05-29 21:42 沐阳 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 题意:一个裸的枚举题,告诉你M个点,问这M个点能否覆盖其他非M点。做的时候时间复杂度计算错误。。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int N, M;int r[15];int x[15], y[15];char mp[55][55];char tp[55][55];const int INF = 0x3f3f3f3f;bool judge 阅读全文
posted @ 2013-05-29 21:29 沐阳 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 题意:就是最小生成树,题中给定了一条必须要连接的边,排序的时候不把他考虑进去即可。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>#include <iostream>#include <cmath>using namespace std;int N;struct Point { int x, y;};struct Edge { int a, b; double dis; bool operator < (co 阅读全文
posted @ 2013-05-29 21:06 沐阳 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个整数串,有Q组询问,问这个串中长度为w的子串中不同的数字之和为多少,这题的动态规划感觉很有技巧性。解法:设f[i]表示w为 i 时不同的数字之和,那么考虑f[i+1]和f[i]的关系可以得知:f[i+1]就是从f[i]中去除最后一个子串后在每个串后加上一个数字的情况,因此可以得到这样的一个递推式:f[i] = f[i-1] - tail[N-i+2] + left 其中tail[N-i+2]表示长度为i-1的最后一个子串中不同的数字共有多少个,left表示所有数字中与前一个相同数字的长度大于 i 的数字还剩多少个。因此还要另外预处理出后缀不相同数字个数,和最近相同数字的长度,注. 阅读全文
posted @ 2013-05-29 20:41 沐阳 阅读(687) 评论(3) 推荐(0) 编辑
摘要: http://www.cnblogs.com/skyiv/archive/2010/03/27/1698550.html关键点在于通过记录一个数被分解的方案中包不包含1来考虑。得出结论有:f[2*N+1] = f[2*N]f[2*N] = f[2*N-1] + f[N]f[2*N] = f[0]+f[1]+...+f[N]代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>using names 阅读全文
posted @ 2013-05-29 16:14 沐阳 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个矩阵,矩阵上的每一点都有一个值。每次能够从任意一点开始,任意一点结束,每到一个点交替的加人的水平和剑的水平。问一共有多少种方法使得人的水平和剑的水平在最后相等。解法:f[x][y][k][0]表示在xy位置人的水平减去剑的水平的差值为k且该位置走奇数步的情况有多少种f[x][y][k][1]表示在xy位置人的水平减去剑的水平的差值为k且该位置走偶数步的情况有多少种然后维护这个数组就可以了,有一种省略了最后那个0、1的写法现在还搞不大清楚。代码如下:#include <cstdlib>#include <cstdio>#include <cstring 阅读全文
posted @ 2013-05-25 09:53 沐阳 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 题意:给定N个点,M条单向边,问在图中寻找一条回路,使得该路径上的所有点权和除以边权和最大。解法:设某点点权为ai, 边权为bi。选择某点的同时就意味着选择了某条边,那么我们把这条单向边划给弧头,因此可以得到表达式,s是牛选择的出发点。可以利用01分数规划的一般解法来求解,那就是选择某个比例进行合法性判定,如果这个比例能够达到,则把比例加大,如果不能的话,缩小这个比例,所以也叫做参数搜索,假设这个比例为R后,上式变为是否成立的判定问题。由于一个图中的某条回路小于0可以用spfa进行判定,那么我们就可以得到一个非常接近正确答案的值,只要精度够高,就能够保证得到的答案取两位后能够与等于0的参数R相 阅读全文
posted @ 2013-05-24 18:13 沐阳 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 这次真的很挫,写了三题竟然只过了一题,cf的数据强是一方面,再者也发现自己写代码时的一些细节部分没有注意,过来改了昨天两天代码都很快AC了。A.Strange Addition这题只需要处理几种情况就可以了,100和0必须取,其他如果同时出现X0和X这样的数就取两个,否则XX、X、X0取中间任意一个。代码如下:#include <iostream>#include <cmath>#include <cstring>#include <cstdio>#include <string>#include <stdlib.h>#i 阅读全文
posted @ 2013-05-20 09:11 沐阳 阅读(293) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 66 下一页