首页 > 其他 > 详细

Codeforces Round #162 (Div. 1) C Choosing Balls dp

时间:2015-05-08 18:08:57      阅读:230      评论:0      收藏:0      [点我收藏+]
//dp[i] 表示以颜色为i结尾的最大值
//dp[i] = max(dp[i] , dp[i] + a*v[i] ,other_max + b*v[i]) ;
//为除颜色i以外的其它颜色的最大值
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
const int maxn = 100010 ;
const __int64 inf = 0x7fffffffffffffff;
__int64 dp[maxn] ;
__int64 c[maxn] ;
__int64 v[maxn] ;
int main()
{
   // freopen("input.txt","r" ,stdin) ;
    int n , q;
    while(~scanf("%d%d" ,&n ,&q))
    {
        for(int i = 1;i <= n;i++)
        scanf("%I64d" ,&v[i]) ;
        for(int i = 1;i <= n;i++)
        scanf("%I64d" ,&c[i]) ;
        while(q--)
        {
            for(int i = 1;i <= n;i++)
            dp[i] = -inf;
            __int64 a,b;
            scanf("%I64d%I64d"  ,&a ,&b) ;
            __int64 ma  = 0, ma_s  = 0, ma_c = 0;
            for(int i = 1;i <= n;i++)
            {
                __int64 temp_b;
                __int64 temp_a;
                if(dp[c[i]] == -inf)
                temp_a = b*v[i];
                else
                temp_a = a*v[i] + dp[c[i]] ;
                if(ma_c == c[i])
                {
                    temp_b = b*v[i] + ma_s;
                    dp[c[i]] = max(max(dp[c[i]] , temp_b) ,temp_a) ;
                    ma = max(ma , dp[c[i]]);
                }
                else
                {
                     temp_b = b*v[i] + ma;
                     dp[c[i]] = max(max(dp[c[i]] , temp_b),temp_a);
                     if(dp[c[i]] >= ma)
                     {
                         ma_s = ma;
                         ma_c = c[i] ;
                         ma = dp[c[i]] ;
                     }
                     else ma_s = max(ma_s , dp[c[i]]);
                }
            }
            printf("%I64d\n" , ma) ;
        }
    }
    return  0;
}





























































Codeforces Round #162 (Div. 1) C Choosing Balls dp

原文:http://blog.csdn.net/cq_pf/article/details/45582977

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!