学习笔记
RIPwangh
山东理工大学本科学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
背包之01背包、完全背包、多重背包详解
首先说下动态规划,动态规划这东西就和递归一样,只能找局部关系,若想全部列出来,是很难的,比如汉诺塔。你可以说先把除最后一层的其他所有层都移动到2,再把最后一层移动到3,最后再把其余的从2移动到3,这是一个直观的关系,但是想列举出来是很难的,也许当层数n=3时还可以模拟下,再大一些就不可能了,所以,诸如递归,动态规划之类的,不能细想,只能找局部关系。 1.汉诺塔图片 (引至转载 2015-08-21 16:24:03 · 856 阅读 · 0 评论 -
java 的知识点
1. 多组输入 Scanner reader = new Scanner(System.in); while( reader.hasNext()) // 相当于 scanf("~scanf()");原创 2016-03-11 09:14:43 · 552 阅读 · 0 评论 -
C++文件的操作
#include #include #include #include #include #include using namespace std; int main()///对ASCLL文件的操作 { int a[10]; ofstream outfile("f1.dat",ios::out); if(!outfile) {原创 2015-12-03 16:40:48 · 767 阅读 · 0 评论 -
二叉树的遍历--递归和非递归
PS:数据结构老师让写下二叉树的后序遍历的非递归算法,结果把所有的都写了一下 CODE #include #include #include #include #include #include using namespace std; typedef struct Binode { char data; struct Binode *l, *r; }; typedef st原创 2015-10-29 20:06:28 · 554 阅读 · 0 评论 -
二分————
int mid; int x = 0, y = n-1; bool flag = 0; while(x { mid = x+(y-x)/2; if(ls[mid] == key) {原创 2015-09-22 19:44:02 · 552 阅读 · 0 评论 -
CodeBlocks中程序的多文件组织
一个程序只有一个main函数的时候过去了,我们有了自定义函数。 一个程序只用一个文件的时候也要过去了。当一个程序中的函数多起来时(main函数只能有一个,自然是具有一定规模的项目中要有不少自定义函数),需要将这些函数分门别类地存储到不同的文件中去。 这样组织的程序是易于管理和维护的。 本文讲在CodeBlocks中如何进行程序的多文件组织。 文后有本文示例的代码。从资源中下转载 2015-09-21 22:30:31 · 768 阅读 · 0 评论 -
UVALive 7004-10.1训练赛
题意: 就是给你一个点p,再给你几个多边形的顶点,让你去判断在多边形的边上,还是内部,还是外边 模板题 CODE #include #include #include #include #include using namespace std; const double eps = 1e-8; const double PI = acos(-1.0); int sgn(d原创 2015-10-07 21:24:43 · 483 阅读 · 0 评论 -
随机数
#include #include #include using namespace std; int main() { double random(double,double); srand(unsigned(time(0))); cout << int(random(0,50))<< endl; return 0; } double rando原创 2015-10-06 16:09:42 · 449 阅读 · 0 评论 -
快次幂
#include #include #include using namespace std; const int MOD=1e9+7; void solve(int n) { long long ans=1; long long a=2; while(n) { if(n&1) { ans=(ans%MOD*原创 2015-10-07 10:46:07 · 650 阅读 · 0 评论 -
STL-set-用法
set的各成员函数列表如下: c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器 c++ stl容器set成员函数:clear()--清除所有元素 c++ stl容器set成员函数:count()--返回某个值元素的个数 c++ stl容器set成员函数:empty()--如果集合为空,返回true c++ stl容器set成员函数:end()--返回指向最后原创 2015-10-05 20:35:01 · 810 阅读 · 0 评论 -
矩阵快速幂---递推题的快速计算
昨天晚上矩阵小王子给我们讲了一下矩阵快速幂,学习了一下,写了一个模板。 PS:原创链接 1:思想 矩阵快速幂的思想就是跟数的快速幂一样,假如我们要求2^11,次方,我们可以把 11 写成 1+2+8 ,也就是2^0 + 2^1 + 2^3 。那么把一个O(n)的时间复杂度降到了log(n) 矩阵快速幂的思想和数的快速幂是一模一样的,就是要自己实现矩阵的乘法,然后可以套数的快速幂的模转载 2015-10-07 10:53:21 · 642 阅读 · 0 评论 -
poj-3041-Asteroids -二分图的最大匹配
Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), which are conveniently locate原创 2015-08-07 09:18:04 · 669 阅读 · 0 评论 -
二分图--最大匹配
二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 二分图的最大匹配: 匈牙利算法 完美匹配: 如果所有点都在匹配边上,称这个最大匹配是完美匹配。 最小覆盖: 最小覆盖要求用最少转载 2015-08-07 10:29:13 · 691 阅读 · 0 评论 -
字符串哈希函数
基本概念 所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2)。 设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m>=n,如果对于不同的key1,key2属于X,有h(key1)!=h(key2),那么称h为完美哈希函数,当m=n时,h称为最小完美哈希函数(这个时候就是一一映射了)。 在处理大规模字符串数据时,转载 2015-08-12 11:25:17 · 664 阅读 · 0 评论 -
最小生成数
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. 求最小生成树的算法 (1) 克鲁斯卡尔算法 图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间. (2) 普里姆算法 图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续转载 2015-07-27 11:16:16 · 771 阅读 · 0 评论 -
SDUT-3302-效率至上-RMQ||线段树
RMQ: 可以去寻找一个区域中的最小的值 那样也可以去寻找最大的值啊 RMQ #include #include #include #include #include using namespace std; int mn[51000][50]; int mx[51000][50]; int ls[51000]; int n, m; void RMQ_min()///小的 {原创 2015-08-29 11:16:23 · 1130 阅读 · 0 评论 -
优先队列的结构体排序-重载运算
#include #include #include #include #include #include #include #define mod 100100 using namespace std; struct node { int x, y; bool operator { return x>a.x;//最小值优先原创 2015-08-27 19:29:12 · 1743 阅读 · 0 评论 -
处理阶乘问题
处理阶乘有三种办法: (1) 传统意义上的直接递归,n的规模最多到20+,太小了,在本题不适用,而且非常慢 (2) 稍快一点的算法,就是利用log()化乘为加,n的规模虽然扩展到1000+,但是由于要用三重循环,一旦n规模变得更大,耗时就会非常之严重,时间复杂度达到O(n*m*(n-m)),本题规定了n,m用unsigned int32类型,就是说n,m的规模达到了21原创 2015-08-26 10:01:30 · 1554 阅读 · 0 评论 -
KMP
#include #include char s[1000050],t[1000050]; int next[1000050]; void getnext() { int i=0,j=-1; next[0]=-1; while(t[i]!='\0') { if(j==-1||t[i]==t[j]) {原创 2015-08-11 11:17:38 · 432 阅读 · 0 评论 -
HDU 3729-I'm Telling the Truth-周赛4补题-二分图最大匹配-邻接表
题意: 新学期开学,老师想知道各个同学的分数,同学们不想把自己的真实分数告诉老师,只和老师说自己的排名在哪个范围内,有些同学和老师说的数据是不真实的,现在让你找到说的信息是真的同学的数目和序号,有多种情况要选择序号字典序大那种,注意,每个排名只有一个同学 思路: 二分图的最大匹配; 要注意是要字典序大的,所以要反着搜 CODE #include #include原创 2015-08-24 10:12:56 · 642 阅读 · 0 评论 -
为什么计算机采用二进制而不是八进制或者十六进制
电子计算机能以极高速度进行信息处理和加工,包括数据处理和加工,而且有极大的信息存储能力。数据在计算机中以器件的物理状态表示,采用二进制数字系统,计算机处理所有的字符或符号也要用二进制编码来表示。 用二进制的优点是容易表示,运算规则简单,节省设备。人们知道,具有两种稳定状态的元件(如晶体管的导通和截止,继电器的接通和断开,电脉冲电平的高低等)容易找到,而要找到具有10种稳定状态的元件来对应十进制的转载 2015-08-21 13:59:43 · 9225 阅读 · 0 评论
分享