算法提高 种树
来源:互联网 发布:显示器颜色测试软件 编辑:程序博客网 时间:2024/05/30 04:32
问题描述
A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门 得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤 肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置。值得注意的是1号和n号也算相邻位置!)。
最终市政府给园林部门提供了m棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大。如果无法将m棵树苗全部种上,给出无解信息。
最终市政府给园林部门提供了m棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大。如果无法将m棵树苗全部种上,给出无解信息。
输入格式
输入的第一行包含两个正整数n、m。
第二行n个整数Ai。
第二行n个整数Ai。
输出格式
输出一个整数,表示最佳植树方案可以得到的美观度。如果无解输出“Error!”,不包含引号。
样例输入
7 3
1 2 3 4 5 6 7
1 2 3 4 5 6 7
样例输出
15
样例输入
7 4
1 2 3 4 5 6 7
1 2 3 4 5 6 7
样例输出
Error!
数据规模和约定
对于全部数据,满足1<=m<=n<=30;
其中90%的数据满足m<=n<=20
-1000<=Ai<=1000
其中90%的数据满足m<=n<=20
-1000<=Ai<=1000
#include <stdio.h> #define maxValue(a,b) a>b?a:b//int N=30,M=15; //4286//int Ai[31]={0,166, -994, -440, -865, 1000, 744, 396, -998, 707, 528, 816, 207, 628, 225, 309, -339, 207, -871, -77, -692, 162, 374, -370,-49, 592, 114, -756, 541, 946, -68 };int N=10,M=4; //1767int Ai[31]={0,33, 100, 453, 828, 28, 145, 286, 391, 303, 403};int down[31];int canDown(int pos){ if(pos==N) if(down[1]==1) return 0;else if(down[pos+1]==1) return 0;if(pos==1) if(down[N]==1) return 0;else if(down[pos-1]==1) return 0;return 1;}int fun(int m,int start){ int i,max=-99999; if(m>M||start>N) return 0; for(i=start;i<=N-2*(M-m);i++){ if(canDown(i)){ down[i]=1; max=maxValue(max,fun(m+1,i+2)+Ai[i]); down[i]=0; } } return max;}int main() { int i,max=0; scanf("%d%d",&N,&M); for(i=1;i<=N;i++) scanf("%d",&Ai[i]); /* */ // printf("max:%d\n",maxValue(11,9)); /* for(i=1;i<=N;i++) printf("%d ",Ai[i]); printf("\n"); */ if(M<=N/2){ max=fun(1,1); printf("%d\n",max); //15 4286}else printf("Error!\n");return 0;}
0 0
- 算法提高 种树
- 算法提高 种树
- 算法提高 种树
- 蓝桥杯算法提高—种树问题
- 【NOIP提高】种树
- 【NOIP2016提高A组8.11】种树
- 【NOIP2016提高A组8.11】种树
- JZOJ4679. 【NOIP2016提高A组8.11】种树
- 种树
- 种树
- JZOJ 4679 种树【NOIP2016提高A组8.11】
- JZOJ 4679【NOIP2016提高A组8.11】种树
- 算法提高
- [堆]种树
- 种树问题
- [bzoj2151]种树
- [BZOJ2151]种树
- 蓝桥杯 种树
- 计算几何(一道题) Geometry
- GCC编译器和GDB调试器常用选项
- org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.ap解决方法
- Map Side Join解决数据倾斜
- 五大常用算法的思想之一:分治算法
- 算法提高 种树
- 算法14:如何高效地用堆栈模拟队列
- linux命令大全(8)--chown命令详细用法
- 文章标题
- 加速 SBT 下载依赖库的速度
- JavaScript代码的strict模式
- 简单的loading加载框(复制即可用)
- 架构分布式____Redis集群架构(sentinel哨兵模式集群方案)
- Android AppCompatActivity与toolbar的结合