- 博客(19)
- 收藏
- 关注
原创 hdu 1098
FatMouse and Cheese 题意: 一个n * n的二维图,从最左上角出发,一次最多水平或者竖直的走k步,然后经过比他大的点,求加上所有经过的权之后最大的值;思路: 知道起点,但不知道终点,记忆化搜索的时候就是以这个点作为输出点,从后往前推;PS:记忆化搜索的时候一定不能在中间改变dp的值,只能在最后改;#include#inclu
2017-03-31 19:58:26 234
原创 UVA 11584
Partitioning by Palindromes题意: 在一个字符串中找到最少能组成几个回文串思路:dp[i]数组代表前i个字符组成的最少的回文串。递推式为:递推式:dp[i] = if(j+ 1 ~ i是回文)min(dp[j] + 1,dp[i]); j 判断回文的时候用一个k表示回文的中间变量,然后向两边延伸; 复杂度为(n ^ 2)#inclu
2017-03-31 14:32:46 199
原创 POJ3186
Treats for the rows题意:给一个数组,然后只能把数组两端的数取出来,然后乘以这是第几次取出的数,然后相加,问取完之后,最大的值为多少?思路:用一个二位dp数组,dp[i][j],表示的是剩下的i ~ j的这段数组,其他的数都取完了,所以当i == j 的时候就把所有的数取完了; 推出的递推式为: dp[i][j] = max(dp[i - 1][j]
2017-03-31 11:15:19 326
原创 LCA 学习
学习了LCA的两种解法:用RMQ 和 trajan离线解法现讲一下离线解法:个人觉得这个解法就是从根节点开始DFS,然后到达底部之后再回溯,回溯的时候在把一个一个的点加入并查集,这样的话保证的是在找到两个点之前不会把他们的lca的祖先压入并查集,至于到底是怎么回溯的,引用: 0 | 1
2017-03-29 16:03:06 358
转载 线段树的区间更新
先介绍一下思想:转载自:http://blog.csdn.net/acceptedxukai/article/details/6933446感觉这个大佬说的思想很不错:给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c。需要用到线段树的,update:成段增减,query:区间求和介绍Lazy思想
2017-03-26 10:59:53 319
原创 线段树学习
线段树的根节点从1开始。它的左子树的编号是2 * n,右子树为2* n + 1;经典例题:hdu1166 敌兵布阵#includeusing namespace std;const int maxn = 50000 + 10;typedef long long ll;struct Tree{ int l; int r; ll sum;}tree[maxn * 4];
2017-03-17 18:42:17 201
转载 set--常见成员函数及基本用法
转载自:http://www.cnblogs.com/zyxStar/p/4542835.htmlc++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。 c++ stl集合set介绍 c++ stl集合(Set)是
2017-03-12 10:49:41 509
原创 排列组合初步学习
排列:从N个不同物体中不重复取出r个做排列:A(n,r):int mya(int n,int r){ int sum = 1; for(int i = n; i >= r; i --) sum *= i; return sum;}组合:从n个不同物体中不重复取出r个组合:C(n,r),这个模板不错:int myc(int n,int c){
2017-03-11 16:44:03 1138
原创 hdu5878 dfs
http://acm.hdu.edu.cn/showproblem.php?pid=5878题意: 对于一个n,找到一个的数刚好大于等于n数,输出;数据范围10e9;dfs打表,为了避免出现2 * 2 * 3 * 2 2 * 2 * 2 * 3重复的情况,打表的时候注意技巧之后二分;#include #include #include #includ
2017-03-11 11:45:16 281
转载 poj1811(pollard-rho求一个大数(64位)的最小因子)
poj 1811 Prime Test题意:给定一个64位整数,问是否为质数,如果不是,则输出其最小因子。分析:经典题!!数学题miller_rabbin素数判定。若不是,则pollard_rho分解质因子,找到最小即可。Miller-rabinMiller-rabin算法是一个用来快速判断一个正整数是否为素数的
2017-03-09 19:24:58 1988
原创 Miller-rabin判定素数
转载自http://www.cnblogs.com/vongang/archive/2012/03/15/2398626.html·Wilson 定理 对于给定的正整数 n,判定 n 是一个素数的充要条件是 (n-1)!≡ -1(mod n)下面开始说Miller-Rabin测试: 费马小定理:对于素数p和任意整数a,有ap ≡ a(mod p)
2017-03-09 18:43:09 374
原创 梅森素数的判定(Lucas-Lehmer判定法 和 miller - Rabin 判定法)
Mp = 2^p-1 且 p是素数,称为梅森数,若Mp是素数则称为梅森素数。Lucas-Lehmer判定法 判定一个数是否为梅森素数 效率足够高,如果题目特意为梅森素数设计,会卡复杂度,那么套用此方法即可。算法复杂度为O(p^3)。关于卢卡斯-莱默算法参考http://blog.csdn.net/cFarmerReally/article/details/52153410?
2017-03-09 18:42:21 4402
转载 C语言 全局变量和局部变量的大小限制
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。下午做最长公共子序列的时候遇到的问题,问了felix后恍然大悟...看代码#include int main(){int a[1000000];//局部变量return 0;}编译运行后发现溢出错误。#include int a[1
2017-03-08 15:13:19 797
转载 c++ 的用 new 和delete 进行二维数组动态内存的创建和删除
1.数组指针 A (*ga)[n] = new A[m][n]; ... delete []ga;2.二级指针 A** ga = new A*[m]; for(int i = 0; i < m; i++) ga[i] = new A[n]; ... for(int i = 0; i < m; i++)
2017-03-06 15:02:22 3572
原创 初等数论之算术基本定理
定理: 每个大于1的正整数n都可以被唯一地表示成素数的乘积; n的分解式n = p1 ^ a1 * p2 ^ a2 * p3 ^ a3 ……* pk ^ ak;其中p1,p2,……pk是素数,p1 性质如下: 1. d(n) = (a1 + 1) * (a2 + 1) * (a3 + 1) *……*(ak + 1) ,为n的正因子的数目; 2.$(n)
2017-03-05 20:35:09 1086
原创 uva 548 (二叉树)(不知数的多少进行数的一整行输入)
https://vjudge.net/problem/19105/origin题意:给出一个中序遍历和一个后序遍历,构建树,然后求出从根节点到哪个叶子节点的值最小;思路: 题并不难,主要是不知道数的数目进行数的一整行输入;实现数的一整行输入:代码可以写成:int ReadLine(T* data_array) { string str_line; i
2017-03-05 15:53:25 287
原创 hdu3999二叉排序树
https://vjudge.net/problem/22959/origin题意及思路: 构建二叉排序树 并输出它的前序遍历;#include #include #include#include #include #include #includeusing namespace std;typedef long long ll;#define INF 0
2017-03-05 14:49:27 885
原创 C++的一些输入有关函数
学习C++的同学可能都会遇到一个getline()函数,譬如在C++premer中,标准string类型第二小节就是“用getline读取整行文本”。书上给的程序如下:int main(){ string line: while(getline(cin,line)) cout return 0;}大家会发现运行时怎么也跳不出循环,甚至会发生各
2017-03-05 10:01:00 270
原创 搜索题解
Prime Path 题意: 求一个素数 a 变换到 一个素数b 的最小次数变换规则为:变换数的一个数位,然后使得变换后的数为素数;思路: 这个能想到用bfs真是神奇,先把一个数的数位用一个数组记录,然后对其中的一个数位进行更改,然后判断更改后的数是否为素数,是的话入队; 因为一次只能对一个数位进行操作,所以每次进行更改位上的数的时候记录一下,之后
2017-03-02 19:54:03 201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人