
算法基础
文章平均质量分 61
暮光乐鱼
这个作者很懒,什么都没留下…
展开
-
hdu 2141 Can you find it?
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141本题主要是用二分法查找,不然容易超时,注意输出格式!!!#include#includeusing namespace std;int a_l[510];int b_n[510];int c_m[510];int d_ln[250100];int main()原创 2015-07-30 20:09:03 · 401 阅读 · 0 评论 -
hdu 2011 多项式求和
本题链接:点击打开链接本题大意: 已知一多项式运算规则,求前n项的和。参考代码:/***************************************文件:多项式求和**创建人:LSGBB**日期:2015/7/22/10:24**功能:计算多项式前n项的和*************************************/ #原创 2015-08-14 08:31:46 · 706 阅读 · 0 评论 -
HDU oj2007 平方和与立方和
平方和与立方和Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 113473 Accepted Submission(s): 36763Problem Description给定一段连续的整数,求出他们中所有原创 2015-07-22 16:21:59 · 593 阅读 · 0 评论 -
hdu 2094 产生冠军
本题链接:点击打开链接本题大意: 有n名队员,已知每名队员打比赛的输赢,问,能否据此确定冠军。解题思路: 就是将所有比赛中失败过的做标记,据题知:失败过的就不可能再成为冠军,所以就看最后未标记的有几个,若只有一个,则说明其就是所认定的冠军,否则就确定不了冠军。主要是字符串难处理,具体请参见代码:#include#includechar str原创 2015-08-14 18:12:00 · 641 阅读 · 0 评论 -
hdu 4324 Triangle LOVE
本题链接:点击打开链接本题大意: 题意分析(转载):此题可以一遍拓扑排序判环求解 即只需要找到一个环,就必定存在三元环 证明如下: 假设存在一个n元环,因为a->b有边,b->a必定没边,反之也成立所以假设有环上三个相邻的点a-> b-> c,那么如果c->a间有边,就已经形成了一个三元环,如果c->a没边,那么a->c肯定有边,这样就形成了一个n-1元环。。。。所以只需证明原创 2015-08-14 20:18:02 · 652 阅读 · 0 评论 -
hdu 1312 Red and Black
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312本题要看能走的地方有多少个,不能走对角,所以选取人物所在的地方,看其四个方向是否可以走,并将可以走的标记为不可走,用一个数标记查找的次数即为可走的地方的个数,AC代码,递归写的:#includechar a[22][22];int n,m;int F(int x,int y原创 2015-08-04 08:41:24 · 374 阅读 · 0 评论 -
hdu 1285 确定比赛名次
本题链接:点击打开链接本题大意: 有n个队员,进行了m场比赛,输入每场比赛谁胜谁负,求比赛排名。解题思路: 应该是典型的拓扑算法吧,用一个二维数组map[p1][p2]=1;标记p1赢了p2;然后就把p2的前驱进行自加一次,即degree[p2]++;如此就将每场比赛的胜负记录下来了。首先要把degree数组初始化为0;则记录后前驱仍然为0的队员则说明没原创 2015-08-14 11:29:14 · 662 阅读 · 0 评论 -
数值统计
数值统计Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 69969 Accepted Submission(s): 35132Problem Description统计给定的n个数中,负数、零和正数的个数。原创 2015-07-21 20:22:09 · 459 阅读 · 0 评论 -
Geometry Made Simple
Geometry Made SimpleTime Limit: 2 Seconds Memory Limit: 65536 KB Mathematics can be so easy when you have a computer. Consider the following example. You probably know that in a right-a原创 2015-07-21 13:19:14 · 406 阅读 · 0 评论 -
poj 1879 Tempus et mobilius Time and motion
本题链接:点击打开链接本题大意: 有一计时器,由编号从1到n的球组成,有三个轨道,分别对应1分钟,5分钟,1小时。此三个轨道可认为是栈,每分钟从球堆里出来一个球,球堆可认为是队列,三个轨道的容纳量分别是4,11,11。球首先进入的是1分钟轨道,当第五个球进入时,一分钟轨道的球全部出栈,进入球队列。而第五个球进入5分钟轨道,5分钟轨道满后再进的球进入小时轨道,5分钟轨道的球全部原创 2015-08-13 16:32:48 · 885 阅读 · 0 评论 -
POJ 1328 Radar Installation【贪心】
本题主要是查找每个岛屿能被探测到的可放雷达区间,然后使贪心算法。AC代码: #include#include#includeusing namespace std;struct node{ double left; double right;}a[1100];bool cmp(node a,node b){ if(a.right != b.r原创 2015-07-31 21:16:25 · 371 阅读 · 0 评论 -
hdu 2037 今年暑假不AC
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037本题属于贪心题,先将结束时间排序,然后查找开始时间在前面时间段结束时间后面的时间段,查找到之后再继续查找开始时间在当前时间段结束时间后的。AC代码: #include#include#includeusing namespace std;struct node{原创 2015-07-31 15:22:41 · 383 阅读 · 0 评论 -
hdu 2187 悼念512汶川大地震遇难同胞——老人是真饿了
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2187本题将单价升序排列,总重量计算较简单,AC代码:#include#includeusing namespace std;struct node{ int price; int weight;}a[1100]; //数组开小提交错了多次!!! int原创 2015-07-31 16:50:05 · 488 阅读 · 0 评论 -
hdu 1022 Train Problem I
本题链接:点击打开链接本题大意: 本题给出两个字符串,假设旁边有一空栈,两字符串以何种方式进栈可以清空两字符串数组,输出进出栈方式,若不能清空两字符数组,则输出No具体输出请参见题目。解题思路: 就是模拟栈,使数组一中元素逐个进栈,然后看与数组二中开头元素是否相等,若相等则出栈,并清除数组二的开头元素。每次进栈出栈都可用另外一数组做相应标记,若最终数组二中原创 2015-08-13 20:09:12 · 545 阅读 · 0 评论 -
hdu 1789 Doing Homework again
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789本题把分数降序排列,然后按天数分配作业,并标记,AC代码: #include#include#include#includeusing namespace std;struct node{ int score; int dayline;};b原创 2015-07-31 20:03:56 · 343 阅读 · 0 评论 -
Financial Management
ZOJ Problem Set - 1048Financial ManagementTime Limit: 2 Seconds Memory Limit: 65536 KB Larry graduated this year and finally has a job. He's making a lot of money, but somehow nev原创 2015-07-21 13:29:39 · 475 阅读 · 0 评论 -
A+B for Input-Output Practice (II)
A+B for Input-Output Practice (II)Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 73465 Accepted Submission(s): 47748Problem Desc原创 2015-07-21 08:00:17 · 1113 阅读 · 0 评论 -
poj 1879 Truck History
本题链接:点击打开链接题目大意: 输入n表示卡车辆数,输入每辆卡车编号,即长度为7的字符串,每辆卡车编号均可由其它类型编号衍生过来,求由其中一辆衍生出其它所有的最小衍生次数(有一个字符不同就需衍生一次)。解题思路: 本题可以看做求最小生成树的问题,关键是图的构建,把每两辆车衍生次数作为权值,然后使用prime算法求解最小生成树,具体请参见代码:#in原创 2015-08-13 09:58:40 · 941 阅读 · 0 评论 -
HDU 2014 青年歌手大奖赛_评委会打分
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2014本题为简单题,代码已通过:/***********************************************文件:青年歌手大奖赛_评委会打分**创建人: LSGBB**日期:2015/7/23/17:15**功能:去最高分与最低分求平均分**************原创 2015-07-23 17:25:15 · 428 阅读 · 0 评论 -
hdu 1241 Oil Deposits
本题链接:点击打开链接本题是要判断石油矿的个数,选取一点,判断其四周八个方向是否有石油,然后将其做标记,使下次不会重复找,采用递归算法代码如下:#includechar a[110][110];int n,m;void dfs(int x,int y){ if(a[x][y]!='@'||xn||ym) return ; else{ a[x][y]='*原创 2015-08-04 08:32:04 · 319 阅读 · 0 评论 -
hdu 2087 剪花布条
本题链接:点击打开链接本题题意: 本题是求第一个字符串中包含多少第二个字符串,即求子字符串个数。解题思路: 本题可选用KMP算法,具体方法与原创 2015-08-07 18:54:28 · 425 阅读 · 0 评论 -
hdu 1010 Tempter of the Bone
本题链接:点击打开链接本题为简单的DFS深搜题,不过还是写了好久,粗心啊。。。AC代码:#include//unfinished still#include#includechar map[10][10];int mark[10][10];int dx[]={1,-1,0,0};int dy[]={0,0,1,-1};int n,m,ti,flag,ex,原创 2015-08-05 21:33:21 · 354 阅读 · 0 评论 -
hpu 1695 问题 A 一道签到题(KMP算法的考察)
本题题意: 输入一个长度不超过200,数值不超过100的循环小数,求出小数点后的循环节,循环节长度,循环次数。解题思路: 本题为KMP算法的较全面的考察,首先将小数点后的数存放到一个数组中,并求出next数组,然后,由KMP算法可知,循环节长度为:【k-next[k]】;循环次数为【k/(k-next[k])】,知此,循环节也不难求了,按循环长度直接输原创 2015-08-08 16:14:59 · 795 阅读 · 0 评论 -
hpu 1897 CZY找句子
本题链接:点击打开链接本题大意: 输入一个N和一个M,第二行输入N个数值,第三行输入M个数值,M 解题思路: 使用KMP算法,求出next数组,然后进行比较,当首次出现子字符串时,输出主字符串的位置-子字符串的长度,因为从零开始编的号,故需加一。参考代码:#include//思路没变,但将str1,str2改成int型的就对了,不知道为何 #原创 2015-08-08 17:06:40 · 420 阅读 · 0 评论 -
poj 2752 Seek the Name, Seek the Fame
本题大意: 本题是要找所输入的字符串所有的前缀和后缀相同的子串的尾部位置,例如输入abcabcabc,则应输出3,6,9.解题思路: 先使用KMP算法求出next数组,由next函数知,next[k]表示的是在k个字符处匹配失败,但如果是自身和自身比较的话,可以看出此k便是一个前缀的尾部,即所求的一个值,同理由j和next[j],便可找到所有失配的位原创 2015-08-07 17:41:55 · 408 阅读 · 0 评论 -
hdu-1012 u Calculate e
题目来源:hdu-1012u Calculate eTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 36307 Accepted Submission(s): 16399Problem DescriptionA simple m原创 2015-09-12 10:27:05 · 530 阅读 · 0 评论 -
hdu-1013 Digital Roots
题目来源:hdu-1013 Digital Roots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 59825 Accepted Submission(s): 18723Problem Description原创 2015-09-12 10:44:02 · 495 阅读 · 0 评论 -
hdu-1004 Let the Balloon Rise
题目来源:hdu-1004 Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 91599 Accepted Submission(s): 34868Problem Descri原创 2015-09-15 17:14:11 · 501 阅读 · 0 评论 -
Catch That Cow (BFS)
题目大意: 输入一个N和K,N为人的起始位置,K为牛的位置,牛不动,人有三种移动方式,向前一步,向后一步,或移动到当前位置坐标的二倍处,求移动到牛位置的最少次数。解题思路: 使用广搜(BFS),对人当前位置的三种移动方式进行搜索,所得出的即为最少移动次数。参考代码:#include#include#includeusing namespac原创 2015-08-06 20:46:53 · 394 阅读 · 0 评论 -
hdu 1072 Nightmare
本题链接:点击打开链接题目大意: 输入一个N * M的迷宫,数字2为起点,3为终点,起始时间为6,遇到4时,时间还原为6。若能走出迷宫,输出最小步数,若不能,输出-1。解题思路: 采用广搜(BFS),先将迷宫存放在map[ ]中,每一步可走的方向有四个,即上,下,左,右。将每一步可走的路线搜索一遍,满足条件的即为最短的。参考AC代码:#includ原创 2015-08-06 20:05:45 · 355 阅读 · 0 评论 -
hdu 1686 Oulipo
本题链接:点击打开链接 本题是求一个主字符串中有多少个子字符串,先输入的是子字符串;本题解法呢,就是采用KMP算法,先对子字符串本身进行编号,首字符标为-1,第二个字符标为0,然后下一位的标法遵循一个准则:若前一位与其所对应下标对应的字符相等,则标记为前一个字符的下标值加一,若不等,则将前一位与刚所比较那个字符对应下标所对应的字符相比较,直至比较到子字符串首,若仍不等,则此字符的下原创 2015-08-07 11:51:35 · 487 阅读 · 0 评论 -
hdu 2017 字符串统计
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2017 /************************************文件:字符串统计**创建人:LSGBB**日期:2015/7/22/19:43**功能:统计所给字符串中数字的个数***********************************/原创 2015-07-22 19:45:44 · 368 阅读 · 0 评论 -
hdu 2020绝对值排序
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2020本题主要使用一种排序方法,我借鉴了冒泡排序法的思想刚开始我使用了动态数组,结果提交总是不过,但格式与功能自认为均达到了题目的要求,代码如下: #include#include#includeint main(){ int n,i,j,t; while(scanf原创 2015-07-22 19:21:28 · 705 阅读 · 0 评论 -
Avoid The Lakes
题意是有N * M个方格,有的方格干,有的湿,相邻的方格若都是湿的,则可以合并,求最大可以合并的方格数,思路是使用从左上开始搜索一遍,遇到湿的则计数可合并块数,AC代码参考:#include#includeint mark[101][101];int n,m,k,cnt;int dx[]={-1,1,0,0},dy[]={0,0,-1,1};void dfs(int x原创 2015-08-04 17:26:02 · 614 阅读 · 0 评论 -
HDU 2005 第几天?
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2005本题较简单,代码通过:#includeint isrunnian(int year){ if((year%4==0&&year%100!=0)||year%400==0) return 1; return 0;}int dijitian(int year,int m原创 2015-07-24 20:27:31 · 420 阅读 · 0 评论 -
zoj 2100 Seeding
DFS深搜,首先将有石头的地方标记为1,从最左端开始搜索,搜索时将此地标记为1,然后判断可走的地方是否全部走过,若不是,则看此处四个方向是否还可走,若否,则此处不可走,取消此处标记,AC代码:#include#includeint dx[4]={-1,1,0,0};int dy[4]={0,0,-1,1};int mark[10][10];char squ[10][10原创 2015-08-05 09:29:50 · 485 阅读 · 0 评论 -
hdu 1181 变形记
本题链接:点击打开链接本题是求有没有以'b'开头,以'm'结尾的单词,头和尾相同的单词可以拼接成一个单词。解题思路,用一个结构体来存放所给单词的头和尾,然后使用递归进行查找,将查找过的做上标记,AC代码:#include#includechar str[100];int mark[10000];int i,flag;struct node{ char sta原创 2015-08-05 15:35:50 · 421 阅读 · 0 评论 -
hdu 1548 A strange lift
本题链接:点击打开链接 题目大意:输入N,A,B。N为楼层总数,A为起始楼层数,B为所要到的楼层数,然后输入N个数值,表示Ki(即每层楼可选择上或下的楼层数),求能否从A到B,若能,输出最短次数,若否,输出-1. 大致思路:使用广搜(BFS),用一个标记数组mark[ ],将起始楼层的mark[ ]标记为1;然后对当前楼层可走的路径做标记,走一次mark[ ]走到楼原创 2015-08-06 11:03:09 · 364 阅读 · 0 评论 -
zoj 1091 Knight Moves
本题采用了广度优先算法(BFS)。第一次做。 广搜的一般结构: 定义一个队列; 起始点入队; while(队列非空) { 队头结点出列; 若为所求目标状态,跳出; 否则,开始查找,将其扩出的所有子节点,全原创 2015-08-06 09:36:51 · 559 阅读 · 0 评论 -
Uniform Generator hdu-1014
题目来源:hdu-1014 Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 22038 Accepted Submission(s): 8671Problem Descriptio原创 2015-09-16 22:18:33 · 521 阅读 · 0 评论