【计数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神,求满足条件的分数情况数.当有一 ...
随机推荐
- Open vSwitch系列实验(三):Open vSwitch的VxLAN隧道网络实验
1 实验目的 该实验通过Open vSwitch构建Overlay的VxLAN网络,更直观的展现VxLAN的优势.在实验过程中,可以了解如何建立VxLAN隧道并进行配置,并实现相同网段和不同网段之间的 ...
- Shell登陆远程服务器
现场服务器较多,密码3个月过期,在到期时需更改密码. 使用expect编写,尝试登陆2次后退出(防止密码错误时账号锁定),超时重试一次. shell脚本调用并定时执行,登陆成功后执行一条命令,如:ho ...
- vs2017 编译linux项目
官方文档1: https://blogs.msdn.microsoft.com/vcblog/2017/04/11/linux-development-with-c-in-visual-studio/ ...
- 【Tomcat】本地域名访问配置
原路径:localhost:8080/jsja 1.把8080端口改为80端口 打开%TOMCAT_HOME%/conf/server.xml <Connector connectionTime ...
- 数据库中的blob是什么类型?
数据库中的blob是什么类型? BLOB (binary large object)----二进制大对象,是一个可以存储二进制文件的容器. 在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类 ...
- Java_jdbc 基础笔记之四 数据库连接 (通用更新方法)
/** * 写一个通用的更新方法 包括 INSERT. DELETE.UPDATE * 使用工具类 * @param sql */ public void update(String sql){ Co ...
- Type-C转接头 还是别用了,影响速率啊
今天用Type-C转接USB头传照片真慢! 在数码配件领域,越是不起眼的小外设,隐藏其背后的猫腻和水分也就越多.就拿常见的Micro USB转USB Type-C转接头和TF转SD卡套而言,你觉得 ...
- Python脚本实现Linux/MAC中Xmind Zen去水印等其他功能的过程(V0.1)
说明本脚本仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明.功能简介 去除软件右上角激活按钮 去除导出时激活弹窗 去除导出PDF文 ...
- shell编程系列10--文本处理三剑客之sed利用sed查询特定内容
shell编程系列10--文本处理三剑客之sed利用sed查询特定内容 利用sed查找文件内容: pattern种类: .8p .,10p .,+5p ./regexp/p .,/regexp/p . ...
- QCamera检测摄像头
The QCamera class provides interface for system camera devices. More... Header: #include <QCamera ...