Vijos 1470 教主的后花园

https://www.vijos.org/p/1470

描述

教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值。

教主最喜欢3种树,这3种树的高度分别为10,20,30。教主希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,教主想要你设计出一套方案,使得观赏价值之和最高。

格式

输入格式

输入的第1行为一个正整数n,表示需要种的树的棵树。

接下来n行,每行3个不超过10000的正整数ai,bi,ci,按顺时针顺序表示了第i个位置种高度为10,20,30的树能获得的观赏价值。

第i个位置的树与第i+1个位置的树相邻,特别地,第1个位置的树与第n个位置的树相邻。

输出格式

输出仅包括一个正整数,为最大的观赏价值和。

样例1

样例输入1

4
1 3 2
3 1 2
3 1 2
3 1 2

Copy

样例输出1

11

Copy

限制

对于20%的数据,有n≤10;
对于40%的数据,有n≤100;
对于60%的数据,有n≤1000;
对于100%的数据,有4≤n≤100000,并保证n一定为偶数。

时限1s。

提示

第1~n个位置分别种上高度为20,10,30,10的树,价值最高。

处理环,第一棵先不种,搞完再说

开一个三维数组f 表示对于第i个位置,种植第j种树,且保证比左边低(第三维用0表示),或者比左边高(用1表示)时所能获得的最大值

#include<bits/stdc++.h>
using namespace std;
#define maxn 10000000
int n,m,s,v1[maxn],v2[maxn],v3[maxn],f[10000][10][3],ans;

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d%d%d",&v1[i],&v2[i],&v3[i]);
    for(int i=2;i<=n;i++)
    {
        f[i][1][1]=max(f[i-1][2][0]+v1[i],f[i-1][3][0]+v1[i]);
        f[i][3][0]=max(f[i-1][2][1]+v3[i],f[i-1][1][1]+v3[i]);
        f[i][2][0]=f[i-1][1][1]+v2[i];
        f[i][2][1]=f[i-1][3][0]+v2[i];
    }
    ans=max(ans,f[n][1][1]+v2[1]); ans=max(ans,f[n][3][0]+v2[1]);
    ans=max(ans,max(f[n][2][0]+v1[1],f[n][3][0]+v1[1]));
    ans=max(ans,max(f[n][2][1]+v3[1],f[n][1][1]+v3[1]));
    printf("%d",ans);
    return 0;
}
时间: 2024-08-28 19:49:30

Vijos 1470 教主的后花园的相关文章

vijos p1471 教主的游乐场(贪心)

传送门:https://vijos.org/p/1471 描述 Orz教主的成员为教主建了一个游乐场,在教主的规划下,游乐场有一排n个弹性无敌的跳跃装置,它们都朝着一个方向,对着一个巨大的湖,当人踩上去装置可以带你去这个方向无限远的地方,享受飞行的乐趣.但是等这批装置投入使用时,却发现来玩的人们更喜欢在这些装置上跳来跳去,并且由于这些装置弹性的优势,不但它们能让人向所对的方向能跳很远,也都能向相反方向跳一定的距离. 于是教主想出了个游戏,这n个装置按朝向相反的方向顺序以1..n编号.第i个装置可

【二分】【高精度】Vijos P1472 教主的集合序列

题目链接: https://vijos.org/p/1472 题目大意: S1={1,2,3…n}.当i>1时,Si为集合Si-1中任意两个不相同数之和的集合. 将每个集合中所有元素取出,集合Si的数放在集合Si+1的数的前面,同一个集合数从小到大排序,这样得到一个序列L. 题目输入n和K,求L中第K个数是多少. 变态的数据范围:K≤101000,1<n≤1000:且数据保证当n≤3时,K≤900000. 题目思路: [二分][高精度] 真是恶心的一道题啊..打了好久. S1={1,2,...

动归熟手题单

考完期末之后第一天训练寻找感觉的练手题目. ·等差数列 ·马棚问题 ·免费午餐 ·守望者的逃离 ·文科生的悲哀 ·着色问题 ·乌龟棋 ·小胖的水果 ·教主的后花园 ·物流运输(莫名其妙的CE)

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

Vijos 包裹快递(二分)

背景 小K成功地破解了密文.但是乘车到X国的时候,发现钱包被偷了,于是无奈之下只好作快递员来攒足路费去Orz教主…… 描述 一个快递公司要将n个包裹分别送到n个地方,并分配给邮递员小K一个事先设定好的路线,小K需要开车按照路线给的地点顺序相继送达,且不能遗漏一个地点.小K得到每个地方可以签收的时间段,并且也知道路线中一个地方到下一个地方的距离.若到达某一个地方的时间早于可以签收的时间段,则必须在这个地方停留至可以签收,但不能晚于签收的时间段,可以认为签收的过程是瞬间完成的. 为了节省燃料,小K希

Vijos 1451 圆环取数 【区间DP】

背景 小K攒足了路费来到了教主所在的宫殿门前,但是当小K要进去的时候,却发现了要与教主守护者进行一个特殊的游戏,只有取到了最大值才能进去Orz教主-- 描述 守护者拿出被划分为n个格子的一个圆环,每个格子上都有一个正整数,并且定义两个格子的距离为两个格子之间的格子数的最小值.环的圆心处固定了一个指针,一开始指向了圆环上的某一个格子,你可以取下指针所指的那个格子里的数以及与这个格子距离不大于k的格子的数,取一个数的代价即这个数的值.指针是可以转动的,每次转动可以将指针由一个格子转向其相邻的格子,且

Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】

弱弱的战壕 描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒[email protected][email protected]). 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT).这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队. 战壕都有一个保护范围,同它的攻击

刷题总结——教主的魔法(bzoj3343)

题目: Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.--.N. 每个人的身高一开始都是不超过1000的正整数.教主的魔法每次可以把闭区间[L, R](1≤L≤R≤N)内的英雄的身高全部加上一个整数W.(虽然L=R时并不符合区间的书写规范,但我们可以认为是单独增加第L(R)个英雄的身高) CYZ.光哥和ZJQ等人不信教主的邪,于是他们有时候会问WD闭区间 [L, 

洛谷教主花园dp

洛谷-教主的花园-动态规划 题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢3种树,这3种树的高度分别为10,20,30.教主希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,教主想要你设计出一套方案,使得观赏价值之和最高. 输入输出格式 输入格式: 输入文件garden.in的第1行为一个正整数n,表示需要种的