算法
ilblue
一个人并不是生来要给打败的,你尽可以把我消灭掉,可就是打不败我。
展开
-
动态规划——数位dp入门(二)
对数字整体进行考虑的处理方法较为简单的数位dp只会涉及到每一位上的数字变化,如比较相邻数字差,是否含有某个数字等等,在这种情况下一般用dp【i】【j】就可以,i表示数字长度,j用来表示首位数字。如果题目要求对数字整体进行考虑,我们不能对各个位置上的数直接判断,就需要对每位之前判断过的数进行记忆化存储。原创 2016-10-09 20:04:36 · 453 阅读 · 0 评论 -
DSP程序优化方法
1、选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。 在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索转载 2017-03-30 21:50:19 · 1019 阅读 · 0 评论 -
求逆元的几种方法
http://blog.csdn.net/xwxcy/article/details/51493193(数学渣,下面的文字可能有误,欢迎指教)乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广。记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(mod p)加减乘与模运算的顺序交换不会影响结果,但是除法不行。有的题目要求结果mod一个大质转载 2017-01-31 15:29:17 · 13373 阅读 · 0 评论 -
RMQ
1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。2.RMQ算法对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大转载 2017-02-17 19:38:59 · 231 阅读 · 0 评论 -
打素数表高效方法(线性)
#include#include#include#includeusing namespace std;bool visit[10100000];//将是素数的数标记为1(注:从0开始,0,1也被标记了)int prime[1000000];//将素数依次存入(从下标1开始存)int init_prime(int number){ memset(visit, true,原创 2016-11-25 21:22:38 · 446 阅读 · 0 评论 -
优先队列入门
C++ Priority_Queue(优先队列)优先队列是一种具有优先级的队列,对常规的队列取值是基于先进先出的顺序,而在优先队列中,选择具有了优先性。原创 2016-10-02 14:49:05 · 1189 阅读 · 0 评论 -
poj 2002 (hash map)
SquaresTime Limit: 3500 MSMemory Limit: 65536 KB64-bit integer IO format: %I64d , %I64u Java class name: Main[Submit][Status][Discuss]DescriptionA square is a 4-sided polygon who原创 2016-11-16 20:13:26 · 299 阅读 · 0 评论 -
矩阵 快速幂 (转载)
矩阵 快速幂矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。这里先对原理(主要运用了矩阵乘法的结合律)做下简单形象的介绍:一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次幂。但做下简单的改进就能减少连乘的次数,方法如下:把n个矩阵进行两两分组,比如:A*A*A*A*A*A => (A*转载 2016-10-16 20:22:09 · 264 阅读 · 0 评论 -
数据结构字符串匹配——KMP算法
传统的字符串匹配1.思路:重头开始,依次将主串与次串相比较。如果相同则比较主串与次串的下一个字符;如果不同,则回溯至之前主串比较的后一个字符,再与次串进行一对一比较,直至主串比完。2.代码实现:#include#include#include#includeusing namespace std;int main(){ char name1[100] = {"原创 2016-10-19 21:45:31 · 847 阅读 · 0 评论 -
BFS广度优先搜索——入门
BFS——广度优先搜索广度优先搜索是通过对图的完全遍历来达到要求的点的算法。其对图的遍历是如同波浪一样,每层按照制定的方式一层一层向下搜。如:5542552423423441411267534在以3为原创 2016-10-26 21:03:57 · 5203 阅读 · 0 评论 -
HDU 3555 Bomb题解(数位dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555题意:求范围内含有49的数的个数。思路:用dfs写的,也可以正常写,如dp(一)中那样。#include#include#includeusing namespace std;long long dp[30][2];int num[30];long long shu[20原创 2016-10-11 20:49:12 · 332 阅读 · 0 评论 -
HOJ 1983 Beautiful numbers (数位dp)
HOJ 1983 Beautiful numbers (数位dp)链接:http://acm.hit.edu.cn/hoj/problem/view?id=1983题意:求范围内的美丽数的个数,美丽数--------能被其每个数位上的数整除。思路:和dp(一)有点类似,由于要是每位数的倍数,而各位数可能是0-9的任意一个,因此最坏情况是2-9所有数的公倍数(0,1不考虑),即2520.原创 2016-10-11 21:08:43 · 515 阅读 · 0 评论 -
动态规划——数位dp入门(一)
动态规划——数位dp(入门)数位dp一般用来解决:求在某一数据范围内的满足某项特征的数的个数这类问题。在dp数组中,一般第一项i用于表明原创 2016-10-05 19:33:53 · 786 阅读 · 0 评论 -
拓扑排序的原理及其实现(转)
原文:http://blog.csdn.net/dm_vincent/article/details/7714519本文将从以下几个方面介绍拓扑排序:拓扑排序的定义和前置条件和离散数学中偏序/全序概念的联系典型实现算法Kahn算法基于DFS的算法解的唯一性问题实际例子取材自以下材料:http://en.wikipedi转载 2017-05-15 20:06:37 · 562 阅读 · 0 评论