1,算法思路
贪心算法的核心思路就是通过局部最优解来解决全局最优解的一种算法思路,对于这种思想我们在使用的时候要保证一个过程就是可以使用局部 – > 全局的结果。
常用的解题思路:猜思路再解题,只演算不证明。
2,常见的应用
对于贪心算法,我们难就难在思路上,但是对于思路我们只通过不断的增加见识来完成这段的补充。
还有一点是代码实现上,我们可以在贪心策略下积累一些代码之间墨守成规的规则,来更快的完成代码的实现。
总的来说贪心策略是一种不怎么好理解的东西,下面的几个例题其实也都是比较简单的贪心问题,可以作为参考来看,但是总的来说贪心策略我们也可以大类的划分一下,虽然关联性没有想到的那么强。
这几道是相关区间的题型,但是似乎他们并不是那么专一,其实最重要的还是他们的排序。
acwing 905 , 906 ,907 ,908
请跳转
运算符的重构
bool operator <( const R &W)const
{
return r < W.r ;
}
下面是哈夫曼树的题型
请点击
#include <iostream>
#include <queue>
using namespace std ;
const int N = 10010 ;
int main ()
{
priority_queue<int ,vector<int> , greater <int> > heap ;
int n ;
cin >> n ;
for(int i = 0 ; i < n ; i ++ )
{
int x ;
cin >> x ;
heap.push(x);
}
long long ans = 0 ;
while(heap.size() > 1 )
{
int t1 = heap.top() ;
heap.pop() ;
int t2 = heap.top() ;
heap.pop() ;
ans += (t1 + t2) ;
heap.push(t1 + t2 ) ;
}
cout << ans << endl ;
return 0 ;
}
贪心算法可以去codeforces上来练习,效果还是不错的。