ACM刷题---2016
zhangzaizhi
这个作者很懒,什么都没留下…
展开
-
ACM课程总结
ACM课程总结一、课程内容1.贪心算法(1).贪心算法的定义:在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。(2).贪心算法的步骤首先要确定一个可行的贪心标准,然后根据贪心标准进行排序处理(要学会使用stl中的排序函数),根据题意进行选择,保证达到题目要求。这原创 2016-07-09 12:36:35 · 1289 阅读 · 0 评论 -
第二专题总结(搜索算法)
1.搜索算法的定义搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法.相比于单纯的枚举算法有了一定的方向性和目标性.算法是在解的空间里,从一个状态转移(按照要求拓展)到其他状态,这样进行下去,将解的空间中的状态遍历,找到答案(目标的状态).2.搜索的分类(1.)广度优先搜索(BFS)从初始状态S 开始,利用规则,生成所有可能的状原创 2016-04-23 20:56:10 · 768 阅读 · 0 评论 -
2016sdau课程练习专题二 1019
1.题目编号10192.简单题意在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。3.思路就是考虑一下皇后放置的位置,每一行都要枚举每个可以放置皇后的位置,并且判断这个位置是否与前一个放置好的位置相冲突,若冲突则此位置不合适,若不冲突原创 2016-04-23 18:40:29 · 290 阅读 · 0 评论 -
2016sdau课程练习专题二 1012
1.题目编号10122.简单题意天使(a)被困于迷宫,它的朋友(r)去救她,在迷宫中会有守卫(x)。r每走一步耗费一个单位的时间,如果路途遇上x,杀死x则需要一个单位的时间,求r找到a的最短时间。如果找不到就输出"Poor ANGEL has to stay in the prison all his life."3.思路老师讲课讲过,此题是一个迷宫问题,求解最短路径。原创 2016-04-23 17:50:15 · 248 阅读 · 0 评论 -
2016sdau课程练习专题二 1020
1.题目编号10202.简单题意输出满足相邻的相加是素数的序列3.思路运用深度优先搜索,对每种情况进行遍历,4.感想和题库中的N皇后问题相近,都是运用深度优先搜索,对每种情况进行遍历5.代码#include#include#includeint prime[]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,原创 2016-04-23 17:42:16 · 263 阅读 · 0 评论 -
2016sdau课程练习专题三 1010
1.题目编号10102.简单题意有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?3.解题思路同样还是递推的做法,令dp[1]=1,dp[2]=2;公式为dp[i]=dp[i-1]+dp[i-2];根据公式和做法写一个函数,在主函数中调用此函数即可4.感想因为先做的后一题,因此看见这题时感觉差不多,就按照递推改了一下,但还是原创 2016-05-07 21:04:42 · 251 阅读 · 0 评论 -
2016sdau课程练习专题三 1011
1.题目编号10112.简单题意有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数3.解题思路根据老师提供的题目并没有看见图,因此用百度搜到了原图,如上,这道题我用的递推来做的,设a[1]=1;a[2]=2;a[3]=3;并且a[i]=a[i-1]+a[i-2],根据题目要求解出a[n-m]即可4.感想还可原创 2016-05-07 20:47:44 · 254 阅读 · 0 评论 -
2016sdau课程练习专题三 1013
1.题目编号10132.简单题意有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?3.解题思路设f(n)代表第几年有几头牛,由题目知第一年第二年第三年都只有一头牛,第四年之后,牛的数量由去年所有的牛和所生下的牛组成,因此由题意知道,递归公式f(n)=1 034.感想一系列的同一题型,但还原创 2016-05-18 16:51:53 · 277 阅读 · 0 评论 -
2016sdau课程练习专题三 1012
1.题目编号10122.简单题意在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图3.解题思路题目又没有原图,设f[1]=1;f[2]=2;从图中也可以观察出来,第N张牌的排列可以又N-1张牌的排列再在末尾加上一张竖的牌。这样依然合法。也可以在N-2张合法排列的牌后面加上原创 2016-05-18 16:40:14 · 274 阅读 · 0 评论 -
2016sdau课程练习专题二 1005
1.题目编号10052.简单题意一辆汽车要过弯,现在给出汽车的车长和车宽,问能否顺利通过3.思路一个物理问题的代码算法,公式为h = l* sin(z) - z * tan(z) + d/ cos(z),算法是三分算法,因过是长度因角度改变而变,4.感想虽然公式知道但并不能正确写出算法来,因此就蒙了5.代码#include#includeusing na原创 2016-04-21 21:21:47 · 309 阅读 · 0 评论 -
2016sdau课程练习专题二 1011
1.题目编号10112.简单题意geosurvcomp地质调查公司负责探测地下石油储量,@代表有石油,*代表没有石油,并且在一个有石油的地方如果他旁边也都有石油,那么它们属于一块石油,给出石油分布,检索有几块石油3.思路使用dfs搜索,先搜索@然后检索旁边八块,如果也是@那么记为一块,否则加上@的个数,这样加起来的总数就是所求4.感想例题,dfs的基础题目,明显的特原创 2016-04-21 21:12:54 · 290 阅读 · 0 评论 -
2016sdau课程练习专题三 1003
1.题目编号10032.简单题意简单来说就是求最大上升子序列的和3.解题思路dp求解,判断下一个数字是否成立,若成立则dp[i]=dp[j]+a[i]4.感想课上老师讲过,题库里也有一样的题,没啥感想5.代码#include #include using namespace std;const int MAX=1001;int dp[MAX];原创 2016-05-29 20:03:07 · 312 阅读 · 0 评论 -
第三专题总结(动态规划)
1.定义动态规划是解决多阶段决策问题的一种方法,也是一种排除重复计算的算法,更具体的说,动态规划就是用空间换取时间。2.动态规划问题具有以下基本特征: (1)问题具有多阶段决策的特征。(2)每一阶段都有相应的“状态”与之对应,描述状态的量称为“状态变量”。(3)每一阶段都面临一个决策,选择不同的决策将会导致下一阶段不同的状态。(4)每一阶段的最优解问题可以递归地归结为下原创 2016-06-02 11:43:07 · 643 阅读 · 0 评论 -
2016sdau课程练习专题三 1012
1.题目编号10122.简单题意n*m大小的矩形,起点在矩形的左上角,终点在右下角,里面一个小矩形代表一个街区(block)。每个小矩形的边长都是2520, 小矩形的边有一个速度限制,范围是0~9, 如果是0表示这条边不能行驶。输入部分,由上到下,从左到右,按照图的对应的位置方式给出数据,每一条边是 "数字"+“空格”+“符号”的形式, 数字表示这条边的限速, 符号表原创 2016-07-09 22:22:19 · 351 阅读 · 0 评论 -
2016sdau课程练习专题三 1005
1.题目编号10052.简单题意省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。输入:测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1输出:每个测原创 2016-07-09 12:33:06 · 295 阅读 · 0 评论 -
2016sdau课程练习专题三 1010
1.题目编号10102.简单题意3.解题思路4.感想5.代码#include#includeusing namespace std; typedef struct n1{ int distens,flog;}node;node N[1005];int map[1005][1005],k;int dire原创 2016-07-09 12:01:14 · 326 阅读 · 0 评论 -
2016sdau课程练习专题三 1009
1.题目编号10092.简单题意在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?输入:输入包括多组数据。每组数据第一行是两个整数N、M(N输入保证至少存在1条商店到赛场的路线。输出:对于每组输入,输出一行,表示工作人原创 2016-07-07 21:17:07 · 352 阅读 · 0 评论 -
2016sdau课程练习专题三 1008
1.题目编号10082.简单题意求一个图的最大联通子图,要求每个联通分量最多只有一个环,且所求的边的权值之和最大,输入包括多组样例,每个样例第一行包含n/m两个整数,分别代表图中顶点的个数,边的个数。接下来的m行,每行有三个整数,分别表示一条边的起点和终点及权值,不存在圈不存在重复边,输入00结束,每组样例输出一个整形数,表示最大权值之和3.解题思路每输入一条边原创 2016-07-08 22:47:47 · 345 阅读 · 0 评论 -
2016sdau课程练习专题三 1011
1.题目编号10112.简单题意虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段原创 2016-07-08 22:19:31 · 380 阅读 · 0 评论 -
2016sdau课程练习专题三 1004
1.题目编号10042.简单题意某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。输入:测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 当N为0时,输入结束,该用例不被处理。原创 2016-07-07 19:24:43 · 320 阅读 · 0 评论 -
2016sdau课程练习专题四 1006
1.题目编号10062.简单题意对给定的图,求出最小耗费的金额。3.解题思路最小生成树的题目。将第一个节点放入数组,然后看哪个节点离他的费用最少,再将最少费用的节点放入数组中。不断比对,不存在于数组中且与数组中节点距离最短的节点,放入数组,并不断累加金额。最后输出地金额,就是路所需的最小维护金额。4.感想就是题目太长了,看不懂题目的意思啊5.代码#inc原创 2016-07-06 23:14:21 · 285 阅读 · 0 评论 -
2016sdau课程练习专题四 1002
1.题目编号10022.简单题意给你一些点的坐标,然后求连通这些点的最小线段的长度。3.解题思路先求出每个点和其他点的距离,存到图中,用Prim模板来做。4.感想题目难度还行,就是要注意是输入多组数据的5.代码#include#include#include#includeint f[109];double x[109],y[109]原创 2016-07-06 23:05:35 · 343 阅读 · 0 评论 -
2016sdau课程练习专题四 1001
1.题目编号10012.简单题意有n个村庄,编号1-n,以矩阵的形式给出任意两个村庄之间的距离,然后告诉已经有q个村庄已经修好了路,问现在要打算使所有村庄都联通需要修路的最小长度3.解题思路最小生成树的小变种,如果将已经存在的路距离修改成0,这样就会保证用prim生成树时这条路一定会入选并且长度不会计算在最小生成树内。4.感想最小树的求解问题,比较难做,没有做过啊,原创 2016-07-03 20:07:06 · 333 阅读 · 0 评论 -
2016sdau课程练习专题四 1003
1.题目编号10032.简单题意某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 输入:测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( 当N为0时,输原创 2016-07-03 19:53:55 · 281 阅读 · 0 评论 -
第四专题总结(图算法)
1.定义①树(Tree):n(n≥0)个结点的有限集。若 n = 0,称为空树;若n>0,则它满足如下两个条件:(1)有且仅有一个特定的称为根 (Root) 的结点;(2) 其余结点可分为 m (m≥0) 个互不相交的有限集 T1, T2,T3, …, Tm,其中每一个集合本身又是一棵树,并称为 根的子树(SubTree)。②图 (Graph) :一种复杂的非线性数据结构,由原创 2016-07-10 12:14:28 · 1050 阅读 · 0 评论 -
2016sdau课程练习专题三 1017
1.题目编号10172.简单题意有N件物品和一个容量为V的背包。第i件物品的费用是体积c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。3. 解题思路用f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]+w[i]]},即“将前i件物品放入原创 2016-05-29 19:57:38 · 243 阅读 · 0 评论 -
2016sdau课程练习专题三 1004
1.题目编号10042.简单题意若一个数的所有素因子是2、3、5、7中的一个或多个,则这个数成为Humble数。求第n个Humble数是多少?3.解题思路若一个数是Humble数,则它的2、3、5、7倍仍然是Humble数。设a[i]为第i个Humble数,则a[n] = min(2*a[b2], 3*a[b3], 5*a[b5], 7*a[b7]), b2、b3、b5原创 2016-05-28 12:20:45 · 288 阅读 · 0 评论 -
2016sdau课程练习专题一 1013 problemN
1.题目编号1013 problemN2.简单题意某公司要统计全年公司盈利情况,规定对于每一个月来说,如果盈利那么盈利s,如果亏空那么亏空d。每五个月公司进行一次总统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、7-11、8-12),已知这8次统计的结果全部是亏空(盈利-亏空3.解题思路统计了8次,8次都是亏空,要保证盈利。把亏空放到5月份,这时有一原创 2016-04-02 19:27:41 · 293 阅读 · 0 评论 -
2016sdau课程练习专题二 1002
1.题目编号10022.简单题意函数F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x ,输入几个数y,输出它在(0,100)内的极小值3.解题思路通过解数学的方法,对原方程进行求导,然后接着使用二分搜索对导数方程进行求解,然后就可以求出该题所求最值,属于第一题的变式题目吧4.感想原本看到这个题还以为要用三分搜索,但是同学说用二分搜索对导数进行求解原创 2016-04-15 19:40:35 · 341 阅读 · 0 评论 -
2016sdau课程练习专题二 1001
1.题目编号10012.简单题意输入几个数y,每个y要求在0~100之间找出一个数x满足方程 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,如果找不到,输出 No solution!3.解题思路使用二分法,分别在范围内找到该范围的中间数,然后比较得该数在哪个小范围中,再缩小那个小范围,直到找到该数x4.感想运用代码来解数学题,但要注意原创 2016-04-15 19:25:35 · 285 阅读 · 0 评论 -
2016sdau课程练习专题一 1008 problemI
1.题目编号 1001 problemB2.简单题意将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间.3.解题思路使用贪心算法来解本题,首先按照木棍长度和重量由小到大排列,然后比较不同的木棍长度,若后一个长度和重量都大于前一个则总时间不变否则加一分钟.4.感想关于贪心算法的一种实例原创 2016-03-27 14:22:35 · 367 阅读 · 0 评论 -
2016sdau课程练习专题一 1001 problemB
1.题目编号 1001 problemB2.简单题意将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间.3.解题思路使用贪心算法来解本题,首先按照木棍长度和重量由小到大排列,然后比较不同的木棍长度,若后一个长度和重量都大于前一个则总时间不变否则加一分钟.4.感想关于贪心算法的一种实例原创 2016-03-27 14:09:54 · 381 阅读 · 0 评论 -
2016sdau课程练习专题一 1000 problemA
1.题目编号1000 problemA2.简单题意 某层楼沿着走廊南北向的两边各有200个房间。公司要做一次装修,需要在各个办公室之间搬运办公桌。由于走廊狭窄,办公桌都很大,走廊里一次只能通过一张办公桌。要制定计划提高搬运效率。经理制定如下计划:一张办公桌从一个房间移到另一个房间最多用十分钟。当从房间i移动一张办公桌到房间j,两个办公室之间的走廊都会被占用。所以,每10分钟原创 2016-03-23 16:26:21 · 334 阅读 · 0 评论 -
第一专题总结(贪心算法)
1.贪心算法的定义:在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。2.贪心算法的步骤首先要确定一个可行的贪心标准,然后根据贪心标准进行排序处理(要学会使用stl中的排序函数),根据题意进行选择,保证达到题目要求。这就是贪心算法的一般要求,当然具体问题要具体分析,毕竟题原创 2016-04-02 19:55:41 · 269 阅读 · 0 评论 -
2016sdau课程练习专题一 1004 problemE
1.题目编号1004 problemE2.简单题意Input输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n Output对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。3.解题思路关于贪心算法的一个实例,运用课上说的相关知识进行简单改变:(1).排序 按照结束时间由早到晚进行排序(2).选择 将最早的原创 2016-03-20 20:34:15 · 521 阅读 · 0 评论 -
2016sdau课程练习专题一 1005 problemF
1.题目编号1005 problemF2.简单题意给你一个总价格,还有面值分别为1,5,10,50,100(单位:毛)纸币的数量,要你用最少数量的纸币和最多数量的纸币凑出这个价格,输出最少和最多的数量。3.思路求最少的硬币数时,直接从最大的开始检索,排序,如果需要的钱数大于最大的钱数, 那么就把最大的这个都放上,再继续加入下一个较小的硬币。 求最多的硬币数时, 我们可原创 2016-03-31 19:52:43 · 672 阅读 · 0 评论 -
2016sdau课程练习专题一 1012 problemM
1.题目编号2016SDAU课程练习专题一1012 problemM2.简单题意直接开方3.思路利用pow函数进行反复开方,然后输出结果4.感想要学会用函数啊5.代码#include #include using namespace std;int main(){int n;double p;while(cin>>n)原创 2016-03-31 19:38:58 · 466 阅读 · 0 评论 -
2016sdau课程练习专题一 1016 problemQ
1.题目编号1016 Problem Q2.简单题意奶牛产奶的中位数3.解题思路对输入的产奶量进行排序,然后取中间值4.感想挺简单的,排序取值5.代码#include #includeusing namespace std; int main() { int n,i; int a[10001]; while(原创 2016-03-30 15:32:41 · 389 阅读 · 0 评论 -
2016sdau课程练习专题三 1014
1.题目编号10142.简单题意直线分割平面的题目,要求是求n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示3.解题思路递推类的题目,和前面几个一个类型,找规律,当只画一条线的时候,之前有多少根直线就最多再多出之前直线数量的加1的平面,再画第二根线的时候,最多多出画第一根线之前的直线的数量个平面,原创 2016-05-25 10:35:32 · 216 阅读 · 0 评论 -
2016sdau课程练习专题三 1015
1.题目编号10152.简单题意把十进制数变成二进制数3.解题思路不用啥思路吧,只要知道十进制怎么变二进制就可以写出来吧4.感想水吧5.代码#includeusing namespace std;int main(){ int n; int b[11]; while (cin >> n) {原创 2016-05-25 10:39:11 · 202 阅读 · 0 评论