zoukankan      html  css  js  c++  java
  • Bucharest, Romania 2013 G Points DP

    题意:一条线上面有n个目标,每个目标有三个值,表示不取相邻的,取一个相邻的,取两个相邻的值,问你怎么选才能最大

    解题思路:每个点有个5种情况dp,dp状态转移方程在程序里,

    5种情况分别是 1) 不取  2) 取自己 3) 取自己和左边,4)取自己和右边,5)取自己和左右边

    解题代码:

     1 Name: 12901.cpp
     2 // Author: darkdream
     3 // Created Time: 2014年08月16日 星期六 14时18分16秒
     4 
     5 #include<vector>
     6 #include<list>
     7 #include<map>
     8 #include<set>
     9 #include<deque>
    10 #include<stack>
    11 #include<bitset>
    12 #include<algorithm>
    13 #include<functional>
    14 #include<numeric>
    15 #include<utility>
    16 #include<sstream>
    17 #include<iostream>
    18 #include<iomanip>
    19 #include<cstdio>
    20 #include<cmath>
    21 #include<cstdlib>
    22 #include<cstring>
    23 #include<ctime>
    24 #define LL long long
    25 
    26 using namespace std;
    27 int dp[1000005][5];
    28 int a[3];
    29 int max3(int x, int y,int z)
    30 {
    31     if(y > x )
    32         x = y ;
    33     if(z > x )
    34         x = z ; 
    35     return x;
    36 }
    37 int main(){
    38     int n ;
    39     while(scanf("%d",&n)!= EOF)
    40     {
    41         int ans = 0 ;
    42         memset(dp,0,sizeof(dp));
    43         for(int i =1 ;i <= n;i ++)
    44         {
    45             scanf("%d %d %d",&a[0],&a[1],&a[2]); 
    46             dp[i][0] = max3(dp[i-1][0],dp[i-1][1],dp[i-1][2]); 
    47             dp[i][1] = dp[i-1][0] + a[0];
    48             if(i != 1)
    49                 dp[i][2] = a[1] + max(dp[i-1][3],dp[i-1][4]);
    50             if(i != n)
    51             { 
    52                 dp[i][3] = a[1] + dp[i-1][0];
    53                 if(i !=1)
    54                   dp[i][4] = a[2] + max(dp[i-1][3],dp[i-1][4]); 
    55             }
    56             for(int j = 0;j <= 4;j ++)
    57             { 
    58                 //if(dp[i][j]  > ans)
    59                 //    printf("%d %d %d
    ",i,j,dp[i][j]);
    60                 ans = max(dp[i][j],ans);
    61             }
    62         }
    63         printf("%d
    ",ans);
    64     }
    65     return 0;
    66 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    一次聚类引发的一系列问题(工作经验篇)
    SQLServer数据库返回错误的国际化
    记一次SQL优化
    java设计模式-工厂模式(springweb为例子)
    JAVA中的泛型(Generic)
    spring源码分析-core.io包里面的类
    java设计模式-代理模式
    javaWeb正则表达式
    Java中的泛型
    关于API,前后端分离
  • 原文地址:https://www.cnblogs.com/zyue/p/3917062.html
Copyright © 2011-2022 走看看