ACM贪心算法总结

通过这一段时间对贪心算法的练习,即通过对落单的数、主元素等的编程,我加深了对贪心算法的理解,更加明白如何通过贪心找到其局部最优解。
注意:贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解。
基本思想:通常以把总体分开的方式进行,以依次调整的方式作出相继的贪心选择,每一次的贪心选择将所求问题简化为规模更小的子问题。
做题情况:
学习贪心算法,所给的15道题中只AC了10道,并且有大部分题目自己打不出来只能搜一下看看别人的思路才可以,除了几道水题以外,大部分题目是用到贪做了这套题,虽然感觉很困难,但想办法还是能AC几道题的,做过这些题目使我对贪心算法印象加深,算是有进步吧,但还是不熟练,还需要加强训练。简短截说,还是在复习回顾一下,关于贪心算法的经典题目吧。
在此列出几个例题:
1背包问题(物品可以分割)
struct bag{
int w;
int v;
double c;
};
按性价比排序
选性价比高的装入
2最优装载问题
struct load{
int index;
int w;
};
按集装箱的重量排序
将重量最轻者先装
3活动安排问题
struct action{
int s;
int f;
int index
};
然后排序
用数组记录被选中的活动
学习还需要继续努力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACM竞赛是一项编程竞赛,常用算法与数据结构是竞赛选手在解决问题时所经常使用的方法和工具。以下是一些常见的算法和数据结构: 常用算法: 1.贪心算法:根据每一步的局部最优解来构建整体最优解。 2.动态规划:将问题划分为若干子问题,通过求解子问题的最优解来求得原问题的最优解。 3.分治法:将问题分解为若干个规模更小的子问题,分别求解这些子问题,然后合并子问题的解来得到原问题的解。 4.搜索算法:包括深度优先搜索(DFS)和广度优先搜索(BFS)等,用来穷举解空间以找到最优解。 5.图算法:包括最短路径算法(如Dijkstra和Floyd-Warshall算法)、最小生成树算法(如Prim和Kruskal算法)等,用于处理图相关的问题。 常用数据结构: 1.数组:一组相同类型的元素的集合,可以通过下标访问元素。 2.链表:一组由节点组成的数据结构,每个节点包含指向下一个节点的指针。 3.栈:一种先进后出(LIFO)的数据结构,只能在尾部进行插入和删除操作。 4.队列:一种先进先出(FIFO)的数据结构,可以在尾部插入元素,在头部删除元素。 5.堆:一种可以快速找到最大(或最小)元素的数据结构,分为大顶堆和小顶堆。 6.树:一种用来模拟具有层次结构的数据结构,包括二叉树、AVL树、红黑树等。 7.图:由节点和边组成的数据结构,用于表示各种复杂的关系或网络。 以上仅是ACM竞赛常用的一些算法和数据结构,选手在解决问题时还需要根据具体情况选择合适的算法和数据结构。掌握这些常用算法和数据结构,并根据实际问题进行灵活运用,可以提高解题效率和竞赛表现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值