CodeForces 358D — Dima and Hares

这题要备忘一下,对于简单的偏序关系对应的价值也可以施行dp。

/*
ID:esxgx1
LANG:C++
PROG:cf358D
*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int maxn = 3007;
unsigned joy[maxn][3];
unsigned dp[2][2];

int main(void)
{
    #ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    #endif

    int N;
    scanf("%d", &N);
    for(int i=0; i<N; ++i) scanf("%u", &joy[i][0]);
    for(int i=0; i<N; ++i) scanf("%u", &joy[i][1]);
    for(int i=0; i<N; ++i) scanf("%u", &joy[i][2]);

    int curr = 0;
    dp[0][0] = joy[0][0], dp[0][1] = joy[0][1];
    for(int i=2; i<=N; ++i) {
        // 所处位置是c, 当前要决定b, 若b<c,即 a < b < c(1), b < a < c(0), b < c < a(0)
        dp[!curr][0] = max(dp[curr][0] + joy[i-1][1], dp[curr][1] + joy[i-1][0]);
        // 若 c < b, 即 c < a < b, a < c < b(2),  c < b < a (1)
        dp[!curr][1] = max(dp[curr][0] + joy[i-1][2], dp[curr][1] + joy[i-1][1]);
        curr = !curr;
    }
    printf("%u\n", dp[curr][0]);
    return 0;
}
Accepted 44 KB 31 ms
GNU C++ 4.6
951
2014-10-21 12:41:53
时间: 2024-11-13 04:17:47

CodeForces 358D — Dima and Hares的相关文章

Codeforces 358D. Dima and Hares (dp)

题目链接: http://codeforces.com/problemset/problem/358/D 题意: 给出n个数,每个数取走的贡献与相邻的数有关,如果取这个数的时候,左右的数都还没被取,那么权值为a,如果左右两个数有一个被取走了,那么权值为b,如果左右两个数都被取走了,那么权值为c,求取取走全部数的最大值. 思路: from: http://blog.csdn.net/qq_24451605/article/details/48896657 定义状态: dp[i][1][0]表示选第

CodeForces 584D Dima and Lisa

1e9 以内的判断一个数是否是素数,可以直接朴素的暴力. 这倒题除了考虑1e9以内的素数的判断,还有一个歌德巴赫猜想:任意一个奇数都可一分解为三个素数的和. 第三个结论:素数是密集的,1e9以内,相邻的素数之间的间隔不会大于300,所以直接枚举也不会浪费掉太多的时间. 这里还有一点需要注意的是:朴素的判断是否是素数,i<=saqrt(n).今天的天梯赛由于记错了这个条件,导致没有求出素数,一道二十分的题没有做,好伤心. Dima and Lisa Time Limit:1000MS     Me

Codeforces 366C Dima and Salad

http://codeforces.com/problemset/problem/366/C 题意:在一个冰箱里有n种水果,并且这些水果每一种都有一个美味度和一个卡路里的属性, 小明要从这些水果中选出来一些做一个水果沙拉, 并且要求他的水果沙拉的美味度之和是卡路里和的k倍,问小明是否可以做出这么一个水果沙拉,若不能输出-1,否则输出符合要求的最大的美味值之和. 思路:考虑这样DP:f[i][j]:做到第i个水果,平衡度为j,平衡度的表示:Σa[i]-K*Σb[i],这样就可以dp f[i][j]

CodeForces 358E - Dima and Kicks

dfs判断欧拉图,红名选手的代码就是炫酷. 首先统计所有点的度数总和,而后对于这张图的特殊性--每个点最多只会有四条边,来标记当前边是否走过了. 若在一次DFS中,能遍历所有的节点则输出所有边长的gcd的大于1的约数集. 真心学习了. #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include &

codeforces 366C Dima and Salad 【限制性01背包】

<题目链接> 题目大意: 在一个水果篮里有n种水果,并且这些水果每一种都有一个美味度和一个卡路里的属性, 小明要从这些水果中选出来一些做一个水果沙拉, 并且要求他的水果沙拉的美味度是卡路里的k倍,问小明是否可以做出这么一个水果沙拉,若不能输出-1,否则输出复合要求的最大的美味值. 解题思路: 题目的限制条件为物品的价值总和与卡路里的比值要为K,这个控制,于是我们将卡路里总和乘到的右边,然后移项,可得(a1-k*b1)+(a2-k*b2)+--+(an-k*bn)=0.因此就将 (ai-k*bi

SDKD 2017 Summer Single Training #03

今天的题目有 6 个. 第一题: CodeForces - 400D  Dima and Bacteria 这个题实际是不难的,难的可能在题意的理解上还有题干有点长,这个题很考察题意上面,知识点很熟悉,并查集和Floyd. 具体题解地址:http://www.cnblogs.com/dwtfukgv/p/7126059.html 第二题:CodeForces - 384E  Propagating tree 这个题确实是有难度的,当然主要是在时间上面,其实这个我是防AK的,然后这个题很容易理解,

Codeforces Round #262 (Div. 2) 460B. Little Dima and Equation(枚举)

题目链接:http://codeforces.com/problemset/problem/460/B B. Little Dima and Equation time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Little Dima misbehaved during a math lesson a lot and the nas

codeforces Sereja and Dima 题解

Sereja and Dima play a game. The rules of the game are very simple. The players have n cards in a row. Each card contains a number, all numbers on the cards are distinct. The players take turns, Sereja moves first. During his turn a player can take o

Dima and Magic Guitar CodeForces - 366E

Dima and Magic Guitar CodeForces - 366E 题意: http://blog.csdn.net/u011026968/article/details/38716425http://vawait.com/2013/11/codeforces-366e/http://www.cnblogs.com/jianglangcaijin/archive/2013/11/25/3441319.html 对于s中任意相邻两个数x和y,都要求在矩形中找出任意两个分别等于x和y的点