2012年5月20日
摘要: 数论-找规律。解决本题的关键:通过公式条件:F(0)= 7, F(1) = 11,F(n) = F(n-1) + F(n-2) (n>=2).找到规律。由同余式的基本性质:(1)自反性:a = a( mod m)。以及同余式的四则运算法则:(1)如果a =b( mod m)且c = d( mod m),则a +c = (b + d)( mod m)。可知,F(n) = F(n) ( mod m) = ( F(n-1) +F(n-2) )( mod m)。综上所述,可得到以下对应关系:F(1)=7%3 = 1 , F(1) = 11%3 = 2 , F(n) = ( F(n-1) + F( 阅读全文
posted @ 2012-05-20 16:38 有间博客 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 水题。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=10321#include<stdio.h>2#include<stdlib.h>3#include<string.h>4#defineMAX_LEN1000000156__int64count=0;7__int64Geted[MAX_LEN]={0};8910voidswap(__int64&a,__int64&b)11{12__int64temp=a;13a=b;14b=temp;15}1617voidGetMaxL(__int64n)18 阅读全文
posted @ 2012-05-20 16:08 有间博客 阅读(191) 评论(0) 推荐(0) 编辑
摘要: XTU热身赛出的题。本来这次比赛可以多些几道的,可惜脑袋浆糊掉了。。以后要更加努力,希望能超过师兄,师姐们啊。言归正传:这道题首先一看,它就是一道搜索题。搜索题:一般无外乎两种方法 1、DFS。2、BFS。想了想DFS只要用一个标记pre[maxn][maxn]的数组记录前一个坐标的方向就行,如果和前面不同则step++。后来果断超时。于是想起了BFS,怎么去判断它是否转弯呢?一个方向搜到底,到底时换方向的时候拐弯数加一,那么出队再拓展路径的时候拐弯数肯定也要加一,因为与这个点在一条直线上的点已经全部入队了。于是就有了下面的代码:#include<iostream>#include 阅读全文
posted @ 2012-05-20 15:01 有间博客 阅读(204) 评论(0) 推荐(0) 编辑
  2012年5月18日
摘要: 给定两个点:typedef struct { double x, y;} Point;Point A1,A2,B1,B2;首先引入两个实验:a.快速排斥实验设以线段A1A2和线段B1B2为对角线的矩形为M,N;若M,N 不相交,则两个线段显然不相交;所以:满足第一个条件时:两个线段可能相交。b.跨立实验如果两线段相交,则两线段必然相互跨立对方.若A1A2跨立B1B2,则矢量( A1 - B1 ) 和(A2-B1)位于矢量(B2-B1)的两侧,即(A1-B1) × (B2-B1) * (A2-B1) × (B2-B1)<0。上式可改写成(A1-B1) × (B 阅读全文
posted @ 2012-05-18 20:35 有间博客 阅读(4417) 评论(0) 推荐(1) 编辑
摘要: 典型的BFS加状态的问题,题目很好理解,只不过打印路径这里困扰了我许久。不过经过不懈的努力终于AC了。 泪奔。。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026存在的问题:1、这道BFS可以不需要做标记,而我之前从来没接触过,所以理解起来较慢。2、遇到了打印路径的题就懵了,怎么去打印路径困扰了很久。3、老问题,BFS和DFS的精髓没理解透。小技巧:1、直接搜索如果Mintime[xx][yy] > Mintime[x][y] + w 的话则替代,而且需要把整个迷宫都搜索一遍。。2、由于是搜索整个迷宫,所以方向数组的定义可以为:cons 阅读全文
posted @ 2012-05-18 11:52 有间博客 阅读(217) 评论(0) 推荐(0) 编辑
  2012年5月16日
摘要: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0例如:10100001^00010001=101100000^0=0,0^1=1 0异或任何数=任何数1^0=1,1^1=0 1异或任何数-任何数取反任何数异或自己=把自己置0(1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。 10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6(2)通过按位异或运算,可以实现两个... 阅读全文
posted @ 2012-05-16 19:10 有间博客 阅读(21673) 评论(0) 推荐(1) 编辑
  2012年5月15日
摘要: /*deque:是一个double-endedqueue, 1)支持随即存取,也就是[]操作符, 2)支持两端操作,push(pop)-back(front),在两端操作上与list效率差不多 因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则: 1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector 2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list 3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。*/#include<iostream>#include<deque>usi 阅读全文
posted @ 2012-05-15 21:51 有间博客 阅读(12685) 评论(0) 推荐(2) 编辑
摘要: spfa经过deque(双向队列)优化后的模板//C#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<ctype.h>#include<time.h>//C++#include<iostream>#include<algorithm>#include<queue>#include<vector>#include<map>#include<list> 阅读全文
posted @ 2012-05-15 21:32 有间博客 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 递归:intBinSearch(intArray[],intlow,inthigh,intkey/*要找的值*/){if(low<=high){intmid=(low+high)/2;if(key==Array[mid])returnmid;elseif(key<Array[mid])returnBinSearch(Array,low,mid-1,key);elseif(key>Array[mid])returnBinSearch(Array,mid+1,high,key);}elsereturn-1;}非递归:intBinSearch(intArray[],intSizeO 阅读全文
posted @ 2012-05-15 19:44 有间博客 阅读(281) 评论(0) 推荐(0) 编辑
  2012年5月12日
摘要: 一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的特点是"搜到就是最优解", 而深搜用于找多个解或者是"步数已知(好比3步就必需达到前提)"的标题,它的空间效率高,然则找到的不必定是最优解,必需记实并完成全数搜索,故一般情况下,深搜需要很是高效的剪枝(优化).像搜索最短路径这些的很显著若是用广搜,因为广搜的特征就是一层一层往下搜的,保证当前搜到的都是最优解,当然,最短路径只是一方面的操作,像什么起码状态转换也是可以操作的。深搜就是优先搜索一棵子树,然后是另一棵,它和广搜对比,有着内存需要相对较少的所长,八皇后标题就是典范楷模的操作,这类标 阅读全文
posted @ 2012-05-12 20:19 有间博客 阅读(7659) 评论(0) 推荐(3) 编辑