2017年9月13日

摘要: 本题题意: 输入一个n*m的棋盘,某些格子有标记,用最少的皇后占据或者攻击所以带标记的格子。皇后的攻击范围为同行同列和同对角线。 可以使用IDA*算法,即从样例可以发现只需要最多5个棋子就可以对棋盘上所有地方进行攻击,因而使用IDA*进行对应的剪枝即可。 阅读全文
posted @ 2017-09-13 22:22 sapphirebitter 阅读(355) 评论(0) 推荐(0)

2017年9月5日

摘要: 本题代码如下: 阅读全文
posted @ 2017-09-05 22:19 sapphirebitter 阅读(519) 评论(0) 推荐(0)
 
摘要: IDA*算法实质就是迭代加深搜索和A*算法的结合,通过迭代加深搜索来寻找答案,借由预估函数h()来进行估计与剪枝。 本题主框架如下: 由1开始不断加深最大深度,如果当前深度+需要到达目标的步数>最大深度时,则剪枝,需要达到目标的步数可以用函数h()表示,其返回值和计算方法由具体问题确定,本题中则是中 阅读全文
posted @ 2017-09-05 21:22 sapphirebitter 阅读(286) 评论(0) 推荐(0)

2017年8月30日

摘要: <<表示左移,如a<<1表示将a的二进制左移一位,加一个0,&0xff表示取最后8个字节,如a&0xff表示取a表示的二进制中最后8个数字组成一个新的二进制数,| 运算符表示对2个数的二进制位进行比较,只要2个之中有一个这个位是1,则2者进行或运算之后得到的那个二进制数相应的位也是1。 因此,可以将 阅读全文
posted @ 2017-08-30 17:15 sapphirebitter 阅读(221) 评论(0) 推荐(0)

2017年8月17日

摘要: 素数判定的模板题,运用米勒-罗宾素数判定,然后用Pollard_Rho法求出质因数。使用相应的模板即可,不过注意存储质因子的数组需要使用vector,并且使用long long类型存储,不然存储不下,而且输出最下的质因子时,需要写个迭代器进行查询。 完整代码如下: 其中米勒-罗宾判断法模板如下: P 阅读全文
posted @ 2017-08-17 17:19 sapphirebitter 阅读(299) 评论(0) 推荐(0)

2017年8月16日

摘要: #include #include using namespace std; const int maxn=2,mod=1000000007; struct Matrix { long long mat[maxn][maxn]; Matrix operator*(const Matrix& m)const///重载*运算符,使其能进行矩阵相乘的运算 ... 阅读全文
posted @ 2017-08-16 11:33 sapphirebitter 阅读(252) 评论(0) 推荐(0)
 
摘要: 其中k为任意质因子,因为a的数值不确定,所有k的值可以任意选择。 以下代码用于求出m!: 阅读全文
posted @ 2017-08-16 10:45 sapphirebitter 阅读(617) 评论(0) 推荐(0)
 
摘要: LL Pollard_Rho(LL n, LL c) { LL x, y, d; LL i = 1, k = 2; x = y = rand() % n; do { i++; d = gcd(n + y - x, n); if(d > 1 && d = n) t = Pollard_Rho(n, ra... 阅读全文
posted @ 2017-08-16 10:09 sapphirebitter 阅读(307) 评论(0) 推荐(0)
 
摘要: #include using namespace std; /** //普通快速幂 LL pow_mod(LL a, LL x, LL p) { LL res = 1; while(x) { if (x & 1) res = (unsigned long long)res * a % p; x >>= 1; a = (unsign... 阅读全文
posted @ 2017-08-16 10:07 sapphirebitter 阅读(303) 评论(0) 推荐(0)
 
摘要: #include<bits/stdc++.h>包含了C++里面所有的库函数,因此在写任何程序的时候只需要加上#include<bits/stdc++.h>即可。 阅读全文
posted @ 2017-08-16 09:07 sapphirebitter 阅读(800) 评论(0) 推荐(0)