Java实现 蓝桥杯VIP 算法提高 种树
算法提高 种树
时间限制: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 算法提高 种树的更多相关文章
- Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪
试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...
- Java实现 蓝桥杯VIP 算法提高 3-2求存款
算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...
- Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积
算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...
- Java实现 蓝桥杯VIP 算法提高 5-3日历
算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...
- Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...
- Java实现 蓝桥杯VIP 算法提高 P0401
算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...
- Java实现 蓝桥杯VIP 算法提高 理财计划
算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...
- Java实现 蓝桥杯VIP 算法提高 解二元一次方程组
算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...
- Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...
随机推荐
- JQ选择器-选择符合条件的元素,获取对应关系元素
如果你想寻找id以“sub_”开头的元素,你可以使用: $("*[id^='sub_']") 如果你想寻找id以“trim”结尾的元素,你可以使用: $("*[id$=' ...
- Docker容器映射到宿主机只有tcp6没有tcp问题
问题描述: Docker容器映射到宿主机后,查询端口连接只有tcp6没有tcp,通过ipv4地址连接时无法连接成功. 处理方法: 1.检查是否开启ipv4端口转发 sysctl net.ipv4.ip ...
- JS中各种变量类型在条件判断为false的情况
var a = undefined; ->false var a = 0; ->false var a = 0.0; ->false var a = NaN; ->false ...
- 200万年薪请不到!清华姚班到底有多牛X?
前几天,清华大学自动化系2020年大一新生的C++作业因为太难而上了热搜,该话题在知乎上的热度一度高达 1300+ 万.  在该帖子下方,有很多关于这件事的讨论,其中很多不禁赞叹"清华太牛 ...
- quartzJob
定时任务的时间修改.暂停.立即执行 定时任务的修改.暂停主要是调用quartz内置方法pauseJob().resumeJob().triggerJob()等方法 //暂停一个job JobKey j ...
- python机器学习(三)分类算法-朴素贝叶斯
一.概率基础 概率定义:概率定义为一件事情发生的可能性,例如,随机抛硬币,正面朝上的概率. 联合概率:包含多个条件,且所有条件同时成立的概率,记作:
- C# DataTable转为TXT文档
public static void SaveCSV(DataTable dt, string fullPath) { var fi = new FileInfo(fullPath); if (!fi ...
- eslint插件开发教程
开发eslint插件目的:根据项目需要,自定义满足项目特殊需要的校验规则 参考eslint官方文档展开阐述 插件开发 自定义规则 单元测试 下面开始通过一个示例demo来介绍插件整个开发流程 代码中出 ...
- js倒计时 手机休眠时 时间不进行减少
http://www.111cn.net/wy/js-ajax/94218.htm 手机版网页js倒计时存在的问题与解决的方法 www.111cn.net 更新:2015-09-16 编辑:kp123 ...
- hdu6007 spfa+完全背包
题意:给你M,N,K,代表你有M点法力值,N个物品,K个制造方式 接下来N行,如果以1开头则代表既能卖又能合成,0代表只能卖. 然后K行,每行第一个数是要合成的东西,第二个数代表有几对,每对第一个数是 ...