贪心分治

所谓贪心,就是总是做出在当前看来是最好的选择,并不是从整体最优考虑。

HRBUST1184 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1184

先把接水时间按从小到大的顺序排列,这个顺序就是最优顺序,有一个小小的亮点就是运用结构体使得排序后的接水时间在以前数组中的的序号是如何表示的。

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<string.h>
 5 using namespace std;
 6 struct node{
 7 int id,t;
 8 }ss[100005];
 9 bool cmp(node x,node y){
10 if(x.t==y.t)//要注意这个if语句,要是没有这个的话是AC不了的
11     {
12         return x.id<y.id;
13     }
14     return x.t<y.t;
15 }
16 int main(){
17 int m,n;//double a[100005];
18 while(~scanf("%d",&n)){
19         memset(ss,0,sizeof(ss));
20     for(int i=0;i<n;i++){
21           ss[i].id=i;
22         cin>>ss[i].t;
23     }
24     sort(ss,ss+n,cmp);
25     for(int i=0;i<n;i++)
26     {if(i==0)
27         cout<<ss[i].id+1;
28         else cout<<" "<<ss[i].id+1;;
29     }
30     cout<<endl;
31    double sum=0;double ans=0;
32     for(int i=0;i<n;i++){
33         ans+=sum;
34         sum+=ss[i].t;
35     }
36 double aa=ans/n;
37     printf("%.2lf\n",aa);
38 }
39 }

分治

所谓分治,即分而治之,就是把原来的大问题分割成小问题,再用递归的方法解决

HDU2035  http://acm.hdu.edu.cn/showproblem.php?pid=2035

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 using namespace std;
 5 int ss(int a,int b)
 6 {
 7     if(b==0)
 8         return 1;
 9     else if(b%2==0){
10         int ans=ss(a,b/2);
11         return (ans*ans)%1000;
12     }
13     else return (a*ss(a,b-1))%1000;
14
15 }
16 int main()
17 {
18     int a,b;
19     while(~scanf("%d%d",&a,&b)&&(a+b))
20     {
21         int ans=ss(a,b);
22         cout<<ans<<endl;
23     }
24 }

时间: 2024-10-11 07:11:50

贪心分治的相关文章

CF448C Painting Fence (贪心分治)

题面 \(solution:\) 一道蛮水的分治题,但思想很不错(虽然我还是非常天真的以为是积木大赛原题,并且居然还有30分) 看到这个题目,根据贪心的一贯风格,我们肯定能想到将整个栅栏的下面某部分直接用几次横向的操作把它涂掉.然后我们发现如果将涂了色的部分不管,整段栅栏会被我们分成若干个部分(最短的竖条栅栏因为贪心会被横着涂完,然后整个栅栏会被分为左(中)右几个部分).然后我们将这几个依次用这种办法分治.再然后我们发现我们好像把纵向操作忘记了,它在什么地方用呢?我们在每一次求某段栅栏最小次数时

常用/常考算法总结

转自tangjz的博客... 基础算法 模拟 搜索 广度优先搜索(BFS) 优化:双向BFS 深度优先搜索(DFS) 优化:折半DFS 迭代加深搜索(IDS) 启发式搜索(Astar) 优化:IDAstar 优化:剪枝.位运算 排序 冒泡排序/选择排序 基数排序/桶排序 计数排序 插入排序/希尔排序 快速排序 归并排序/求逆序对数 堆排序 贪心 分治 二分/三分/n分 cdq分治 倍增/ST 离散化 二分答案 快速幂/十进制快速幂 基础数学 数列求和 泰勒展开 矩阵 矩阵乘法 高斯消元 判断线性

1966 火柴排队

难度:提高+/省选- 题目类型:贪心/分治 提交次数:5 涉及知识:逆序对.离散化 题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示第一列火柴中第 i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度. 每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小.请问得到这个最小的距离,最少需要交换多少次?如果这个数字

暑假集训结束

暑假集训结束了!!! 说实话其实还是有些遗憾的,我没有和同学一起去诸暨集训,但是我还是很高兴,我的同学将试题都发给了我,以至于我没有落后太多,所以这里致谢机房其他4位大佬. 我重新翻了一下我的做题记录,虽然做题不多,但是至少每道题都有收益,于是想要总结一下. 6.16 期末考试告一段落 6.17 复习了并查集,知道了并查集记录链头和链长的方法P1196 6.18 继续研究DP,加深了树形DP,学习了悬线法,用此方法解决了以前乱搞的题 6.19 复习状压DP 6.20 pb学哥来讲课了,然后学习了

[转]五大常用算法:分治、动态规划、贪心、回溯和分支界定

Referred from http://blog.csdn.net/yapian8/article/details/28240973 分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并.这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求

五大常用算法:分治、动态规划、贪心、回溯和分支界定

苹果的WWDC ,除了发布了os x 10.10 和IOS8 外,还推出了Swift.详细点击这里 代码总体风格有点像Java,也有点像javascript. 下面给出一些代码段(来自苹果官方手册): println("Hello, world") "var myVariable = 42 myVariable = 50 let myConstant = 42" 摘录来自: Apple Inc. "The Swift Programming Languag

五大常用算法----贪心、动态规划、分支限界、分治算法和回溯算法

五大常用算法之一:贪心算法 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择.必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关. 所以对所采用的贪心策略一定要仔细分析其是否满足无后效性. 五大常用算法之二:动态规划算法 五大常用算法之三:分支限界算法

五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)

近日复习了一些算法知识,小记于此 递归与分治法 直接或间接地调用自身的算法称为递归算法. 递归是算法设计与分析中常用的一种技术,描述简单且易于理解. 分治法的设计思想是将一个规模为n难以解决的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同. 递归地解这些子问题,然后将各子问题的解合并得到原问题的解. 典型例子:Fibonacci数列,阶乘,Hanoi塔:二分法搜索.快速排序.合并排序. 动态规划法 动态规划过程是:根据当前(阶段)状态,采取相应的决策,引起状态的转移.如下图,一

五大常用算法:分治、动态规划、贪心、回溯、分支限界

分治:把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并 http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html#3024443 ----------------------------------------------------------------------------------------------------