五月第二周 题解 交大OJ

五月第二周 题解:


1018: 九进制:


主要是把 数字 i 转化成字符串(OJ 不支持itoa 函数,自己生成一个这样的函数);然后判断数字中是否有 ‘4’,有f[i]=f[i-1]; else f[i]=f[i-1]+1.




1020: Thursday--交换礼物:
这题N的范围没有给,M<=20,可以从longlong 存组合数;主要考察 错排M(n)=(n-1)*(M(n-1)+M(n-2)); 还有组合数的计算公式。




1013: 跳马
1、直接深索 就过了, 初始化ans=10(感觉结果不会超过10 ==!),剪枝 if (cur>ans)就退出搜索。
2.看张计用的 queue,自己敲了一遍,比我的方法好,时间快。
t[i][j]表示从 点(i,j) 到目标点的最少步数。
初始化t[][]均为-1;源点的t[][]=0;
从源点开始扫描其它点,如果当前点 (nx,ny)未访问过,则入队,而且t[nx][ny]=t[cur.x][cur.y]+1;
结果就是 t[en.x][en.y]的值.




1007: 直方图内接面积最大矩形
这题是勉强过的,2s左右。。。
一次循环,对于当前的高度a[i],往左右两边扩展,得到它最长能扩展的长度 num,判断 max和 a[i]*num的大小,更新 max的值。
结果即为 max。 




1017: 结交朋友
这个就是 并查集了,用了两种方法写的。实质差不多。




1010,1011:Max Sum 
dp的 最大连续子串和。。。




1099: 中位数
这题哎,两个 有序的数组合并成一个新的有序数组。
就是i指向a[]数组,j指向b[]数组,比较a[i],b[j]大小,小的添加入新数组内,并且往后移动i和j位置






1003: 删数问题(I)
数据范围小,n<100;
就是最大上升子序列。




1004: 删数问题(II)
上一题的升级,n<100000;
不能用dp了,但是可以二分查找每次 要放入数字的位置,二分(logN),外面一层循环(N),所以时间复杂度(N*logN)
可以过。
还可以用一个二分查找的系统函数pos=lower_bound(a,a+num,x)-a; 
pos返回的是数组a[]中 大于等于x的第一个位置!






1008: 反幻方矩阵
水题,无视。。




1005: 穿越小镇
搜索,自己弄了好久,超时,编废了。
其实,一旦经过那个点,就把 它永远设为已 访问过。
因为,通过那个点往下走,只有两种情况,1.找到终点,2.找不到终点,找不到的话,下次走这个点还是不能找到的!
这样 剪枝的幅度就大了。
0ms过。




1009: 马和象的较量
还是搜索,dfs
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值