自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (3)
  • 收藏
  • 关注

转载 位运算

(1)、按位与(&),将两个操作数化为二进制后并将对应的每一位分别进行逻辑与操作。(a%(2^n)=a&(2^n-1))(2)、按位或(|),将两个操作数化为二进制后并将对应的每一位分别进行逻辑或操作。(3)、按位异或(^),和以上同,异或是指对应位相同则运算结果为0,否则为1。(4)、按位取反(~),对每一位进行取反。(求x的相反数:x=(~x+1))(5)、移位

2013-11-29 20:04:47 734

原创 hdu1885(状态压缩)

题目链接:hdu1885刚刚做了hdu1429那道题,这两道题一样的方法#include#include#include#include#include#define MAXN 105using namespace std;char map[105][105];bool v[105][105][20];const int d[4][2] = {{0,-1},{1,0},{

2013-11-25 20:35:11 946

原创 hdu1429(BFS+状态压缩)

题目链接:hdu1429思路:要用二进制的方法表示钥匙的数量及种类,0表示没钥匙,1表示钥匙a,10表示钥匙b,100表示钥匙c。。。。。11表示钥匙b和a,101表示钥匙c和a(用二进数可以表示多枚钥匙)。。。判断时只需用位运算&即可#include#include#include#include#include#define MAXN 105using namesp

2013-11-25 19:42:51 985

原创 hdu1026(BFS,打印路径)

题目链接:hdu1026思路:用BFS搜,用数组dir[i][j]记录该点是由哪一个方向上的点遍历过来的,v[i][j]记录是否在该点上遇到怪物。BFS搜索完以后,再由终点向起点搜,同时打印路径#include#include#include#include#define MAXN 105using namespace std;char map[MAXN][MAXN];int

2013-11-24 16:07:35 1166

原创 hdu1175连连看(BFS)

题目链接:hdu1175BFS和DFS都可以解决这道题目#include#include#include#include#define MAXN 1005using namespace std;int map[MAXN][MAXN],v[MAXN][MAXN];const int dx[4] = {0,1,0,-1};const int dy[4] = {-1,0,1,0}

2013-11-21 15:57:54 1708

原创 hdu1297Children’s Queue(递推+大数)

题目链接:hdu1297一个长度n的队列可以看成一个n - 1的队列再追加的1个小孩,这个小孩只可能是:a.男孩,任何n - 1的合法队列追加1个男孩必然是合法的,情况数为f[n - 1];b.女孩,在前n - 1的以女孩为末尾的队列后追加1位女孩也是合法的,我们可以转化为n - 2的队列中追加2位女孩;一种情况是在n - 2的合法队列中追加2位女孩,情况数为f[n - 2];

2013-11-21 13:27:42 1084

原创 hdu2717Catch That Cow(简单BFS)

题目链接:hdu2717简单BFS,水题一个。。。#include#include#include#include#define MAXN 100005using namespace std;int map[MAXN];int d[2] = {1,-1};int n,begin,end,flag;struct node{ int x; int step;

2013-11-18 19:24:17 926

原创 hdu1072 Nightmare(优先队列,BFS)

题目链接:hdu1072需要注意的是重置点只能走一次#include#include#include#include#define MAXN 10using namespace std;int map[MAXN][MAXN];int d[4][2] = { {-1,0},{0,-1},{1,0},{0,1} };int n,m,begin_x,begin_y,end_x,e

2013-11-18 16:06:16 1212

原创 hdu2276Kiki & Little Kiki 2(矩阵)

题目链接:hdu2276题意:给出n个灯,这n个灯成一个圆环,求m次变换每个灯的状态,变换的规则是:如果第i个灯左边的灯是亮着的,那么改变这个灯的状态(打开或者关掉),否则的话不变思路:变换后第a[i]个灯的状态由变换前 a[i]和a[i+1]这两个灯的状态决定,可以得出a[i] = (a[i]+a[i-1])%2那么,接下来就可以用矩阵的方法解决|1 0 0 0 ... 1  1

2013-11-18 08:28:22 1121

原创 hdu1195Open the Lock(BFS)

题目链接:hdu1195思路:BFS,对于每个数每次有11种操作,千位和百位交换,百位和十位交换,十位和个位交换,千位加一或减一,百位加一或减一,十位加一或减一,个位加一或减一,将每次操作得到的数与目标数进行对比,同时用数组v[]进行标记,已出现过的数不再压入队列中#include #include #include #include #include #include #in

2013-11-16 10:20:44 1222

原创 hdu2842(矩阵)

题目链接:hdu2842题意是让求把n个环拆下来需要的最少步数思路:如果要拆第n个环,那么第n-1个环就必须在竿上,前n-2个环都必须已经被拆下;假设f(n)表示拆第n个环需要的最少步数,那么拆第n个环的时候,第n-1个环在竿上,前n-2个环已经被拆下,那么f(n) = f(n-2)+1,加1是因为拆环的时候需要一步,接下来只剩下第n-1个环了,拆第n-1个环时,第n-2个环必须在竿上,那

2013-11-15 17:09:04 1001

原创 hdu3117(斐波那契数列+矩阵快速幂)

题目链接:hdu3117大意是让输出斐波那契数列的f(n)的前4位和后4位,如果不足8位直接输出就行了求后4位的方法就是用矩阵快速幂的方法,求前4位----->解法斐波那契数列的前39个数的位数都小于等于8,f(40)的位数为9#include #include #include #include #include #include using namespace st

2013-11-14 21:55:05 1078

原创 hdu1568(斐波那契数列通项公式)

题目链接:hdu1568一道数学题。。。被数学完虐了。。。。先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432,那么 log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7log10(1.0234432)就是log10(10234432)

2013-11-14 21:19:55 1705

原创 hdu2604(递推,矩阵快速幂)

题目链接:hdu2604这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式)可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS:在别的博客粘过来,暂时还不太理解。。。)设f(n)为字符串长度为n时复合条件的字符串个数,以字符串最后一个字符为分界点,当最后一个字符为m时前n-1个字符没有限制,即为f(n-1);当最后一个

2013-11-14 18:10:15 1542

原创 hdu 1757(矩阵)

题目链接:hdu1757思路:首先,矩阵乘法具有结合律,即矩阵A*B*C = A*(B*C)本题 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10)构造的矩阵如下:                                                  A

2013-11-12 19:36:52 1211

原创 hdu1575(矩阵乘法快速幂)

题目链接:hdu1575题目大意:给一个矩阵A,求出A^k,结果对9973取余思路:矩阵乘法矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。我们可以得到这样的结论:当n为偶数时,A^n = A^(n/2) * A^(n/2);当n为奇数时,A^n = A^(n/2) * A^(n/2) * A (其中n/2取整)。

2013-11-12 14:29:46 930

原创 二分查找求上、下界

最近比赛很多题目都用到了二分,主要考察的就是二分查找求上下界。二分很方便,也很常用,学好二分很有必要。二分的思想就不赘述,相信每个人明白,值得注意的就是二分查找求上下界。二分查找:int pow(int *a,int n,int t)//二分查找{ int low = 0, high = n; while(low < high) { int

2013-11-09 20:59:51 1855 1

原创 poj1308 (并查集)Is It A Tree?

题目链接:poj1308题目的要求是让判断给出的点能否连接成一颗树,一棵树的话就只有一个树根,同时一个子节点不能同时拥有两个父亲,解法是用并查集,用father数组来记录每个节点的父节点,v数组来记录是否输入了节点。#include #include #include #include #include #include using namespace std;int f

2013-11-03 14:26:50 957

c#课程设计

c#课程设计:计算器,五子棋,贪食蛇,职工信息管理系统等

2014-06-27

上海交大ACM final选手模板

上海交大ACM竞赛 final选手模板,ACM能用到的各种算法基本都有

2014-06-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除