【计数DP】种树
种树
题目描述
小X的后花园是环形的,他想在花园周围均匀地种上n棵树,但是奆老花园的土壤当然非同寻常,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值。
小X最喜欢3种树,这3种树的高度分别为10,20,30。小X希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,小X想要你设计出一套方案,使得观赏价值之和最高。
输入
接下来n行,每行3个不超过10000的正整数ai,bi,ci,按顺时针顺序表示了第i个位置种高度为10,20,30的树能获得的观赏价值。
注意:第i个位置的树与第i+1个位置的树相邻,特别地,第1个位置的树与第n个位置的树相邻。
输出
样例输入
4
1 3 2
3 1 2
3 1 2
3 1 2
样例输出
11
提示
第1至n个位置分别种上高度为20,10,30,10的树,价值最高。
对于20%的数据,有n≤10
对于40%的数据,有n≤100
对于60%的数据,有n≤1000
对于100%的数据,有4≤n≤100000并保证n一定为偶数。
【题意】
1、给出一堆环形的树木
2、每棵树的左右必须是比他高或低。
3、每个位置上分别有三种不同的价值,请问最大价值为???
【题解】
以前就做过CF上的一道题很类似了。dp[i][j][k] = 表示第i个位置,选取 j 这个数, 继承前面的 k 的情况,k 只有两种情况,k - > ' / ' 或者 ' \ '
然后进行状态转移即可。
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+;
int f[N][][] , a[N][] ;
int n;
int main()
{
ios_base :: sync_with_stdio(false);
cin.tie(NULL) , cout.tie(NULL) ;
cin >> n ;
for( int i = ; i <= n ; i++ ){
for( int j = ; j < ; j++ ){
cin >> a[i][j] ;
if( i == )
a[n+][j] = a[i][j];
}
} /* 0 : / , 1 : \ */
for( int i = ; i <= n + ; i++ ){
f[i][][] = max( f[i-][][] , f[i-][][] ) + a[i][] ;
f[i][][] = max( f[i-][][] , f[i-][][] ) + a[i][] ;
f[i][][] = f[i-][][] + a[i][];
f[i][][] = f[i-][][] + a[i][];
}
int ans = ;
for( int i = ; i < ; i ++ ){
for( int j = ; j < ; j ++ )
ans = max( ans , f[n+][i][j] ) ;
}
printf("%d\n",ans);
return ;
}
【计数DP】种树的更多相关文章
- HDU5800 To My Girlfriend 背包计数dp
分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i ...
- CodeForces 176B Word Cut (计数DP)
Word Cut Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit St ...
- [DP之计数DP]
其实说实在 我在写这篇博客的时候 才刚刚草了一道这样类型的题 之前几乎没有接触过 接触过也是平时比赛的 没有系统的做过 可以说0基础 我所理解的计数dp就是想办法去达到它要的目的 而且一定要非常劲非常 ...
- HDU4815/计数DP
题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=4815] 简单说一下题意: 有n道题,每到题答对得分为a[ i ],假如A不输给B的最小概率是P,那么A ...
- HDU 6377 度度熊看球赛 (计数DP)
度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 计数dp
计数dp 计数类的$dp$没做过几个,所以之前都放到"思维"标签下了,后来发现原来这属于一类问题啊...搬过来了. 管道取珠:https://www.lydsy.com/Judge ...
- [SDOI2010]地精部落[计数dp]
题意 求有多少长度为 \(n\) 的排列满足 \(a_1< a_2> a_3 < a_4 \cdots\) 或者 $a_1> a_2 < a_3 > a_4\cdo ...
- 【BZOJ】2111: [ZJOI2010]Perm 排列计数 计数DP+排列组合+lucas
[题目]BZOJ 2111 [题意]求有多少1~n的排列,满足\(A_i>A_{\frac{i}{2}}\),输出对p取模的结果.\(n \leq 10^6,p \leq 10^9\),p是素数 ...
- 【AtCoder】AGC022 F - Leftmost Ball 计数DP
[题目]F - Leftmost Ball [题意]给定n种颜色的球各k个,每次以任意顺序排列所有球并将每种颜色最左端的球染成颜色0,求有多少种不同的颜色排列.n,k<=2000. [算法]计数 ...
- 【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值
[题意]n位同学(其中一位是B神),m门必修课,每门必修课的分数是[1,Ui].B神碾压了k位同学(所有课分数<=B神),且第x门课有rx-1位同学的分数高于B神,求满足条件的分数情况数.当有一 ...
随机推荐
- JVM 自定义类加载器
一.创建自定义类加载器 package com.example.jvm.classloader; import java.io.ByteArrayOutputStream; import java.i ...
- Python 3.8.0 final¶ Release date: 2019-10-14
https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0 Core and Builtins bpo-38469: Fixed ...
- [转]BigDecimal使用(整理)
原文地址:https://www.jianshu.com/p/2947868d76eb 应用场景 大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算.比如:货币 使用 ...
- win10不能将文件拖到另外一个程序中去的解决办法
author: headsen chen date: 2019-07-25 14:48:32 notice : 个人原创 新建一个 aa.txt的文本文档: Windows Registry Ed ...
- flutter 保持页面状态
import 'package:flutter/material.dart'; import 'KeepAliveDemo.dart'; void main() => runApp(MyApp( ...
- linux部署php网页
liunx环境下运行php和传统的Java web程序不一样.我直接放在tomcat下竟然不行. 安装了php的一些环境,还是访问不了,原因是不支持https访问.没办法,还是得用tomcat,同时我 ...
- 123457123456#2#----com.ppGame.ShiZi43--前拼后广--shizi游戏_pp
com.ppGame.ShiZi43--前拼后广--shizi游戏_pp
- 毫无PS痕迹 你的第一本Photoshop书 完整版
毫无PS痕迹 你的第一本Photoshop书 目录 <毫无PS痕迹-你的本Photoshop书>全书分为四大部分: 第1.2章讲解色彩和图像的原理与基础知识要点. 第3至11章全面讲解了使 ...
- LeetCode_283. Move Zeroes
283. Move Zeroes Easy Given an array nums, write a function to move all 0's to the end of it while m ...
- 简单明了的注解,读取CLASS中的注解
/***********注解声明***************/ /** * 水果名称注解 * @author peida * */ @Target(ElementType.FIELD) @Reten ...