CF-358D-Dima and Hares【T^T+*^*】
【文章标题打着转载,是因为不是自己想出来的解题,但下面的文字是自己敲的【~捂脸*>_<*~】】
题目就不贴了~~~DP+greedy的题。弱爆了看别人的代码思路过的。T^T但还是自己复述一遍吧~~
刚开始看题目有点下不了手,不知道该怎么喂傲娇的小兔纸才好。
然后看了解题才知道,哦,原来是酱紫:就是喂某只小兔纸,可是收获的那只兔纸快乐值跟周围的兔纸有木有喂饱有关~~然后全部兔纸都要喂。
dp转移方程如下:
dp[i][0] = max(d[i-1][0] + b[i-1],d[i-1][1] + c[i-1]); //d[i][0] 代表i-1只兔子没被喂过 所以前者的喂兔纸的顺序是:i-> i-1 -> i-2;后者喂兔纸的顺序是:i-2 -> i -> i-1
dp[i][1] = max(d[i-1][0] + a[i-1],d[i-1][1] + b[i-1]). //d[i][1] 代表i-1只兔子被喂过 所以前者的喂兔纸的顺序是:i-1 -> i -> i-2;后者喂兔纸的顺序是:i-2 -> i-1 -> i
蓝后代码如下了~~
#include<iostream> using namespace std; const int Max = 3005;
int dp[Max][2];
int max(int &a, int &b)
{
return a > b?a:b;
}
int main()
{
int n;
cin>>n;
int a[Max],b[Max],c[Max];
for(int i = 1; i <= n; i++)
cin>>a[i];
for(int i = 1; i <= n; i++)
cin>>b[i];
for(int i = 1; i <= n; i++)
cin>>c[i];
for(int i = 0; i < Max; i++)
for(int j = 0; j < 2; j++)
dp[i][j] = 0;
if(n == 1) {cout<<a[1]<<endl; return 0;}
//dp[i][0]表示i-1没取过,dp[i][1]表示i-1取过
dp[2][0] = b[1];
dp[2][1] = a[1];
for(int i = 3; i <= n; i++)
{
dp[i][0] = max(dp[i-1][0]+b[i-1],dp[i-1][1]+c[i-1]);
dp[i][1] = max(dp[i-1][0]+a[i-1],dp[i-1][1]+b[i-1]);
}
int as;
as = max(dp[n][0]+a[n],dp[n][1]+b[n]);
cout<<as<<endl;
return 0;
}
CF-358D-Dima and Hares【T^T+*^*】的更多相关文章
- Codeforces 358D Dima and Hares:dp【只考虑相邻元素】
题目链接:http://codeforces.com/problemset/problem/358/D 题意: 有n个物品A[i]摆成一排,你要按照某一个顺序将它们全部取走. 其中,取走A[i]的收益 ...
- Codeforces Round #208 (Div. 2) 358D Dima and Hares
题目链接:http://codeforces.com/problemset/problem/358/D 开始题意理解错,整个就跪了= = 题目大意:从1到n的位置取数,取数的得到值与周围的数有没有取过 ...
- [CodeForce]358D Dima and Hares
有N<3000只宠物要喂,每次只能喂一只,每喂一只宠物,宠物的满足度取决于: 1 紧靠的两个邻居都没喂,a[i] 2 邻居中有一个喂过了,b[i] 3 两个邻居都喂过了,c[i] 把所有宠物喂一 ...
- cf D. Dima and Hares
http://codeforces.com/contest/358/problem/D 题意:ai代表相邻的两个野兔都没有吃食物情况下的快乐系数,bi代表的是在相邻的两个野兔中有一个吃到食物的快乐系数 ...
- Codeforces 358D Dima and Hares
http://codeforces.com/contest/358/problem/D 题意:给出n个数,每个数取走的贡献与相邻的数有关,如果取这个数的时候,左右的数都还没被取,那么权值为a,如果左右 ...
- codeforces358D Dima and Hares【dp】
从本质入手,这个东西影响取值的就是相邻两个哪个先取 设f[i][0/1]为前i个(i-1,i)中先取i/i-1的值(这里不算上i的贡献 转移就显然了,注意要先复制-inf #include<io ...
- Codeforces 358 D. Dima and Hares
dp[i][0]表示i号兔子先于i-1号兔子喂食,dp[i][1]反过来. 倒着DP D. Dima and Hares time limit per test 2 seconds memory li ...
- CF358D Dima and Hares
CF358D Dima and Hares 洛谷评测传送门 题目描述 Dima liked the present he got from Inna very much. He liked the p ...
- CF 1405E Fixed Point Removal【线段树上二分】
CF 1405E Fixed Point Removal[线段树上二分] 题意: 给定长度为\(n\)的序列\(A\),每次操作可以把\(A_i = i\)(即值等于其下标)的数删掉,然后剩下的数组 ...
- CF A.Mishka and Contest【双指针/模拟】
[链接]:CF/4892 [题意]: 一个人解决n个问题,这个问题的值比k小, 每次只能解决最左边的或者最右边的问题 解决了就消失了.问这个人能解决多少个问题. [代码]: #include<b ...
随机推荐
- HDU 3555 Bomb 数位dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others) Mem ...
- 【POJ】【2891】Strange Way to Express Integers
中国剩余定理/扩展欧几里得 题目大意:求一般模线性方程组的解(不满足模数两两互质) solution:对于两个方程 \[ \begin{cases} m \equiv r_1 \pmod {a_1} ...
- spring framework项目源码github托管地址
方法一:直接下载,github托管地址:http://repo.spring.io/simple/libs-release-local/org/springframework/spring/ 方法二: ...
- NYOJ-58 最小步数 AC 分类: NYOJ 2014-01-22 22:01 217人阅读 评论(0) 收藏
#include<stdio.h> void dfs(int step,int x,int y); int d[4][2] = {{1,0},{-1,0},{0,1},{0,-1}}; i ...
- NYOJ-655 光棍的YY AC 分类: NYOJ 2013-12-29 19:24 224人阅读 评论(0) 收藏
#include<stdio.h> #include<string.h> char str[210]; int max[210][52]={0}; int sum(int n, ...
- fpu栈溢出
老大们遇到个问题,有一堆浮点数运算,分开写就对,合一起就溢出. 是因为定义的函数返回float的时候,别的地方声明是void错了,这样的错误累计八次之后,浮点数寄存器就满了.没地方放就错了. 函数前面 ...
- Extjs文本输入域
var form = Ext.create('Ext.form.Panel', { renderTo: Ext.getBody(), frame: tr ...
- Java开发WebService的几种方法--转载
webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件 ...
- Java 并发同步器之CountDownLatch、CyclicBarrier
一.简介 1.CountDownLatch是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞 ...
- VulToEs
VulntoES https://github.com/ChrisRimondi/VulntoES