zoukankan      html  css  js  c++  java
  • Codeforces Round #665 (Div. 2) B

    Codeforces Round #665 (Div. 2) B - Ternary Sequence

    题意

    给定两个长度为(n) 的序列(A ,B) ,他们中分别由(x_i,y_i,z_i) 个$ 0 , 1, 2$ 构成,要求构造出这样的(A,B)

    使得(sum C_i) 最大

    [c_i = egin{cases} a_ib_i,a_i > b_i\ 0 , a_i = b_i \ -a_ib_i , a_i < b_i end{cases} ]

    题解

    容易发现(c_i) 的取值为(-2,0,2) .

    (c_i) = -2 当且仅当 (a_i = 1)(b_i = 2)

    (c_i) = 2 当且仅当 $a_i = 2 $ 且(b_i = 1)

    其他情况都是0

    贪心策略就是使得(pair(2,1)) 尽可能多,(pair(1,2)) 尽可能少

    因此我们可以使((1,0),(0,2),(2,1)) 尽可能多

    代码

    int main(){
    	int T = readint();
    	while(T--){
    		int tmp, res, x1, y1, z1, x2, y2, z2;
    		res = 0;
    		scanf("%d%d%d%d%d%d",&x1,&y1,&z1,&x2,&y2,&z2);
    		tmp = min(x1, z2);
    		x1 -= tmp;
    		z2 -= tmp;
    		tmp = min(y1, x2);
    		y1 -= tmp;
    		x2 -= tmp;
    		tmp = min(z1, y2);
    		z1 -= tmp;
    		y2 -= tmp;
    		res += tmp << 1;
    		res -= min(y1,z2) << 1;
    		printf("%d
    ",res);
    	}
    }
    
  • 相关阅读:
    HDU 1423
    POJ 3264
    POJ 3177
    CodeForces 81A
    SPOJ RATING
    ZOJ 2588
    POJ 1523
    POJ 3667
    递归
    数据结构
  • 原文地址:https://www.cnblogs.com/hznumqf/p/13546000.html
Copyright © 2011-2022 走看看