自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (1)
  • 收藏
  • 关注

原创 ACM课程学习总结

ACM课程已经到了结尾了,通过这一学期的学习虽然不能说老师讲的东西完完全全掌握了,但是还是学到很多东西,不单单指学习的内容,还包括一些学习的方法。我选择ACM这个课程的原因是这样的:其实上个学期我的选修课已经选完了(除了ACM),当时咨询了老师什么是ACM,还在犹豫考虑报不报,其实这个课程的分类是分流课,不在我们必须修满的课程类别里面,只是想是不是能多提高一下自己。回忆起高中高一的时候,有报信

2016-07-05 12:06:29 1717

原创 图论专题总结

ACM课程的最后一个专题,图论,其实这个专题还是比较有意思的,不过因为最后课时紧张,讲的也不是很详细。对于图也只是学个皮毛,因为快到期末考试了,题目做的也不是很多,其实还是学的东西不深,后面题目一难就不会做了。

2016-07-05 10:44:45 1204

原创 Problem S

简单题意给定一系列数对,例如a和b,表示a和b不是同一种性别,然后不断的给出这样的数对,问有没有性别不对的情况。解题思路形成过程并查集问题。实在不会了,WA了好几次,于是去网上看了一下大神的思路。每次合并之前判断是否冲突,不冲突就合并,用opp保存对立的单位,set保存并查集中的元素。opp保存对立单位,set保并查集中的元素;当opp[x]==0 && opp[y]==0时,证明

2016-07-01 12:35:17 312

原创 Problem N

简单题意是n个发电站,m条路,每条路有各自的距离,每个发电站有各自的发电量,现在需要炸毁它们,一辆坦克只能炸毁一个发电站,而且需要炸毁的发电厂的发电量需要大于所有发电站所产生的总电量的一半,求坦克走的最短距离。解题思路形成过程因为题目说明不超过100个点,所以可以用floyd算法,不过因为用了三重循环,算法复杂度会增加,一不小心就超时,用cin的话就会超时,必须用scanf。把所有的0

2016-06-30 13:30:35 266

原创 Problem K

简单题意给出每段路程所需花费,给出起点终点,找出从起点到终点的的最少花费。解题思路形成过程和Problem I差不多用Floyd算法,建好图之后三重循环,看了网上提示之后才发现,原来数据会很大普通的int盛不下,用long long吧。没费什么力气就过了。就是数据类型需要注意下一下感想处处是坑,等你跳AC代码#include  #includeusing n

2016-06-29 11:09:45 320

原创 Problem L

简单题意n*m大小的矩形,起点在左上角, 终点在右下角,里面一个小矩形代表一个block。每个小矩形的边长都是2520, 小矩形的边有一个速度限制,范围是0~9, 0表示这条边不能行驶。输入部分,从上到下,从左到右,  每一条边是  "数字"+“空格”+“符号”的形式, 数字表示这条边的限速, 符号表示这条路是单向(分东西, 南北)的还是双向的。解题思路形成过程其实本来打算放弃的因为这

2016-06-28 17:24:56 226

原创 Problem H

简单题意n个点,给你n条边,要求你连一些边,是边权总和最大(整个图可以不连通,对于每个连通子图最多只能有一个环)解题思路形成过程当初呢个题里面那个单词看不懂啊pseudoforest,去百度搜也没这个单词的意思,只有这个题啊,好吧我就看看别人写的题解吧,原来就是考虑环的问题。按照最大生成树的做法,只要在连接同一个连通子图的两个结点是判断该子图是否已有环,没有才可以连接。在连接不同连通子

2016-06-27 16:20:10 392

原创 Problem K

简单题意求最短路径问题,给出城市相连的,给出相连城市车程,给出想去的城市,求出最短时间。解题思路形成过程这个题的输入数据很多比较乱,但题本身就是最原始的最短路径问题,用dijkstra算法解决,每次找出最优路径然后修改,循环下去,最后找到所有到所有顶点的最短路径,然后找出最短的输出。感想虽然有套路可以用但是做起来还是很费事AC代码#include#include

2016-06-27 12:13:44 185

原创 Problem I

简单题意给出起点和终点,找出从起点到终点的最短路线。解题思路形成过程用一个二维数组保存两个地点之间的距离,之后遍历每两个点(A,B)搭配,看如果两个点之间再插入一个点(C),如果A-C-B比A-B短,那么更新数组的值,最后直接输出数组中代表起点和终点的值感想做Problem G做了好长时间没做出来,放弃了。。。。这个题还是可以的换换口味AC代码#include#

2016-06-22 12:34:18 228

原创 Problem F

简单题意给出村庄(编号用字母表示)与其他村庄之间道路的维护费用(村庄不一定和其他村庄有直接相连的道路),选择适当的道路进行维护,使得所有村庄都能通过被维护的道路连通而且维护费用最少。解题思路形成过程又是求最少(小)的问题,还是换汤不换药,重用Problem D的代码,不就是把村庄序号改成字母了嘛,用ASCII码转换成数字,对于“村庄不一定和其他村庄有直接相连的道路”没有直接道路相连

2016-06-21 09:56:35 204

原创 Problem B

简单题意在平面直角坐标系中给出各个点的坐标,要求把这些点连通起来,要求连接的线段长最短解题思路形成过程经历了第一题的转化的教训,我想了想这个题还能用Problem D的代码把dis数组的内容改一下即可,dis数组保存的是任意两个地点之间的距离,这个题只给了各个点的坐标,那任意两个点的距离就自己算嘛(其实是想偷懒利用原来的代码,冒着自己算可能会超时的风险),算完之后,还有一些细节要修改,

2016-06-20 09:13:28 198

原创 Problem E

简单题意任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态计算出全省畅通需要的最低成本。解题思路形成过程做了前几道题有经验了,和前面的一样嘛,只不过就是把权值从距离换成费用,求最小距离变成求最小费用。只要改一下输入代码,把已经修好的路的成本设为0就行了,其他算法不用改。感想弄

2016-06-16 12:31:17 193

原创 Problem A

简单题意给出村庄间的距离,并给出已经修好路的村庄,求使村庄连通起来最小修路距离解题思路形成过程这个题和Problem D畅通工程差不多,只不过这个已经有修好的一段路,看了网上一段代码的提示才突然发现,只要把已经修好路个两个村庄之间的距离设为0就行了,之后其他代码不变。感想就那么一点,怎么就没想到距离设为0呢AC代码#include #include #inclu

2016-06-15 11:57:38 216

原创 Problem D

简单题意给出了任意两村庄间的距离,使任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)求铺设的公路总长度为最小。解题思路形成过程用了搜索的内容,用邻接矩阵把村庄的距离存起来之后搜索,从第一个村庄开始走,把没走过的村庄的最短的那个距离与村庄编号记录下来,重新更新一下到达每个村庄有效的最短距离。感想这个有关图的题需要好多的脑细胞啊。。。想象力很

2016-06-14 12:14:14 220

原创 Problem C

简单题意使任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?解题思路形成过程最简单的不带权值考虑问题,老师上课讲的典型并查集问题,首先单独建立集合,把已经建立联系的村庄放到一个集合中去,最后只要找没被改过集合的数量就行了感想思想还是很模糊,接下来老师没讲的带权值的怎么做啊。。AC代码#include

2016-06-14 09:45:21 179

原创 动态规划专题总结

动态规划思想比较巧妙,是解决多阶段决策问题的一种方法。如果一类问题的求解过程可以分为若干个互相联系的阶段,在每一个阶段都需作出决策,并影响到下一个阶段的决策。多阶段决策问题,就是要在可以选择的那些策略中间,选取一个最优策略,使在预定的标准下达到最好的效果。典型例题有,菲波那契数列问题,背包问题,最典型的代表例题还是最长上升子序列的问题。首先是菲波那契数列的问题,这个也是比较简单的动态规划的问题

2016-05-30 12:37:18 438

原创 Problem U

简单题意有分别价值为1,2,3,4,5,6的6种物品,每种价值物品有相对应的数量,问能否将物品分成两份,使得两份总价值相等。解题思路形成过程老师上课讲的例题,主要思想就是把一个多重背包问题,转化为01背包或完全背包来解决。

2016-05-29 22:43:43 252

原创 Problem S

简单题意杭电要分家,家当要尽量平均分,保证A>=B,给出,每种价值的家当的价值,及其数量,求出平分家当的结果。解题思路形成过程题目中有个提示,You can assume that all V are different,把每个家当都当成不同的(忽略价值一样),这样用一个数组,把每个价值分出来,之后就是dp了,dp数组保存的是当前状态最优的分配方法。AC代码#include

2016-05-19 22:55:44 211

原创 Problem C

简单题意给你个棋盘,棋盘上有数字,不过只能走比当前数字大的地方,求出从起点到终点,能走过最大数字和。解题思路形成过程这个不就是老师讲的求最大上升子序列和,的那个题吗,看到英文比较长就没想看,看了之后其实一开始没看懂(英文一般般),真是换汤不换药,思想就是,假设以当前数为结尾,那么最优就是,前面最优加上当前数。最后再求出这些不同结尾的序列的最大值。感想细节问题处理不好错了两次

2016-05-15 17:01:48 205

原创 Problem B

简单题意字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X的子序列,存在X的一个严格递增下标序列,i1,…,ik-1>,使得对所有的j=0,1,…,k-1,有xij=yj。例如,X=“ABCBDAB”,Y=“BCDB”是X的一个子序列。(实在不好

2016-05-09 22:18:15 396

原创 Problem R

简单题意给一个储钱罐,已知空的储钱罐和装了硬币的储钱罐的质量。然后给了n种硬币的质量和价值。问储钱罐里最少有多少钱。解题思路形成过程

2016-05-07 12:43:59 250

原创 Problem E

简单题意给猩猩N种长方体,让猩猩通过 叠长方体来够到上方的香蕉。 现在给你N种长方体,计算,最高能堆多高。要求位于上面的长方体的长宽要大于下面长方体的长宽。解题思路形成过程一开始没想出来怎么做,看着网上代码逆推了一下,每种长方体都可以变成6种(有三个不同的面,每个面长和宽都可以调换),每次输入把变成6种存到数组里,对于每种不同情况都会影响接下来箱子的放置方法,就需要用动态规划,先排序(

2016-05-07 09:46:25 481

原创 Problem Q

简单题意给出背包能装的骨头容量,给出每个骨头所占容积,和价值,求出背包所能装骨头的最大价值解题思路形成过程这类背包问题做多了,套路就出来了,每个骨头开始遍历,如果背包容量能盛下这个骨头,那就看是否当前容量下的价值,是否比“没加当前骨头容量的价值,加上当前骨头的价值”的价值大,否则就拿上这块骨头感想背包问题,也可以用dp做,感觉比贪心好理解一点。AC代码#include

2016-05-05 12:36:55 220

原创 Problem V

简单题意知道每家银行的存钱,和抢劫银行被抓的概率,和自己被抓的最大概率。求出在不被抓的情况下,抢劫最多钱数。解题思路形成过程当前状态不被抓的概率等于,不抢这家银行之前不被抓的概率乘抢劫将这家银行不被抓大概率,因此状态转移方程:dp[j]=max(dp[j],dp[j-m[i]]*pro[i]), dp[j]表示抢j钱时的最大不被抓概率。感想动态规划的思想真的很精致巧妙A

2016-05-04 12:06:03 341

原创 Problem X

简单题意给出手中所拥有的钱,商品能有购买得资格所需要的钱,商品的价格,以及商品对自身的价值,求出最大你能获得的价值解题思路形成过程这个和出国选学校的的那个差不多,只不过是把申请资格和实际花费的钱分离了出来。在原先代码改一改就行了。AC代码#include#include#include#include#includeusing namespace std;

2016-05-03 15:35:39 267

原创 Problem W

简单题意总共n万美元,在m个学校中选择若干的(在经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且估计了得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。计算一下,可以收到至少一份offer的最大概率。解题思路形成过程至少一份offer的最大概率,直接求不好求,但是可以求它的对立面,即一个都不能得到的最小概率,这样就把问题转化为了dp问题。只是求

2016-05-03 12:45:40 232

原创 Problem D

简单题意有一个序列,序列每一个数所有因数(全部拆成素数),都是由2.3.5.7.组成的(数量不限),把这种数称为Humble数,给出n,求出数列第n个数应该是多少。解题思路形成过程若一个数是Humble数,则它的2、3、5、7倍仍然是Humble数。就是说不断找出按不同数量组成的2.3.5.7的数从小到大排序,设a2,a3,a5,a7,分别保存2.3.5.7在humble数中的组成个数

2016-05-01 22:11:21 222

原创 Problem O

简单题意给出十进制数,输出对应二进制数解题思路形成过程就是不断用取余2,取整2转换2进制,最后反向输出就行。感想怎么还有这么简单的题,这个也是动态规划?有去看了看动态规划的概念,好像还真是。AC代码#include#include#include#include#includeusing namespace std;int main(){

2016-05-01 11:14:30 218

原创 Problem P

简单题意在一无限大的二维平面中。1.每次只能移动一格 2.不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走)3.走过的格子立即塌陷无法再走第二次求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)解题思路形成过程这个就比普通的菲波那契数列增加了点难度,需要推一下:f[n]表示走n步的方案数,x[n]表示向下走的方案

2016-04-30 20:15:11 250

原创 Problem K

简单题意有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。解题思路形成过程这种题做多了一眼就看出来是菲波那契数列,只不过这个不是从一开始开始做的,是从中间任意一个位置开始。其实都一样感想中文题简单点,注意64位整数AC代码#include#include#includeusing namespace st

2016-04-30 18:15:01 196

原创 Problem J

简单题意有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法解题思路形成过程感觉做过很多类似的题,就是变形的斐波那契数列,对于每层楼梯,可能是上一个状态走了两层到达的,也可能是走了一层上来的。AC代码#include#include#includeusing namespace std;int main(){    

2016-04-28 22:32:54 199

原创 Problem F

简单题意数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少解题思路形成过程可以倒着想,从最底层走到对顶层,从底层往上走,每往上走一个点,都会有两个来源,选取其中最大的来源,逐层往上,直到到达顶层,则顶层的数据就是最大和。感想老师讲过的例题,做起来还是很简单的AC代码#include#include#includeusing

2016-04-28 22:15:18 237

原创 Problem N

简单题意求n条折线分割平面的最大数目。解题思路形成过程拿到这个题的时候,就联想起,高中的时候听过自主招生的题,其中有一道题就是,用直线分割平面最大区域数(听说当年华罗庚出了一个用直线分割空间的题),这个其实就是递归,直线的情况是若要加上第n根直线分割最多,就要让n-1根分割最多的情况下,让第n根直线,与前面的n-1根直线都有交点,递推关系就出来了,折线的情况也是类似,麻烦的就是求出第n

2016-04-26 22:06:38 221

原创 Problem M

简单题意有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。第n年的时候,共有多少头母牛?解题思路形成过程这个题上学期老师给我们布置过,翻了上学期的代码,发现原来这就是动态规划呀!!,也是一个斐波那契数列,和Problem L是一样的,首先判断n,因为前4年是数列初始值,不能dp需要人为直接赋值,四年之后用上一年的牛(本来活着的)加上三年前的牛(有多

2016-04-26 20:26:59 198

原创 Problem L

简单题意给出一个2*n的空间,用2*1的骨牌把他填满,问有多少方法解题思路形成过程虽然是2*n,其实只考虑一行就行(题目特殊有对称性),根据动态规划思想的启发,每行一次安排骨牌要么一下占一个,要么占2个,如果前面安排方式确定,那么多一个就可以,在前面的情况下加一个放一个,或在前面的前面的情况下,加两个。感想一开始测试挺对的,交上去就是不对,感觉是不是中间出了什么问题,就把n=5

2016-04-26 12:33:45 225

原创 Problem A

简单题意给出一组数字,从中找出连续的子集和,使得和最大的那个子集,输出的时候,要输出最大和,子集的开头位置,结束位置。解题思路形成过程这个应该是DP的典型题型了吧,上课老师讲的和这个题差不多,只不过这个题多了位置记录,子串和如果是负的话没做什么要求,首先先用DP找出最大值,思想就是以每一个数为结尾,那么这个数前面的子串求和最大(也就是最优情况),将所有的以每个数结尾的最优情况保存在数组

2016-04-26 11:03:53 224

原创 搜索专题总结

本次专题是搜索,搜索就是通过不断列举状态来求得结果,主要分为二分搜索,三分搜索,广度优先搜索,深度优先搜索。二分搜索和三分搜索比较简单,广搜和深搜需要考虑许多细节问题。对于二分搜索,方法是:确定上线和下限,然后通过不断二分取中间值逐渐缩小区间,当区间上下限差足够小时就可以认为,求得了结果,典型例题有1Can you solve this equation,2Strange fuction,5T

2016-04-23 15:43:34 379

原创 10Catch him

简单题意输入给出准备擒杀四分卫的防守球员的位置、对方每个进攻锋线球员的位置以及对方四分卫的位置,你的任务是求出这名准备擒杀的防守球员至少要移动多少步,才能够擒杀对方四分卫。假设对方进攻锋线和四分卫在这个过程中都不会移动。只有1名防守球员,防守球员只要碰到对方四分卫就算擒杀。所有的球员都是一块连续的、不中空的2维区域。防守球员不可以从进攻锋线的身体上穿过,也不可以从界外穿过(只能走空地)。防守队

2016-04-22 18:25:18 284

原创 17非常可乐

简单题意有两个杯子容量为M,N,有体积为S得的可乐, S==N+M,101>S>0,N>0,M>0,让用这些容器,平分可乐解题思路形成过程老师上课讲的例题,就是互相倒可乐,直到完成目标为止,用广搜。感想做完这个题,如果是我倒完这么多遍可乐绝对不喝了。。。。。AC代码#include#include#include#include#includeusi

2016-04-20 12:18:42 200

原创 13&14A strange lift

简单题意有一个奇怪的电梯,每层楼都有一个数字,每次上楼或下楼,只能走和数字相同的楼层数,让求出少上下楼次数,到达目的地。解题思路形成过程这个提议比较简单,和老师讲的一那个抓牛的题差不多不过走的规则不一样。用广搜,每种情况都试试,走过的做个记号,直到到达目的地。感想这种题在实际有什么类似的情况吗?AC代码#include#include#include#i

2016-04-19 19:47:50 310

空空如也

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

TA关注的人

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