
算法学习笔记
文章平均质量分 61
bugwry
小码农一枚
展开
-
快排
数组简单模拟一下基本思想#include #include #include using namespace std ;int arr[100] ;int n ;void qsort(int left,int right){ if(left>right) return ; int temp = arr[left] ; int i原创 2014-12-17 19:11:23 · 448 阅读 · 0 评论 -
并查集入门
我是看着《啊哈!算法》这本书完成并查集的入门,本想举出另外的栗子,奈何。。。书上的栗子已经很贴切了。首先引入一个问题:已知有10个土匪,警方需要需要一点点顺藤摸瓜最后挖出他们各自背后的团伙一锅端,经过一段时间的侦查警方的得到了9条确切线索,分别能说明那两个土匪的归顺关系。那么请问此次行动总共要打掉几个团伙?输入数据如下:按照第一行输入人数n,线索数m,接下来的m行输入线索,每行线索原创 2015-04-05 19:29:10 · 801 阅读 · 0 评论 -
并查集入门
我是看着《啊哈!算法》这本书完成并查集的入门,本想举出另外的栗子,奈何。。。书上的栗子已经很贴切了。首先引入一个问题:已知有10个土匪,警方需要需要一点点顺藤摸瓜最后挖出他们各自背后的团伙一锅端,经过一段时间的侦查警方的得到了9条确切线索,分别能说明那两个土匪的归顺关系。那么请问此次行动总共要打掉几个团伙?输入数据如下:按照第一行输入人数n,线索数m,接下来的m行输入线索,每行线索原创 2015-04-05 19:59:42 · 565 阅读 · 0 评论 -
zoj 1003 Crashing Balloon(整数分解应用)
Crashing BalloonTime Limit: 2 Seconds Memory Limit: 65536 KB On every June 1st, the Children's Day, there will be a game named "crashing balloon" on TV. The rule is very simple.原创 2015-04-13 18:35:34 · 1047 阅读 · 0 评论 -
qsort函数应用大全
七种qsort排序方法 一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 二、对char原创 2015-04-18 14:15:47 · 553 阅读 · 0 评论 -
八皇后问题
最原始DFS ,n代表棋盘是n*n的#include #include #include using namespace std ;int a[1000] ;int cnt,n ;void dfs(int cur){ if(cur == n) cnt++ ; else for(int i = 0 ;i<n ;i++) {原创 2015-04-23 20:12:45 · 745 阅读 · 0 评论 -
快速幂
/*例如求D=C^15%N由于:C*k % n = (C % n)*(k % n) % n所以令:C1 = C*C % N =C^2 % N 1 15C2 = C1*C % N =C^3 % N 3 7C3 = C2*C2 % N =C^6 % NC4 = C3*C % N =C^7 % N 7 3C5 = C4*C4 % N =C^14 % NC6 = C5*C % N =原创 2015-04-20 19:13:25 · 389 阅读 · 0 评论 -
hdu 1010 Tempter of the Bone(搜索+奇偶剪枝)
Tempter of the BoneTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 82058 Accepted Submission(s): 22370Problem DescriptionThe原创 2015-04-15 18:20:08 · 479 阅读 · 0 评论 -
南阳oj 860又见01背包
又见01背包时间限制:1000 ms | 内存限制:65535 KB难度:3描述 有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W 的物品,求所有挑选方案中物品价值总和的最大值。 1 1 1 1 输入多组测试数据。每组测试数据第一行输入,n 和 W ,接下来有n行,每行输入两个数,原创 2015-04-09 18:50:19 · 511 阅读 · 0 评论 -
南阳oj 814 又见拦截导弹
又见拦截导弹时间限制:3000 ms | 内存限制:65535 KB难度:3描述 大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。突然有一天,雷达捕捉到敌国的导弹来袭。由于该系统存在缺陷,所以如果想把所有原创 2015-04-09 17:51:10 · 799 阅读 · 0 评论 -
nyoj 587 blockhouses(DFS)
blockhouses时间限制:1000 ms | 内存限制:65535 KB难度:3描述 Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a原创 2015-04-20 18:41:22 · 456 阅读 · 0 评论 -
hdu 114 Piggy-Bank(完全背包)
题目链接:点击打开链接AC代码:#include #include #include using namespace std ;int E,F,t,p[10005],w[10005],n ;int dp[100005] ;int main(){ while(scanf("%d",&t)!=EOF) { while(t--)原创 2015-04-21 19:13:58 · 568 阅读 · 0 评论 -
南阳oj(nyoj) 791 Color the fence
Color the fence时间限制:1000 ms | 内存限制:65535 KB难度:2描述 Tom has fallen in love with Mary. Now Tom wants to show his love and write a number on the fence opposite to Mary’s house. Tom t原创 2015-05-08 18:59:48 · 642 阅读 · 0 评论 -
nyoj 42 一笔画问题
一笔画问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。 输入第一行只有一个正整数N(N每组测试数据的第一行有两个正整数P,Q(P随后的Q行,每行有两个正整数A,B(0输原创 2015-05-11 20:18:44 · 976 阅读 · 0 评论 -
根据日期判断是星期几(zeller公式)
直接写成一个函数了int getTheWeek(int year, int month, int day){ int week = 0; int century = year / 100; year = year % 100; week = year + year / 4 + century / 4 - 2 * century + (26 * (mon原创 2015-05-04 18:03:38 · 1160 阅读 · 0 评论 -
zoj 1005Jugs
JugsTime Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the following puzzle. They were gi原创 2015-05-22 18:37:06 · 355 阅读 · 0 评论 -
判断三角形三个点是逆时针还是顺时针
#include #include using namespace std ;int main(){ int x1,y1,x2,y2,x3,y3 ; while(scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF && (x1 || y1 || x2 || y2 || x3 || y3)) { i原创 2015-09-08 19:00:52 · 2678 阅读 · 0 评论 -
次方求模
描述求a的b次方对c取余的值 输入第一行输入一个整数n表示测试数据的组数(n每组测试只有一行,其中有三个正整数a,b,c(1=输出输出a的b次方对c取余之后的结果样例输入32 3 53 100 1011 12345 12345样例输出3110481AC代码:#include #i原创 2015-09-08 18:51:10 · 387 阅读 · 0 评论 -
导弹拦截(最长下降子序列)变形
题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入描述 Input Description原创 2015-04-07 17:47:25 · 496 阅读 · 0 评论 -
南阳 zb的生日和邮票分你一般(01背包思路)
这两道题其实是一样的。。。zb的生日 ->点击打开链接邮票分你一半-> 点击打开链接其实就是把01背包里的总体积换成所有邮票面值之和的一半,同理zb的生日。邮票AC代码:#include #include #include using namespace std ;int dp[10000] ;int n,a[10000],t ;int ma原创 2015-04-07 21:03:44 · 517 阅读 · 0 评论 -
大数学习笔记
void add(char a[],char b[],char s[])//a被加数,b加数,s和{ int i,j,k,up,x,y,z,l; char *c; if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2; c=(char *) malloc(l*sizeof(char原创 2015-01-11 18:46:41 · 443 阅读 · 0 评论 -
DFS之素数环
#include #include #include #include using namespace std ;int a[100] = {1} ;//int a[25] ;bool vst[100] ;int n ;bool isPrime(int m){ if(m<2) return false ; int i,k = sqrt(m)原创 2014-12-17 00:19:56 · 529 阅读 · 0 评论 -
DFS之全排列
全排列 模拟过程,假设有三个数字 1 2 3,依次放入三个盒子,在第一个盒子前,此时手里有3个数字1 2 3,那么按照升序的规则先把1放进第一个盒子。然后来到第二个盒子前,同样的原则将2放进去,最后来到第三个盒子,此时手里只剩一个3了,所以第一种序列123就出来了,走到第四个盒子前发现已经没有数字可供用了,此时回退到第三个盒子,把3取出来,继续走到第二个盒子取出2,此时手里就有2 3两个原创 2014-12-16 23:14:27 · 436 阅读 · 0 评论 -
约瑟夫环(纯数学方法)
直接上代码#include void fun(int n,int m){ int p[10000] ; int i ,j ,t ; for(i=0;i<n;i++) p[i] = i+1 ; //对全体进行编号 t = 0 ; printf("出队顺序如下\n") ; for(i=n;i>=1;i--) {原创 2014-12-03 21:46:25 · 853 阅读 · 0 评论 -
南阳oj448:寻找最大数
寻找最大数时间限制:1000 ms | 内存限制:65535 KB难度:2描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,比如当n=92081346718538,m=10时,则新的最大数是9888 输入第一行输入一个正整数T,表示有T组测试数据每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过1原创 2014-12-03 21:49:42 · 521 阅读 · 0 评论 -
图论起步(长期更新)
简单深度搜索求最短路径/* 所有操作都以建立邻接矩阵为基础*/#include #include #include using namespace std ;const int inf = 9999999 ; //定义正无穷边界int minV ;int mp[100][100] ; //mp二维数组保留路径长度int book[10000] ;原创 2014-12-20 23:39:45 · 442 阅读 · 0 评论 -
杭电1004 Let the Balloon Rise
Let the Balloon RiseTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 79821 Accepted Submission(s): 30012Problem DescriptionContest原创 2015-01-11 19:21:39 · 421 阅读 · 0 评论 -
全排列
彩票随机算法 上代码#include #include #define MAXN 7#define NUM 29int num[NUM] ;int lottery[MAXN] ;using namespace std ;void combine(int n,int m){ for(int i = n ;i >= m ;i--) {原创 2014-12-15 22:09:12 · 449 阅读 · 0 评论 -
南阳田忌赛马
思路很巧妙的一道贪心题目,总体原则是赢不了你我就尽量拖你的好马下水。题目地址:点击打开链接#include #include #include using namespace std ;int tj[1005],king[1005] ;int n ; //马匹数目int main(){ while(scanf("%d",&n)!=EOF)原创 2015-03-15 11:01:15 · 730 阅读 · 0 评论 -
背包起步(更新中)
01背包:#include#include#includeusing namespace std;int V,N;int d[1000005];void zop(int value,int cost){ for(int i=V;i>=cost;i--){ d[i]=max(d[i],value+d[i-cost]); }}int main原创 2015-03-31 22:43:47 · 381 阅读 · 0 评论 -
背包九讲
P01: 01背包问题题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移转载 2015-03-24 19:24:47 · 301 阅读 · 0 评论 -
动态规划趣味入门
对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢! ----第一节转载 2015-04-01 19:05:30 · 388 阅读 · 0 评论 -
nyoj 995 硬币找零
硬币找零时间限制:1000 ms | 内存限制:65535 KB难度:3描述 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资。我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.原创 2015-04-10 10:19:51 · 878 阅读 · 0 评论 -
nyoj 37 回文字符串
回文字符串时间限制:3000 ms | 内存限制:65535 KB难度:4描述:所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出原创 2015-04-05 12:04:37 · 471 阅读 · 0 评论 -
hdu 1232 畅通工程(简单并查集)
畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34185 Accepted Submission(s): 18081Problem Description某省调查城镇交通状况,得到现有城镇道路原创 2015-04-06 09:20:46 · 750 阅读 · 1 评论 -
hdu 1213 How Many Tables(并查集的简单应用)
How Many TablesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16333 Accepted Submission(s): 8012Problem DescriptionToday is原创 2015-04-06 09:35:51 · 1122 阅读 · 0 评论 -
杭电 2603 Bone Collector(简单01背包)
Bone CollectorTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 35296 Accepted Submission(s): 14531Problem DescriptionMany year原创 2015-04-06 13:51:07 · 514 阅读 · 0 评论 -
hdu 1007(分治法应用)
Quoit DesignTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 36078 Accepted Submission(s): 9379Problem DescriptionHave you ev原创 2015-04-11 21:05:56 · 445 阅读 · 0 评论 -
字典树学习
题目描述:假设有很多个单词输入。输出最后出现次数最多的那个。#include #include #include #include using namespace std ;struct DicTree{ struct DicTree * next[26] ; int cnt ;}*a;void init(){ a = new DicTre原创 2016-05-04 18:15:57 · 410 阅读 · 0 评论