- 博客(36)
- 收藏
- 关注
原创 Django——Xadmin中的功能
verbose_namemenu_grouplist_displaylist_filterapp_labelexcludeform
2018-06-13 14:46:53
7403
1
原创 Oracle常用语句
一、建立一个用户xiaoming ,密码a1234,授予xiaoming 创建视图的权限。 create user xiaoming identified by a1234; grant create view to xiaoming;二、建立student表,该表主要描述学生的学号,姓名,出生日期,性别,院系编号。create table student (学号 nu
2015-08-19 22:37:15
610
原创 随机数
生成50个不重复的随机数(1-50之间)srand((int)time(0)); 或 srand(50); //产生0到49之间的随机数for(int i=0;i<50;i++){ int num=rand()%50+1; if(!vis[num]) { a[cnt++]=num; vis[num]=1; } els
2015-07-15 16:21:18
805
原创 容斥原理 HDU——1796 How many integers can you find
应用:求 |AUBUC|-->集合A,B,C中不重复元素的总个数。S={1,2,3......600} 求其中被2,3,5除尽的数的数目。另A,B,C分别表示S中被2,3,5除尽的数。|A|=600/2=300 , |B|=600/3=200 |C|=600/5=120|A交B|=600/(2*3)=100 |A交C|=600/(2*5)=60
2015-07-15 15:25:17
422
原创 快速幂模m HDU——1061 Rightmost Digit
a*b%m=((a%m)*b)%m题意:输入n,求n的n次方的最后一位。#include#include#include#define maxn 1010#define INF 0x3f3f3f3f__int64 quick(__int64 a,__int64 b,__int64 m){ __int64 ans=1; while(b) { i
2015-07-15 15:21:37
363
原创 素数打表 HDU——1262 寻找素数对
#include#include#include#include#includeusing namespace std;#define maxn 10010#define INF 0x3f3f3f3fint isprime[maxn];int main(){ __int64 i,j,n,m; for(i=0;i<maxn;i++) isprime[
2015-07-15 15:16:36
355
原创 素数打表
筛法求一定范围内的素数:#include#include#include#include#include#includeusing namespace std;#define maxn 10010#define INF 0x3f3f3f3fint prime[maxn],isprime[maxn];int main(){ __int64 i,j,n=0,m; f
2015-07-15 15:03:12
362
原创 多重背包
有N中物品和一个容量为V的背包,第i种物品最多有Mi件可用,每件耗费的空间是ci,价值wi,求解将哪些物品放入背包可使这些物品的耗费空间总和不超过背包容量且价值总和最大。设f[i,j]表示用了前i种物品填满容量为j的背包后,最多还剩下几个第i中物品可用,如果f[i,j]=-1,则说明这种状态不可行,若可行应满足0o(vn): f[0,1...v]=-1 f[0,0]=
2015-07-15 14:59:00
434
原创 完全背包 HDU——1114 Piggy Bank
给出空瓶重量和当前重量,给出硬币种类个数n,给出每种硬币的价值和重量,求瓶内至少含有多少钱。#include#include#include#include#includeusing namespace std;#define maxn 11111#define INF 2222222#define ma 600int p[ma],w[ma];int dp[maxn];i
2015-07-15 14:52:16
302
原创 完全背包 HDU——1248 寒冰王座
有N中物品和一个容量为V的背包,每种物品都有无限件可用,放入第i中物品所占的空间是ci,价值是wi,求解将哪些物品放入背包中可使这些物品的耗费空间总和不超过背包的容量,且价值总和最大。for(i=1;i for(v=ci;v f[v]=max(f[v],f[v-ci]+wi);在01背包中让v递减循环为了保证第i次循环中的状态f[i,v]是由状态f[i-1,v-ci
2015-07-15 14:35:34
4132
原创 01背包 HDU——2546 饭卡
先找出最大价格mx,然后让其他的做01背包,让其总和逼近m-5 如果m>=5 余额为 m-mx-dp[m-5]如果 m将最大数m与最后一位a[n]交换#include#include#include#include#include#include#define maxn 3010using namespace std;int c[maxn],dp[maxn];
2015-07-15 14:30:22
373
原创 01背包 HDU——1864 最大报销额
转化为整数扩大100倍处理//*为赋值抑制字符,表示本输入项对应的数据//读入后,不赋给相应的变量 如://scanf("%2d%*2d%3d",&a,&b); printf("%d\n%d\n",a,b); 输入123456789//则系统将读取12并赋给a 读取34但舍掉 读取567并赋给b 所以a=12 b=567//处理好输入后,将值存入f[]中并套用01背包#
2015-07-15 14:17:39
499
原创 01背包
题目:有N件物品和一个容量为V的背包,放入第i件物品耗费的空间是ci,得到的价值是wi,求解将哪些物品装入背包可使价值总和最大。特点:每种物品只有一件,可以选择放或不放。状态转移方程:f[i,v]=max(f[i-1,v],f[i-1,v-ci]+wi)如果不放第i件物品,那么问题就转化为前i-1件物品放入剩下容量为v-ci的背包中,价值为f[i-1,v-ci]+wi。o(vn)
2015-07-15 11:30:39
410
原创 最长上升子序列
如:3、1、5、7、2、6、8依次遍历整个序列,每一次求出从第一个数到当前这个数i的最长上升子序列,直至遍历到最后一个数字为止。然后取数组b中最大的那个即为整个序列的最长上升子序列。for(i=1;;i++)for(j=0;jif(i值>j值)判断是否 b[j]+1>b[i]如果是则 b[i]=b[j]+1;即 sum=max(b[i],b[j]+1);
2015-07-15 10:30:39
394
原创 字符串的比较、复制、连接、截子串、判断子串
strcmp:当比较string型的s和char型的str[ ] 时,strcmp(str,s.c_str())==0.strcpy:char a[20]; char c[ ]="i am a teacher" 把c复制到a中:strcpy(a,c);strcat:连接两个字符串,把后面的加到前面strstr:判断后一个是不是前一个的子串。substr:
2015-07-14 15:09:19
643
原创 KMP算法
有一个文本串s和一个模式串p,现在要查找p在s中的位置。KMP的算法流程: 假设现在文本串s匹配到i位置,模式串p匹配到j位置。 如果j=-1,或者当前字符匹配成功,即s[i]==p[j],都令i++,j++,继续匹配下一个字符。 如果j!=-1,且当前字符匹配失败,即s[i]!=p[j],则令i不变,j=next[j].此举意味着匹配失败是,模式串p相对于文本串
2015-07-14 14:48:10
482
原创 二分图及其匹配——匈牙利算法
相关概念:二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。最大匹配:图中包含边数最多的匹配称为图的最大匹配。完美匹配:如果所有点都在匹配边上,则称这个最大匹配是完美匹配。二分图匹配
2015-07-14 13:18:40
456
原创 每对顶点间的最短距离——floyd算法
Floyd算法用来找出每对顶点之间的最短距离,它对于图的要求是,可以是无向图也可以是有向图,边权可正可负,唯一的要求是不能有负环。 时间复杂度 o(n²) Floyd算法基于动态规划的思想,以u到v的最短路径至少经过前k个点为转移状态进行计算,通过k的增加达到寻找最短路径的目的。当k增加1时,最短路径要么不变,如果改变,必定通过第k个点,也就是说当起点u到第k个点的最短路径加上第k
2015-07-14 10:28:47
948
原创 单源最短路径 ——SPFA算法
求单源最短路径的SPFA算法在Bellman-Ford算法的基础上进行了改进,使其在能够计算带负权图的单源最短路径的基础上,时间复杂度大幅度降低。时间复杂度 O(k*e) k基本算法: 设立一个先进先出的队列来保存待优化的节点,优化时每次取出队首节点u,并且用u点当前的最短路径估计值对离开u点所指向的节点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列
2015-07-13 20:39:04
558
原创 单源最短路径——Bellman--Ford算法
Bellman--Ford算法可以处理路径权值为负数的单源最短路径问题。时间复杂度 o(n*m) 设想可以从图中找到一个环路,且这个环路中所有路径的权值之和为负。那么通过这个环路,环路中任意两点的最短路径就可以无穷小下去。如果不处理这个负环路,程序就会永远运行下去。而Bellman--Ford算法具有分辨这种负环路的能力。基本算法: Bellman--Ford算法基于
2015-07-13 20:24:05
767
原创 单源最短路径(Dijkstra)
Dijkstra算法基于贪心思想,计算一个节点到其他所有节点的最短路径。该算法要求图中不存在负权边。时间复杂度 O(n²)基本算法: 将图中所有的顶点V分成两个顶点集合Va和Vb。如果源点S到u的最短路径已经确定,则点u属于集合Va,否则属于集合Vb。最开始的时候Va只包含源点S,其余的点属于Vb,算法结束时所有由源点S可达的点属于Va,由源点S不可达的点扔留在Vb中。可以在
2015-07-13 19:35:48
514
原创 最小生成树(kruskal)
//最小生成树就是选出一些边,要求所有点连通,并且权和尽量小//最小生成树kruskal算法#include#include#include#include#include#include#includeusing namespace std;#define maxn 210int p[maxn];//并查集int n;//点数int m;//边数struct stu
2015-07-13 18:48:50
349
原创 Trie树(字典树)HDU——1251
又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串
2015-07-13 12:08:19
339
原创 哈夫曼树(最优二叉树)
给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小(所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度)称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则
2015-07-13 11:12:44
1197
原创 线段树HDU——1754(单点替换,区间最值)
HDU——1754 I Heat It//线段树功能:update:单点替换 query:区间最值//当ch为'Q'的时候,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。//当ch为'U'的时候,要求把ID为A的学生的成绩更改为B。#include#include#include#include#include#include#define
2015-07-13 11:01:31
330
原创 线段树HDU——1166(单点增减、区间求和)
应用:区间最值查询问题、区间求和 连续区间的修改或单点更新例题:HDU——1166敌兵布阵//线段树功能:add:单点增减 sum:区间求和#include#include#include#include#include#include#includeusing namespace std;#define maxn 201
2015-07-13 10:02:51
557
原创 BFS例题 ZOJ——1091 Knight Moves
例题:ZOJ——1091#include#include#include#include#include#include#include#includeusing namespace std;#define maxn 1010char aa[10],bb[10];int fx[8][2]={1,2,2,1,2,-1,1,-2,-1,-2,-2,1,-2,-1,-1,2};
2015-06-23 22:03:25
540
原创 树状数组(二维)例题 HDU2642——Stars
//输入B后输入坐标,表示对应的点的灯变亮//输入D后输入坐标表示对应的点灯灭//输入Q后输入一个矩形的左下角和右上角 输出矩形内亮着的等的个数//注:灯亮过不能再亮,灯关了不能再关,所以用数组标记//注:树状数组模板中:元素下标均从1开始,题目从0开始所以加1#include#include#include#include#include#include#include#
2015-06-21 13:54:07
420
原创 树状数组(一维)例题 HDU——1166敌兵布阵
对于普通数组,其修改的时间复杂度位O(1),而求数组中某一段的数值和的时间复杂度为O(n),因此对于n的值过大的情况,普通数组的时间复杂度我们是接受不了的。对于树状数组这种数据结构,它能在O(logn)内对数组的值进行修改和查询某一段数值的和。树状数组是一个查询和修改复杂度都为log(n)的数据结构。假设A[]数组为存储原来的值得数组,C[]为树状数组。我们定义:C[i] = A[i
2015-06-21 13:28:34
383
原创 并查集例题 HDU——1272
并查集主要处理一些不相交集合的合并问题基本操作:(1)建立一个新的并查集,其中包含S个元素的集合。(2)把元素x和元素y所在的集合合并,要求x和y所在的集合不相交。(3)找到x所在集合的根,该操作可以用于判断两个元素是否位于同一集合。例题:HDU——1272#include#include#include#include#include#inclu
2015-06-21 12:00:58
470
原创 优先队列——HDU1873
优先队列(1) priority_queueq; //按照元素从大到小的顺序出队(2) 自定义优先级 定义方法: priority_queue,cmp>q; //第二个参数为容器类型,第三个为比较函数 struct cmp{ bool operator()(stu a,sut b)
2015-06-19 11:46:19
472
原创 DFS模板——HDU2181哈密顿绕行世界问题
#include#include#include#include#include#include#includeusing namespace std;#define maxn 50int map[maxn][maxn];int vis[maxn],a[maxn];int m,k;void dfs(int start,int cur){ if(cur==21&&m
2015-06-05 10:59:34
390
原创 manacher算法求最长回文串长度
manacher算法:定义数组p[i]表示以i为中心的(包含i这个字符)回文串半径长将字符串s从前扫到后for(int i=0;i由于s是从前扫到后的,所以需要计算p[i]时一定已经计算好了p[1]....p[i-1]假设现在扫描到了i+k这个位置,现在需要计算p[i+k]定义maxlen是i+k位置前所有回文串中能延伸到的最右端的位置,即maxlen=p[i]+i;//p[i
2015-05-31 17:56:34
550
原创 try块和异常处理
try块和异常处理c++的异常处理中包括:1) throw表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误。可以说,throw引发了异常条件。2) try块,错误处理部分使用它来处理异常。try语句块以try关键字开始,并以一个或多个catch子句结束。在try块中执行的代码所抛出的异常,通常会被其中一个catch子句处理。3) 由标准库定义的一组异常类,用来在t
2015-05-08 20:06:47
636
原创 标准库类型(string,getline,vector)
标准库类型(string,getline,vector)string对象的初始化:string s1; 默认构造函数,s1为空串;string s2(s1); 将s2初始化为s1的一个副本string s3("value"); 将s3初始化为一个字符串字面值副本string s4(n,'c'); 将s4初始化为
2015-04-28 08:51:17
434
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人