- 博客(19)
- 收藏
- 关注
原创 hdu 1005 找规律(循环点)
序列公式f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.很明显这是一道找规律的题目。用到模数的一个性质 (a*b)%m=(a%m * b%m)%m, (a+b)%m=(a%m+b%m)%m由此 f(n)=(A%7*f(n-1)+B%7*f(n-2))%7虽然1一下为参考
2012-03-30 17:31:35 1136
转载 鸽巢原理(抽屉原理)
鸽巢原理和抽屉原理是同义词,已合并。抽屉原理百科名片 抽屉原理桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1或多于n+1个元素放到n个
2012-03-30 13:00:19 6513
原创 1003
简单的DP:now 表示当前的值,顺序输入temp 若now+temp(代码参考的别人的……)#includeusing namespace std;int main(){ int t,n; scanf("%d",&t); int now,temp,pos1,pos2,x,max; int num=0; wh
2012-03-29 20:37:19 579
原创 hunnu 11082 The Minesweeper Game(BFS)
题目来源 : http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11082广度搜索bfs 最后输出的不为“#”的部分,实际上是指1、(点击处若为0)处于此处八个方向内且为0(相当于一个“感染区”)并且这个“感染区”的八个方向除了是0的情况,就必须被不为0且不为地雷的包围)。所以,从点击
2012-03-26 20:28:58 494
转载 最短路径之Dijkstra算法详细讲解
1 最短路径算法在日常生活中,我们如果需要常常往返A地区和B地区之间,我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括:(1)确定起点的最短路径问题:即已知起始结点,求最短路径的问题。(2)确定终点的最短路径问题:与确定起点的问题相反,
2012-03-24 10:00:17 736
转载 01背包(转)
例题1、 基本的0-1背包问题(HDU 2602) 这是最基本的01背包模型。定义f[i][j]:在前i个bone中用容量为j的包选择bone所能得到的最大价值。设:第i个bone的volume为c[i],相应的value为w[i]。分析:将“前i个bone装进容量为j的包中所得到的最大价值”这个子问题的求解,考虑第i个bone,则会有两种策略:、不选择第i个bone
2012-03-23 17:25:18 636
转载 快速排序及其分析
前言快速排序的平均情况下是O(nlogn),但是一般都比其他运行时间为O(nlogn)的算法都要快,因为它隐藏的常数因子比较小,但是在最坏情况之下,快速排序的运行时间是O(n2)。快速排序过程快速排序采用的思想是分治思想,就像合并排序算法的思想一样,合并排序算法是从数组的中间开始分治,直到分为N个分组,最后分别合并N个分组的解。如下图,有原始数组A = {1, 3, 4, 5, 7
2012-03-14 21:51:02 468
原创 XTU 1097 SSB的烦恼 (线性规划)
根据x‘^2+y’^2-x‘-y’-2*x‘*y’=0 可得:(x‘-y’)^2-(x‘+y’)=0; ……③ 设x=(x'-y') y=(x'+y') ,则可知:2=1 && xi=1 && yi 而③又可写为(y'-x')^2-(x'+y')=0,所以x'与y' 可交换 所以将a与b交换在算一遍,两和相加得最后结果线性规划的图:(多年未用过了,嘿嘿)代码:#
2012-03-11 17:36:33 588
转载 求阶乘得一些有趣方法
一个正整数n的阶乘就是前n个正整数的乘积,我们通常需要n-1次乘法操作来算出精确的值。不像等差数列求和、a的n次幂之类的东西,目前求阶乘还没有什么巨牛无比的高效算法,我们所能做的仅仅是做一些小的优化。更少的乘法运算次数? 在高精度运算中,乘法计算的速度远远慢于加减法,因此我们有必要减少乘法运算的次数。下面我将做一个非常简单的变换,使得计算阶乘只需要n/2次乘法。继续看下去之前,你
2012-03-11 13:34:00 737
原创 XTU 1095 连续自然数和
之前,是想利用高斯公式直接求取(第一项最大为m/2),但是超时。 后来,看到网上一篇“另类”的求法利用hash[],觉得还不错,好不容易看懂了吧,还是超时!不过,通过这个可以知有时候利用hash[],也是一种好办法呗。 再后来,终于找到了关于该题的结题报……该题被定义为:基础模拟题。有题目可看出10000=1998+1999+2000+2001+2002;有五项,中间项为200
2012-03-11 11:08:46 615
原创 ccsu1359 木棒相交 (叉积线段判交,并查集判断是否属于同一个集合)
题意:判断n条木棒中木棒a是否与木棒b相交。其中木棒的相交具有传递性。 首先用一个判断线段是否相交的函数判断相交: struct Point{ double x; double y;};typedef struct Point point;Const int easp=1e-9;//叉积double multi(point p0, point
2012-03-07 20:33:54 879
原创 ccsu 数星星
#include#includeusing namespace std;int start[1001][1001]={0};int main(){ int n,m; int x,y; int num,x1,y1,x2,y2,sum; scanf("%d",&n); for(int i=0;i<n;i++) { sca
2012-03-07 20:18:01 528
转载 扑克牌
扑克牌型下面列出从大到小的扑克牌面. 这是所有的扑克通用规则。1Royal Flush 同花大顺又称皇家同花顺它是所有德州扑克中的王牌,即使您经常玩扑克,也很少见到这样的牌。好比打高尔夫球一杆进洞一样。它是由T(10)到Ace的清一色同花组成。 131 - The Psychic Poker Player" alt="Uva 131 - T
2012-03-04 15:07:21 1221
原创 爬等腰三角形的山的问题 ccsu 1283
山有n座,但是不一定按顺序(例如:从左至右的输入),所以必须得将输入的x1 排序 但是前几次做的时候,只知道要分类,结果把分的自己都搞不驼清, 后来想到 可以将left = tri[0].x1 right = tri[i].x2 ,即将left 和 right 看做一个线段的左右顶点,接下来得n-1个数据便 相当于求不重复的线段和(据情况,更新left 和 ri
2012-03-04 14:34:51 1320
原创 迭代加深搜索 埃及分数
在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 如: 19/45=1/3 + 1/12 + 1/180 19/45=1/3 + 1
2012-03-04 11:48:45 2820 2
转载 qsort()应用大全
七种qsort排序方法 一、对int类型数组排序 七种qsort排序方法 一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,1
2012-03-04 10:53:58 745
原创 Uva OJ 11205 - The broken pedometer
描述: 输入t,p,n,n个数的显示法 t 表示有几组测试数据,p表示有多少条显示条,n表示需要显示的数据有多少 (0 题意: p 条显示条中能否找到最少的条数便可表示 n 个数(即 找
2012-03-03 11:27:03 741
原创 Uva OJ 10167 birthday cake
直接枚举法 蛋糕的半径为100,所以 a*x+b*y=0 中 -100所以 就只用枚举 for(int i=-100;i然后判断此a、b确定的直线两侧是否都有n个樱桃;此时必须分三种情况: 1、直线上侧; 2、直线下侧;
2012-03-02 16:41:52 575
转载 STL中sets的基本用法
集合(Set)是一种包含已排序对象的关联容器C++ Setsbegin语法: iterator begin();返回指向当前集合中第一个元素的迭代器。clear语法: void clear();清除当前集合中的所有元素。
2012-03-02 14:38:05 1102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人