寒假算法题单

HDU-1559最大子矩阵
这是一道很裸的二维前缀和题,如果没了解过前缀和,暴力枚举每种情况,时间复杂度是O(N^4),N为1000,也就是10^12次方,而计算机一秒大概是10^8或10^9,显然会TLE。
预处理出前缀和之后,遍历每个子矩阵的时间O(N^2)就优化成了O(1)

样例输入:

样例输出:

2474

(1)当使用前缀和算法时,如果下标从0开始,因为要用到i - 1这种下标,必须要进行判断,否则会数组越界。所以下标从1开始,减少一些边界判断。

(2)多组输入数据记得将使用过的数组初始化,否则会WA。

POJ-3984 迷宫问题

样例输入:

样例输出:

这是很经典的bfs模板题,相对于直接求最短路来说,输出方案《有点》麻烦。(输出方案的几行代码debug花了1个小时 😥 😥 😥 😥 😥
当时51,52行代码 我写的是 x1=pre[x1][y1].x y1=pre[x1][y1].y 差点人都de没了,一直没想到是这出了错误。
原因:当pre[x1][y1].x赋值给x1后,后面想赋值给y1的时候,其实赋的是pre[pre[x1][y1]][y1].y
所以需要要用俩个变量存下来,然后再赋值给x1,y1;

BFS算法的时间复杂度是O(N),如何确保每个点只遍历1次呢?

大部分的bfs需要用到判重数组st,如果当前这个点遍历到了,就将其标记。

UESTC-32 树上战争

样例输入:

样例输出:

题意:谁最靠近公共祖先谁就赢。
算法:并查集
HDU-2544 最短路

样例输入:

样例输出:

最短路板子题,N为100,数据范围很小,可以用最简单写的多源最短路Floyd,时间复杂度 O(N^3)
需要注意考虑重边和无向边(第28行代码)
HDU-2066 一个人的旅行

样例输入:

样例输出:

HDU-1233 还是畅通工程

样例输入:

样例输出:

最小生成树板子题 用Kruskal算法
HDU-2546饭卡

样例输入:

样例输出:

先拿出5块买最贵的菜,然后再用剩下的钱买其它菜要花的最大价值,这就转换成了01背包问题
HDU-1166 敌兵布阵

样例输入:

样例输出:

题目嘎嘎长,其实就是动态的单点修改,区间求和 😮 😮 😮
树状数组登场 😍 😍 😍
HDU-2063过山车

样例输入:

样例输出:

二分图匹配---匈牙利算法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值