Я - Сила HDU - 6563

#include <iostream> 
#include <cstdio> 
#include <CMATH> 
#include <cstdlib> 
#include <алгоритм> 
#include <CString> 
#include <строка> 
#include <вектор> 
#include <карта> 
#include <набор> 
# include <очереди> 
Const INT maxn = 1e5 + 100; 
определение типа во долго долго LL; 
используя патезрас; 
Int А [maxn], В [maxn], CNT, визит [maxn]; // CNT来记录防御态的个数
структура узла 
{ 
    INT значение, поз; 
    Оператор BOOL <(Const Узел & г) сопзЬ 
    { 
        возвращаемое значение <d.value; 
    } 
} Узел [maxn]; 
Int основных () 
{ 
    INT т, п, м; 
    зсапЕ ( "% d", & т); 
    INT = 0 KASE;
    буду подводить = 0, sum1 = 0 ;; 
    в то время как (T--) 
    { 
        зсапЕ ( "% d% d", & п, & м); 
        MemSet (визит, 0, SizeOf (посещение)); 
        сумма = 0; 
        sum1 = 0; 
        CNT = 0; 
        для (INT I = 0; я <п; я ++) 
        { 
            зсапЕ ( "% d", & A [I]); 
            сумма + = а [I]; 
        } 
        Для (INT I = 0; я <м; я ++) 
            Scanf ( "% D", & узел [I] .value); 
        для (INT I = 0; I <т; я ++) 
        { 
            Scanf ( "% D", & узел [I] .pos); 
            если (! узел [I] .pos) 
                sum1 + = узел [I] .value; 
            если (узел [I] .pos) 
                б [CNT ++] = узел [I]. значение; 
        }
        LL ANS, ANS1; 
        ANS = ANS1 = 0; 
        //是否可以全部干掉
        рода (узел, узел + м); 
        рода (а, а + п); 
        INT флаг = 0; 
        если (п> = т) 
        { 
            INT I, J; 
            I = п-1; 
            J = м-1; 
            для (I>; = 0 && J> = 0; я--) 
            { 
                если (узел [J] .value <= а [I]) 
                    j--; 
                еще 
                    перерыв; 
                если (J!) 
                    перерыва; 
            } 
            (! К) , если 
                флаг = 1; 
        } 
        Если (флаг) 
        { 
            Int J = 0;
            для (INT I = 0; я <п && J <CNT; я ++) 
            { 
                если (а [я]> = Ь [J]) 
                { 
                    J ++; 
                    sum- = а [I]; 
                } 
            } 
            Если (J = CNT!) 
                Флаг = 0; 
            остальное 
                ANS = сумма-sum1; 
        } 
        Int I = п-1, J = 0; 
        для (; я && J <м; i--) 
        { 
            если (а [я]> = узел [J] .value) 
            { 
                если (узел [J] .pos!) 
                { 
                    ANS1 + = (а [я] -node [J ].значение); 
                }
                j ++; 
            }
            еще 
                перерыв; 
        } 
        Е ( "Дело% d:% LLD \ п", ++ KASE, макс (ANS, ANS1)); 
    } 
    Возвращает 0; 
}

  

Этот вопрос очень интересен

Во-первых, смысл проблемы неизвестность (ха-ха)

Он имеет оборонительное состояние, в конце концов убивает друг друг для того, чтобы бороться друг с другом непосредственно вина

В обоих случаях

1, не все убивают друг друга (с их собственной стороне большой сухой другой стороны от самых маленьких, с второй по величине высушите другую сторону следующий маленький, пока я не могу быть)

2, все убивают друг друга (чтобы избавиться от государственной обороны с минимальными затратами, а затем вычесть все остальное странное, а остальное на линии)

рекомендация

отwww.cnblogs.com/zhangzhenjun/p/12229839.html