自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 图论 problem B

1.简单题意给你N个点的坐标,求能使这N个点相连的所有边的最小距离是多少。2.解题思路先求出每个点和其他点的距离,存到图中,用Prim模板来做。3.感想这应该是我在这次acm里正式做的最后一个题,因为考试等原因忽略了acm,希望以后有机会可以更深的学习4.ac代码 #include #include #include #incl

2016-07-06 21:17:22 192

原创 图论 problem a

1.简单题意有n个村庄,编号1-n,以矩阵的形式给出任意两个村庄之间的距离,然后告诉已经有q个村庄已经修好了路,问现在要打算使所有村庄都联通需要修路的最小长度。2.解题思路思路就是构造一棵最小生成树,所以将距离排序,从小到大依次并入,直到集合数为1为止。3.ac代码#include#include#includeusing namespace std;const i

2016-07-06 00:15:24 183

原创 图论 problem c

1.简单题意测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( 2.解题思路1代表此城市可联通,0表示不联通。如果输入的两个城市有一个是已经标记的,即可联通的,则另一个城市也是可联通的,直接标记。如果输入的两个城市都没有标记,则这是一个新产生的可联通集合,count表示需加入的道路数,增加一条路,将这两个城市标记为可联通的。处理完输入后,对于没有标记的城

2016-07-05 22:51:53 539

原创 acm 课程总结

ACM论文    以前acm对我来说是一个很神秘的东西,从大一就对这个很好奇,但是对这个却不是很了解,等到真正学才知道以前的想法挺幼稚的。我记得最深的一句话就是:生死看淡,不服就干。这句话真的很提干劲,让我在没有动力的时候可以再次鼓起力气来继续刷题,刷题是一件很苦的事情,因为他占用了你很多的时间,你可能有很多作业要做,与你的acm冲突,你不得不自己加班去把失去的时间补回来,这是一件很寂寞的事情

2016-06-30 22:55:37 1137

原创 图论 Problem K

1.简明题意这是一个求最短路径的问题,输入是两个城镇的名字和距离,求出去某个地方最短路径2.解题思路用迪杰斯特拉求最短的路,只是此题的源点和终点都不止一个,定义一个变量min,将从每个顶点,出发到相应终点的最短路赋给它既可,另外需要注意的是当起点和终点相同的情况和两点之间是否有重边,最后就是输入的图中的顶点数 n的求法,即顶点编号中最大的编号即是 顶点的个数。3.感想

2016-06-18 22:36:43 268

原创 动态规划总结

1.动态规划是什么:动态规划是解决多阶段决策问题的一种方法。2.动态规划的思想是:在做每一步决策时,列出各种可能的局部解依据某种判定条件,舍弃那些肯定不能得到最优解的局部解。以每一步都是最优的来保证全局是最优的。3.动态规划问题的一般解题步骤:判断问题是否具有最优子结构性质,若不具备则不能用动态规划。把问题分成若干个子问题(分阶段)。建立状态转移方程(递

2016-05-31 21:50:42 373

原创 动态规划 problem S

1.简单题意这是一个典型的背包问题,就是一个学院要分开,有不同的价值的设备,需要分给两个学院,尽量公平2.解题思路我们需要将总和平分,然后就是一个很正常的01背包问题,套入公式就可3.感想问题不可能很简单的套公式,我们可以对其进行转化,然后再解4.ac代码#include #include #include#include using namespac

2016-05-31 21:45:55 240

原创 动态规划 problem Q

1.简单题意这是一个背包问题,就是给定一个背包的体积,然后给出几样物品的价值和体积,求出背包的最大价值2.解题思路动态规划,动态方程是f【v】=max{f[v],f[v-c[i]+w[i]]};c是体积,w是价值3.感想可以用背包解,但是不如动态规划简单,用最快方式解题才是正道4.ac代码#include #include #include #include

2016-05-29 23:41:18 219

原创 动态规划 problem L

1.简单题意求在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.2.解题思路通过找规律,可以发现规律 a[1]=1,a[2]=2,a[n]=a[n-1]+a[n-2](n>2),但是这个题不止这么简单,因为后面输入的数太大,int和long类型都不行,我尝试用long long 类型,但是我的这个IDE不支持,所以用的——int64数组,但是,

2016-05-22 10:59:35 194

原创 动态规划 problem N

1.简单题意我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,我们需要输入一个数得到有几个平面2.解题思路这个题没有用到递归,只需要方程result=2*n*n-n+1,就可以得到结果3.感想本来以为会用到递归方面的知识,所以浪费了比较久的时间,所以不应

2016-05-22 10:23:58 215

原创 动态规划 problem K

1.简单题意有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。2.解题思路通过找规律发现这是一个斐波那次数列,这个题简单,但是还有陷阱,到最后的数据非常大,用int数组没法输出正确答案,所以我用的是long long数组3.感想开始一直报错,我以为是程序的错误,后来发现不是,通过输出数组数据,发现数

2016-05-09 22:17:32 263

原创 动态规划 problem o

1.简单题意把一个十进制数转化成二进制数2.解题思路和正常的转化成二进制一样,就是用十进制数除以2,除不尽就把1加进数组,除尽就把0加进去3.感想很简单4.AC代码 #include #include using namespace std; void basetwo(int n) { vecto

2016-05-09 21:09:14 170

原创 动态规划 problem P

1.简单题意在一无限大的二维平面中,我们做如下假设:1、每次只能移动一格;2、不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);3、走过的格子立即塌陷无法再走第二次;求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。2,解题思路我们可以看出来这个动态规划方程是f(1)=3,f(2)=7,f(i)=f(i-1)*2

2016-05-09 12:08:10 358

原创 动态规划 Problem M

1.简明题意有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?2.解题思路和problem j思路一样,不过方程成为了分f(1)=1,f(2)=2,f(3)=3,f(i)=f(i-3)+f(i-1)3.感想同problem j4.AC代码#includeusing namespace

2016-05-08 21:58:19 188

原创 动态规划 problem J

1.简单题意有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?2.解题思路这是一道经典的动态规划题,方程是f(1)=1,f(i)=f(i-1)+f(i-2),其实就是斐波那次数列的一种,求得时候注意层数和楼梯数的关系。3.感想复杂的题目可能解答方法并不难4.AC代码#includeusing namespace std;in

2016-05-08 21:53:25 176

原创 动态规划 problem F

1.简单题意有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?2.解题思路此题采用动态规划从自底向上计算,如果我们要知道所走之和最大,那么最后一步肯定是走最后排数其中一个,向上退,倒数第二步肯定走最后排数对应的倒数第二排最大的一个(将最后对应最后步走的最大的数加起来存在倒数第二步的数组中:不理解的话先看思路在看程序),再向上推,一直推到

2016-05-07 22:30:18 236

原创 动态规划 Problem C

1.简单题意这道题要求的是最长上升子序列的和。2.解题思路用一个sum数组存储子问题的解。(sum对应的下标 i 表示,从0到i,最长上升子序列的和。)从头开始,遍历每一个数,开始第一重循环。对每一个数,又从头遍历到这个数的前一个数,这是第二重循环,在第二重循环中,用下标j表示当前遍历到的数,如果data[i]>data[j],则说明data[j]和data[i]能构成一个上升子序

2016-05-05 17:30:42 152

原创 动态规划 Problem A

1.简单题意给出一个数列a[1],a[2],a[3].a[n],你的工作是计算这个子数列的最大和.例如,给出数列(6,-1,5,4,-7),那么这个数列的最大和就是6 + (-1) + 5 + 4 = 14.2.解题思路这是利用动态规划求最大子串和的问题, 本题的子问题是:dp[i] 代表前i个数中最大子串的和 ; 通过递归或递推求出子问题的最优解。 本题中的状

2016-05-05 17:09:18 212

原创 搜索总结

由于对搜索的深度搜索和广度搜索理解不深,所以做题比较少,我就说一下我在这次里学到的东西吧1.对于求解一些实际问题,当公式难以推导出来时,二分、三分法可以较为精确地求解出一些临界值,且效率也是令人满意的。2、相比于单纯的枚举算法有了一定的方向性和目标性。算法是在解的空间里,从一个状态转移(按照要求拓展)到其他状态,这样进行下去,将解的空间中的状态遍历,找到答案(目标的状态)3.广度搜索框

2016-04-24 23:26:33 358

原创 搜索算法 problem(1009)

1.简明题意就是我们平时玩的连连看的游戏规则,刚开始用的广搜,刚开始的剪枝不高效导致爆掉队列,使得内存超限,后来发现,bfs先遍历的点不一定是弯数少的点,这样的话如果不专门来更新的话,就会出现运行结果跟搜索顺序有关,是左上右下还是左下右上等等序列2.解题思路因为至多两个弯,而数据量是1000*1000的,用dfs搜索的时候,只要找到合法解就行,不需要找弯数最少等最优情况,所以只要找

2016-04-24 23:24:14 232

原创 搜索算法 problem(1017)

1.简明题意大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S2.解题思路找了很久规律还是无果(其实肯定有的),还是暴力搜索吧,对于三个容器,用一个结构题存

2016-04-24 23:15:28 220

原创 搜索算法 problem(1005)

1.简明题意检测汽车拐弯的时候是否会碰到街道2.解题思路、汽车拐弯问题,给定X, Y, l, d判断是否能够拐弯。首先当X或者Y小于d,那么一定不能。其次我们发现随着角度θ的增大,最大高度h先增长后减小,即为凸性函数,可以用三分法来求解。这里的Calc函数需要比较繁琐的推倒公式:s = l * cos(θ) + w * sin(θ) - x;h = s * tan(

2016-04-23 22:48:28 315

原创 搜索算法 problem(1008)

1.简明题意一个人在n次中可以猜到的最大数2.解题思路通过寻找规律我们可以发现这次猜的数是上一次猜的2倍加一3.AC代码#includeusing namespace std;int guessNumber(int m){ int number; if (m == 1) { number = 1; } else {

2016-04-23 22:41:50 210

原创 搜索算法 problem(1014)

1.简明题意有一个特别的电梯,第i层有一个对应的数字ki, 对于第i层按上升键up可升上到i+k[i]层,按下降键down到达i-k[i]层,到达的楼层最高不能超过n层,最低不能小于1层。给你一个起点A和终点B,问最少要按几次上升键或者下降键到达目的地。2.解题思路把每一层都看成一个节点,问题就可以变成求起点到终点的最短路径问题。3.AC代码 #include

2016-04-23 22:36:18 216

原创 搜索算法 problem(1013)

1.简明题意有一个特别的电梯,第i层有一个对应的数字ki, 对于第i层按上升键up可升上到i+k[i]层,按下降键down到达i-k[i]层,到达的楼层最高不能超过n层,最低不能小于1层。给你一个起点A和终点B,问最少要按几次上升键或者下降键到达目的地。2.解题思路把每一层都看成一个节点,问题就可以变成求起点到终点的最短路径问题。3.AC代码#include#include#d

2016-04-23 22:34:45 212

原创 搜索算法 problem(1003)

1.简单题意有f+1个人分n块披萨,每个人要求分得的面积一样,且披萨只能被切开而不能重新组合,求每个人能分到的最大面积v2.解题思路对于每个确定的v,可以计算出最多能满足的人数p。因此得到一个单调递减的函数关系,并且v的范围也可以确定为0~max(size(i)),i=1...n。3.AC代码#include #include #include #include #

2016-04-23 13:55:36 396

原创 搜索算法 problem(1002)

1.简明题意求出方程F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x在0~100之间的最小值2.解题思路利用二分法对这个方程的一阶导数进行处理,得到极值点,带入原式3.感想和第一题一样4.AC代码#include#include#includeusing namespace std;double y;const double eps =

2016-04-23 13:49:36 253

原创 搜索算法 problem(1001)

1.简明题意这个题的意思就是输入一个y求8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y在0~100之间的解2.解题思路利用二分方法求出这个方程的极值点,然后带入原方程就可以3.感想求一个方程利用程序就可以求出来解,不论方程多复杂4.AC代码#include#include#includeusing namespace std;const

2016-04-23 13:43:55 183

原创 贪心算法总结

注:以下有一些为笔记使用贪心算法求解问题应该考虑如下几个方面:(1)候选集合A:为了构造问题的解决方案,有一个候选集合A作为问题的可能解,即问题的最终解均取自于候选集合A。(2)解集合S:随着贪心选择的进行,解集合S不断扩展,直到构成满足问题的完整解。(3)解决函数solution:检查解集合S是否构成问题的完整解。(4)选择函数select:即贪心策略,这是贪心法的关键,它指

2016-04-01 19:26:03 291

翻译 贪心算法 problem M(1013)

一.简明题意某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D。公司每五个月进行一次统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、7-11、8-12),已知这8次统计的结果全部是亏空(盈利-亏空求出盈利的最大值,如果不能盈利则输出Deficit输入:每月盈利和亏空的数值(每月都一样)输出:能最大盈利多少,不能则输出Deficit二.解题

2016-04-01 19:16:49 230

原创 贪心算法 problem I(1009)

一.简明题意哈夫曼树对输入的内容进行编码,求出一个字符串的最小字节数,输出原来的字节数,现在的字节数,以及两个的比例二。解题思路构建哈夫曼树,对输入的字符串用优先队列进行排序,算出各个字符出现的频率,然后给予新的编码三.感想让我们提前学习了哈夫曼树的知识四.AC代码#include#include#include#includeusing namespa

2016-04-01 16:27:54 234

原创 贪心算法 problem f(1006)

一.简明题意输入电梯上下的层数,求电梯一个过程所需要的时间二.解题思路不要贪心算法,直接求,送分题三。感想无四.ac代码#include#includeusing namespace std;int main(){ vector v; int n, time, m[101]; while (cin >> n, n) {

2016-04-01 16:23:03 254

原创 贪心算法problemA(1000)

一.简单题意就是一个酒店在走廊搬桌子的问题,走廊两边,一边是偶数房间一边是奇数房间,搬动一次需要十分钟,可以同时进行,但是当我搬的桌子用到相同走廊的时候就不能同时进行。比如我搬的桌子是从1~5和6~10就需要20分钟。二.解题思路开始用贪心算法,可以求出答案,但一直wa,后来没有用贪心,就求需要走过的走廊次数,用最多的乘以10就可以。三.感想虽然这个题出在贪心算法,但却不是用贪

2016-04-01 16:11:54 241

原创 贪心算法 problem1008

[cpp] view plain copy print?1.简明题意  就是用一个机器加工木条,知道木条的长度和宽度,机器启动一次需要一分钟,如果一根木条比他上一次木条的长宽都短,就不需要重新启动机器,反之则需要。  求最短时间  2.解题思路  使用动态规划和贪心算法  3.感想  好难啊  4.ac代码      #include  #include  #include

2016-03-31 16:44:00 209

原创 贪心算法B(1001)

1.简明题意就是用一个机器加工木条,知道木条的长度和宽度,机器启动一次需要一分钟,如果一根木条比他上一次木条的长宽都短,就不需要重新启动机器,反之则需要。求最短时间2.解题思路使用动态规划和贪心算法3.感想好难啊4.ac代码#include#include#includeusing namespace std;struct stick{ i

2016-03-29 21:22:23 292

原创 贪心算法problem L(1012)

1.简明题意就是求m的n次幂。2.解题思路直接用c++ pow函数就可以3,感想我想这题可能是需要用到大数方面的知识,但没有超出double的范围,所以就用了pow函数4.代码#include#includeusing namespace std;int main(){ double n, m; int result; while (ci

2016-03-29 21:17:25 294

原创 贪心算法 problem P(1016)

一.简明题意这个题很简单,就是求中位数二.解题思路这个题我觉得唯一的难点就是输入的数据不能确定,所以我用了动态数组:vector三.感想以前做这种题都是直接放弃,没想到这种题并不难四.AC代码#include#include#includeusing namespace std;int main(){ vector v; vector::i

2016-03-15 22:36:35 222

原创 贪心算法problem E(编号1004)

一.简单题意这是一个与活动安排问题相类似的题目,大体意思就是安排看电视节目,然后输出我们能完整的看到电视节目的个数。二.解题思路形成过程因为这是一个与活动安排问题相类似的题目,所以我先看了一下老师给的贪心算法的课件,先建立一个struct来存储节目的开始和结束时间,再建立一个struct数组,然后建立排序比较因子,用sort函数对我们输入的数据按照节目的结束时间进行升序排序。首

2016-03-14 18:52:24 337

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除