上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 66 下一页
摘要: A:小Y做家教简单的想法题。使用hash表或者是map存储所有数,然后从最小的数开始找从这个数开始的连续P倍数的个数X,那么需要删除的数的个数为X/2。代码如下:Problem AB:小Y的难题Ⅰ组合数学题,通过经典的一一对应原则推导出答案为N^(N-2)。http://wenku.baidu.com/view/2e1ab2757fd5360cba1adbba.htmlCayley定理在组合数学中的应用。代码如下:Problem B#include <iostream>#include <cmath>#include <cstring>#include &l 阅读全文
posted @ 2013-03-30 17:20 沐阳 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 看了下面这篇文章后就恍然大悟了,不得不佩服解题方法的精妙之处。http://blog.csdn.net/wh2124335/article/details/8739097题目大意:在第一象限中给出若干矩形(点范围1e5,矩形个数20000),现在给出一些询问(次数20000),每次询问给出一个整数t,问在(0,0)到(t,t)范围的矩形面积和。解题思路:考虑每次询问t,对于单一矩形的面积的计算方法~对于询问t。计算如图矩形所被包含的面积可以用矩形面积S[TCFI]-S[TJGI],而S[TCFI]=(t-Fx)*(t-Fy);S[TJGI]=(t-Gx)*(t-Gy)换句话说就是用[T和矩形左 阅读全文
posted @ 2013-03-30 15:31 沐阳 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 题意:破解一套1-6位长度密码的系统,寻找这样一个序列:对于N位的密码10^N+N-1长度的连续的长为N的串能够枚举完所有的密码。解法:构图之后直接dfs会超内存,因此需要使用栈来实现。调了很久。代码如下:#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;int N, mod, head[100005];int idx, lim, edge, top;int st 阅读全文
posted @ 2013-03-27 22:29 沐阳 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题意:给定许多根棍子,这些棍子两头有不同的颜色,问是否能够存在这样一中组合方式使得所有的棍子首尾相连。解法:这题使用map处理字符串超时了,所以自己写了一个插值取模的字符串hash。只要判定图是否连通和度为奇数是否大于2个即可,不可能出现奇数个度为奇数的点。代码如下:#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>#include <map>#include <string># 阅读全文
posted @ 2013-03-27 09:19 沐阳 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一系列的单词,这些单词要使用类似与成语接龙的方式将他们连接起来,现在问是否存在这样一个通路。解法:为什么这种题目刚看起来总是像那个什么哈密顿回路呢?欧拉回路主要解决对边的遍历问题,因此我们需要将已知条件转移到边上的信息即可。对于一个单词acm,那么就连接一条从a到m的边,那么走这条边也就访问了这个单词。有向图判定是否存在欧拉路径的方法是:在保证图连通的情况下,所有点的入度等于出度或者是存在两个点,一个点入度比出度大1,另一个点出度比入度大1。代码如下:#include <iostream>#include <cstring>#include <cstdl 阅读全文
posted @ 2013-03-26 22:02 沐阳 阅读(479) 评论(1) 推荐(0) 编辑
摘要: 题意:给定一个无向图的关系,判定是否存在一条从M点出发回到0点并且走遍所有边的通路,也即欧拉通路。解法:该题如果当出发点就为0点话就等效于是否存在欧拉回路了。欧拉通路的判定条件为:连通的无向图中,度为奇数节点的个数为0个或者是2个。由于该题限定了起点和端点,因此度为奇数的点只能够由两个,且为M和0。当M==0时,奇数节点个数为0个符合题意,此时将构成一条欧拉回路。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <alg 阅读全文
posted @ 2013-03-26 21:04 沐阳 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个序列,求出这个序列中最长的一个对称的序列,并且该序列对称之中还要保持左边递增右边递减。解法:将原串进行翻转,然后求一个最长公共上升子序列,注意边界:从原串的第i位开始匹配,那么翻转过来的串就不能够匹配到[1,i-1]这个区间去,否则非法的这一段匹配结果将会是左降右增。代码入下:#include <cstdlib>#include <cstring>#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>using na 阅读全文
posted @ 2013-03-25 10:38 沐阳 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 题意:有这样的一个天平,关于天平的中心两边有一些钩子,钩子有一个属性就是离中心的距离。题中给定的是设中心的坐标为0,左右两边分别是负数和正数的坐标值。现在给定一些砝码,问将这些砝码都挂到天平上,使得天平保持平衡的方式有多少种?一个钩子上可以连续挂上多个砝码。解法:首先将所有钩子的坐标都加上15,然后使得最后砝码乘以坐标的总和等于总质量乘以15。这样原问题就转化为一个类似于背包的问题了。代码如下:#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>using 阅读全文
posted @ 2013-03-24 21:31 沐阳 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 大d的考题题意:给定一个N*N的矩阵,里面放置1,2,3...N*N这N*N个数,要求是第i个数的行和第i-1个数的列必须相同。问1所在的行的和值与N*N所在列的和值之差最小是多少。解法:通过dfs搜索得到1,2,3,4对应的解分别为0,2,6,12,当N=5的时数据规模已经庞大到无法在有限时间内得到结果了,根据这几组结果推断结果为ans = (N-1)*(N)。提交AC。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#include & 阅读全文
posted @ 2013-03-24 17:04 沐阳 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个多项式,对其进行因式分解。解法:由于多项式每一项系数绝对值不超过1000,由于最后解的形式为(x-a)(x-b)(x-c)(x-d)(x-e)其中a*b*c*d*e一定是最后的常数项系数,因此a, b, c, d, e的取值范围都在[-1000, 1000]内,因此枚举所有的根,剩下的就是重根的时候该怎么办?一个解决办法就是对原多项式进行求导,如果一个根t是f(x)的K重根的话,那么t一定是f(x)'的K-1重根。该题的字符串处理我没写好,后面调了很久。还有就是由于有5次方存在,因此代入时使用long long计算。代码如下:#include <cstdlib> 阅读全文
posted @ 2013-03-24 11:05 沐阳 阅读(1119) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 66 下一页