算法提高 种树

时间限制:1.0s 内存限制:256.0MB

  种树

问题描述

  A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门 得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤 肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置。值得注意的是1号和n号也算相邻位置!)。

  最终市政府给园林部门提供了m棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大。如果无法将m棵树苗全部种上,给出无解信息。

输入格式

  输入的第一行包含两个正整数n、m。

  第二行n个整数Ai。

输出格式

  输出一个整数,表示最佳植树方案可以得到的美观度。如果无解输出“Error!”,不包含引号。

样例输入

7 3

1 2 3 4 5 6 7

样例输出

15

样例输入

7 4

1 2 3 4 5 6 7

样例输出

Error!

数据规模和约定

  对于全部数据,满足1<=m<=n<=30;

  其中90%的数据满足m<=n<=20

  -1000<=Ai<=1000

import java.util.Scanner;

public class 种树 {

	public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n,m,a[],i,j,dp[][][][],num;
n=Integer.parseInt(sc.next());
m=Integer.parseInt(sc.next());
num=m+1;
if(m>n/2)System.out.println("Error!");
else
{
a=new int[n];
for(i=0;i<n;i++)a[i]=Integer.parseInt(sc.next());
dp=new int[n][2][2][num];
dp[0][1][0][1]=a[0];
dp[0][0][1][1]=a[0];
for(i=1;i<n;i++)
{
for(j=1;j<num;j++)
{
dp[i][0][0][j]=Integer.MIN_VALUE/2;
dp[i][1][0][j]=Integer.MIN_VALUE/2;
dp[i][0][1][j]=Integer.MIN_VALUE/2;
dp[i][1][1][j]=Integer.MIN_VALUE/2;
}
}
if(n>1)
{
dp[1][0][1][1]=a[1];
dp[1][1][0][1]=a[0];
}
if(n>2)
{
dp[2][1][0][1]=a[0];
dp[2][0][1][1]=a[2];
if(m>2)dp[2][1][1][2]=a[0]+a[2];
dp[2][0][0][1]=a[1];
}
for(i=3;i<n;i++)
{
for(j=0;j<num;j++)
{
dp[i][0][0][j]=max(dp[i-1][0][0][j],dp[i-1][0][1][j]);
dp[i][1][0][j]=max(dp[i-1][1][0][j],dp[i-1][1][1][j]);
if(j>1&&j*2<=i+1)dp[i][0][1][j]=dp[i-1][0][0][j-1]+a[i];
else if(j==1)dp[i][0][1][j]=a[i];
if(j>1)dp[i][1][1][j]=dp[i-1][1][0][j-1]+a[i];
}
}
System.out.println(max(dp[n-1][0][0][m], max(dp[n-1][0][1][m], dp[n-1][1][0][m])));
}
} private static int max(int i, int j) {
// TODO Auto-generated method stub
if(i>j)return i;
else return j;
} }

Java实现 蓝桥杯VIP 算法提高 种树的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪

    试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...

  2. Java实现 蓝桥杯VIP 算法提高 3-2求存款

    算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...

  3. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

  4. Java实现 蓝桥杯VIP 算法提高 5-3日历

    算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...

  5. Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素

    算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...

  6. Java实现 蓝桥杯VIP 算法提高 P0401

    算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...

  7. Java实现 蓝桥杯VIP 算法提高 理财计划

    算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...

  8. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  9. Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

    算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...

随机推荐

  1. SVN 分支代码合并到主线

    SVN 分支代码合并到主线 步骤一安装TortoiseSVN 客户端,在本地 checkout主线代码 步骤二:创建branches分支 步骤三.branches修改提交代码 步骤四:分支代码合并到主 ...

  2. 5、打断点(bpu)

    前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神聊天都靠小纸条.某屌丝A男对隔壁小王的隔壁女神C倾慕已久,于是天天小纸条骚扰,无奈中间隔着一个小王,这样小王就负责传小纸条了.有一 ...

  3. vue打包 报错问题记录

    1.  assetsPublicPath: '/' 修改为 assetsPublicPath: './'   2. untils.js里面增加   publicPath: '../../'  重新运行 ...

  4. 一文带你学会国产加密算法SM4的vue实现方案

    前言 上篇文章我们介绍了国产SM4加密算法的后端java实现方案.没有看过的小伙伴可以看一下这篇文章. https://www.cnblogs.com/jichi/p/12907453.html 本篇 ...

  5. 00001- layui 表格的默认工具栏添加自定义按钮

    首先定义table: var tableIns = table.render({ elem:'#businessUserListTable' ,url: ctx+'/business/business ...

  6. 【python接口自动化】- openpyxl读取excel数据

    前言:目前我们进行测试时用于存储测试数据的软件几乎都是excel,excel方便存储和管理数据,读取数据时也比较清晰,测试时我们需要从excel从读取测试数据,结束后还需把测试结果写入到excel中, ...

  7. Python一切皆是对象,但这和内存管理有什么关系?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python的第15篇文章,我们来聊聊Python中内存管理机制,以及循环引用的问题. Python的内存管理机制 对于工程师而言,内 ...

  8. Asp.net MVC验证那些事(1)-- 介绍和验证规则使用----[转]--[并修改了部分内容]

    Asp.net MVC验证那些事(1)-- 介绍和验证规则使用 -----原文地址链接 数据的有效性验证,是程序开发中必不可少的环节.这篇文章,我们将用一个实例来说明如何在MVC中使用Validati ...

  9. 六、表达式:前缀&&后缀

    count为运算后的值.

  10. C语言关于数据类型转换

    自动类型转换 自动类型转换就是编译器默默地.隐式地.偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生. 1) 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如: ; ...