贪心&&分治
2018-02-10 19:48
120 查看
这两个都不是什么算法,而是一种思想。分治 是一个把原问题拆分成多个小问题,再把这几个小问题算出,在转换成大问题。 这个问题要满足以下几种性质1,好拆2,好合3,(最小的)子问题好求我们来算一道题: 斐波那契数列这道题是可以不用分治的,我们来看一下我们可以用递归,但是时间复杂度很高,为什么Fn=Fn-1+Fn-2;Fn-1=fn-2+fn-3;Fn-2算了两遍,所以用分治会比较好快速幂(数字的分治) 来一道题:c=a^p%b(p<=long long) 这题怎么办?一道一道乘起来?不可能!(看一下后面的数据) 所以用到快速幂 A^(a+b)=A^a*A^b; 这题想必大家都知道,我们可不可以就吧p拆成两份,拆后平方一下不就好了? 就这样一直递归下去,直到是一就返回a,这样减少了很多时间复杂度代码实现int power(int a,int b,int p)//算递归 { if(b==0){ return 1%p;//防止p=1; } else if(b==1) { return a%p; } else { long long res=power(a,b/2,p); res-=res; res%=p; if(b%2==0) { res-=a; res%=p; } return res; }} int power(int a,int b,int p)//notDG { int res=1; for(long long i=1,x=a;i<=b;i<<=1) { if(i&b) { res*=x; res=res%p; } x*=x; x%=p;}return res;} 归并排序:是一种很经典的,时间复杂度很低的一种求逆序对的方法原理:就是用分治法,分成两个部分(平均分配),三种可能(及全部在左边,或右边,或两边都有)代码实现:long long ans=0;void Sort(int begin,int end){ if(begin==end)return ; else { int mid=(begin+end)>>1; Sort(begin,mid); Sort(mid+1,end); int h1=begin,h2=mid+1,t1=mid,t=begin; while(t<=end) if(h1<=t1) if(t2>=h2) if(c[hi]<=c[h2]) top[++t]=c[hi++]; else{ ans+=t1-h1+1; top[t++]=c[hi++]; } else top[t++]=c[hi++]; else top[++p]=c[h2++]; } for(int i=begin;i<=end;i++) c[i]=temp[i]; return ;} 贪心 贪心的是一种从前一个结论推出下一个结论的方法(我也说不清) 贪心是一种思想,只能用题目来理解。 合并果子(题目我就不说了,只讲思路,题目网上也可搜) 想必这题一定都做过,是一到典型的贪心 方法:现将其排序 把两个最小的放在一起合并 剩下在排序 两个最小的放在一起……删数问题对于给定的n位正整数a,编程计算删去k个数字后得到的最小数。这道题显然很简单,把最大的数找到,删掉便可来到语文题,考考你们的理解力现有一张N!个节点的图,每个节点的编号都是A1A2A3…AN序列的一个置换。对于任意两个节点S和T,如果T的编号是由S编号的首位与除首位外的编号中任一位交换所得 ,则S和T之间有一条边,求从给定节点S走到节点(A1A2A3…AN)所需经过的最少边数。其中,n≤100。 理解的了吗?我们来转换一下身高为1~n的n个人随意地站成一列,你每次可以交换队首与队中的某一人的位置, 你需要进行多少次交换才可以让这n个人的身高升序排列?这样理解了吗?是不是理解了?所以,信息也考语文。(很多题目都是这样)思路:留给大家思考一下下提示:不在应有位置上的数便是交换的次数
相关文章推荐
- Day6——贪心&分治
- DAY2贪心&分治
- &lt;算法竞赛入门经典&gt; 第8章 贪心+递归+分治总结
- BZOJ 3181: [Coci2012]BROJ 【数据分治(暴力+(二分&&容斥))
- UVa 11054/HDU 1489/POJ 2940 Wine trading in Gergovia(贪心&双向队列)
- 五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)
- Poj 2741Colored Cubes(贪心&枚举)
- [分治 杂题] Codeforces Gym 101173 CERC 16 G & BZOJ 4792 Geohash Grid
- HDU 4582 DFS spanning tree 解题报告(贪心 & 树形DP)
- UVA 11368 & POJ 3636 & HDU 1677 Nested Dolls(贪心 + 二分LIS)
- hdu6237-2017哈尔滨CCPC-质因子&贪心&暴力-A Simple Stone Game
- 五大常用算法:分治、动态规划、贪心、回溯、分支限界算法
- bzoj4291.Kieszonkowe(大根堆 && 贪心)
- 每日一题(13)——24点 (分治&递归)
- [玄学分治 || 线段树] BZOJ 2675 Bomb & Tsin 1322 Bomb(李超)
- bzoj4278[ONTAK2015]Tasowanie & bzoj1692[USACO 2007Dec]队列变换(Best Cow Line) 贪心正确性证明
- UVa 1267 Network (DFS&贪心)
- 【LightOJ】1198 - Karate Competition(贪心 & 双端队列)
- 分治与递归、动态规划、贪心
- UVa 10905 Children's Game ( 贪心 )