杭电oj100 P2

1.人见人爱A-B
就是求第一个集合中不同于第二个的所有项,可以先排序,然后暴力两次输出

2.人见人爱A^B
A的B次方,1.使用Pow函数 2.就使用for循环 这道题有个点在于,只需要求后面三位,估计是因为给的值太大了,所以在每次乘了之后,可以取余,也就是%1000,这样可以减少计算的值

3.改革春风吹满地
这题的难点在于1.如何将多边形变成一个个的三角形 2.如何通过坐标来求三角形的面积
也就是三点求一个三角形的面积:https://blog.csdn.net/chenshibo17/article/details/79260532
而多边形变成一个个三角形的话,是靠循环拆分。

3.今年暑假不AC
这道题就是用贪心算法来求解的,最重要的是1.使用结构体 struct 2.使用自定义的排序方法

4.真约数
也就是求约数,要注意,为了减少计算量,求约数的计算可以从1到n/2,不用到n
.
5.超级楼梯
也就是动态规划,第n步可以怎么来,也就是跨一步来的,和跨两步来的

6.不容易系列2
和之前的蟠桃一样,算是数学题,递推即可

7.密码
也就是进行一个统计,flag++或者按照之前的,每一个都设置一个flag(同时要对第一个进行区别对待)

8.一只小蜜蜂
和之前的母牛问题和阶梯问题类似,由题目和图可以知道对应递推式子,然后主要是从a到b怎么选,而这个关键在于从蜂房a到蜂房b,不是单纯的直接数组w[b]-w[a] ,因为经过蜂房b 的不一定经过蜂房a,所以应该是相当于将a到b的距离平行移动到,0到(b-a)的距离才是。所以应该是w[b-a]

9.不容易系列三——lele的RPG难题
这道题应该算是难度较大的,不容易找到规律的递归题目吧,(也算是数学题)

10.骨牌铺方格
横着和竖着两种放置方法

11.阿牛的EOF牛肉串
同理可解

12.神,上帝以及老天爷
这道题之前算是研究好一会了,主要就是错排的“老大哥”,a[n]是需要求解的,假设我们在其中随便那一个数k,他有除了中间之外的地方n-1个位置可以放,然后假设他放在了g处,就要对g进行分类了,如果G刚好是在g这个位置,那g放到了k这个位置就相当于k和g成功进行了错排,那就是剩下n-2个位置没有排序了,而个g不是在k这个位置,那就是把g当做新的一个k来错排n-1个位置(为什么少一个位置,是因为那个位置已经被k占走了)a[n-1] 所以最终结果是 n-1
(a[n-1]+a[n-2])
*

13.考新郎
在已经知道之前错排只是之后再写这道题就会轻松些,相当于在n个里面找m个 Cn m,然后对M个再进行错排

14.折线分割平面
这道题之前也是困扰我一会的,主要在于,对于直线和折线这些概念不清晰,那我现在就再理理看,先看n条直线最多能生成多少个平面 0条直线 1个平面 一条直线 增加一个平面 两条直线 增加2个平面,也就是每增加一条直线,就与之前所有的直线都产生交点,而产生n个交点,就会n+1个平面。所有n条直线的话,与之前n-1条,产生N-1个交点,也就是n个平面,由此可知 一条直线增加一个平面,两条直线增加两个平面 。。。就是1+1+2+3.+。。。。+n
再看看两条平行线,算是一组,那个按照之前直线的逻辑,第n-1组,也就是前面2n-2条直线,第n组的这两条之间都分别每条与前2n-2条产生2n-2个交点,也就是2n-1个平面,所以一共产生4n-2个平面(第n组)所以 1+2+6+。。。+4n-2等于 2nn+1
然后看折线,会发现一条折线相当于一组平行线减去一个平面,所以有N组平行线,减去n个平面
所以最后的结果是 2nn+1-n 为折线的总平面数

15.picture
也就是对格式的一些要求

16.switch game
这道题算是难在理解题意上面的,其实问的就是数学问题,如果你的因子数是双数的话,就会变成原始状态,如果是单数的话,就会变成另一个状态,而区分单数还是双数,就在于看他是不是一个完全平方数,而判断他是不是完全平方数,就是用 (int)sqrt(n)==sqrt(n) 或者别的算法,都可以

17.A==B
这题也就是A等于1 B等于2 。。。然后a=-1 b=-2
算是一种转换形式吧,当这个值是大写的时候,那就是这个值减去A然后加一
当这个值是小写的是 那就是这个值减去a加上1 然后整体取负数 就等于a-1-这个值

18.A + B Again
一道“有点奇葩的”题目,也就是十六进制可以直接相加。。
具体可看这个:https://blog.csdn.net/shaodongyue/article/details/81783323

19.龟兔赛跑
是一道需要好好分析的题目,首先这题有个默认的地方在于,乌龟到每一个站点都是需要充一次电的,所以对于兔子来说,时间就是路程除以速度,而对于乌龟来说的话,其实就是对每两个站之间进行分类,如果电够的话,那就是路程除以开车的速度,如果不够的话,那就是开车的时间再加上走路的时间,而总时间是这些时间加在一起之后,在加上每个充电站之间的时间。最后两个时间继续对比即可。

20.subset sequence
这道题其实也算是一道规律题,其实是有点难度的,而且我没怎么看懂。。
建议参考博客:https://blog.csdn.net/qq_33266889/article/details/53468509

21.过山车
也就是匈牙利算法,关键一个字“腾”,这是一个递归的过程,需要创建一个布尔型的二维数组来判断双方是否有连线,然后就是有一个int类型的数组来判断被选中这一方所选择的人,还有一个布尔型来判断是否被选中了,详细内容可以参考我之前写过的一篇博客,还挺简单的

https://blog.csdn.net/qq_41115379/article/details/105006044

22.汉诺塔
其实还是动态规划的一种算法,计算N规模的话,就假设n-1规模的已经解决了

23.红色病毒
这应该算是:母函数的问题吧,对于一些是x0到xn 而对于一些是x0-x2-x4 这样子的,需要有两个for循环来计算,然后就是初始化过程,次方的计算过程
不熟悉的可以再看看这个:https://blog.csdn.net/qq_41115379/article/details/104906584

24一个人的旅行
这题我有些写过,将路径问题分类
首先是最短路径:单起点单终点的话(也就是给定起点和终点的话)是迪杰特斯拉算法(需要用到标记为和不断更新,将一个点纳入到起点之中)
多起点多终点的话,那就是弗洛伊德算法(L[i][j]=min(L[i][j],L[i][k]+L[k][j])

然后是最小生成树(也就是解决所有的点都要连通的问题,n个顶点n-1条边长)用并查集和克鲁斯卡算法)

25.小兔的棋盘
算是动态规划算法

26.RPG的错排
就已经说了,是错排,从那个原始的公式出发a[n]=(n-1)*(a[n-1]+a[n-2])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值