CF398Aカード|貪欲

トピックリンク

私はどのようにしても、この問題に一生懸命やっている......

いくつかの結論が見つかり、その後、同様の段落に分けて「X」列挙することができます。

私は実際に食べ物を取得しています

書式#include <iostreamの> 
の#include <cstdioを> 
する#include <CStringの>
     使用して 名前空間はstd;
    int型 CNT [ 100005 ]。
int型のmain()
{
    INT = 0、B = 0、C = 0 長い 長い ANS = - 1E18;
    scanf関数(" %D%dの"、&​​、&B)。
    もし(Bの== 0 
    {
        printf(" %I64d \ nを"、(長い 長い)* A)。
        以下のためにint型私= 1 ; I <= A; iが++)のputchar(' Oを' );
        リターン 0 ;
    }
    以下のためにint型 i = 1 ; iは=分<(A + 1 iは++; B) 
    {
        長い 長い X = B / Iは、YがB%I、K =最大値=(0、I- 2 )。
        長い  W = -i * X *のxy *(2 * X + 1 )。
        W + = K +(長い 長い)(AK)*(AK )。
        もし ANS = W、C(ANS> W)= I。
    }
    printf(" %I64dの\ n " 、ANS)。
    int型 iは= 1 CNT [I] = B /; I <= C iが++)、C。
    以下のためにint型 i = 1 ; iは++; iは= Bの%のC <)CNT [I]を++ 以下のためにint型 I = 1 ; I <= C- 1 ; I ++ 
    {
        もし(I> 1)のputchar(' O ' )。
        INT J = 1 ; J <= CNT [i]は、J ++ 
            putchar(' X ' )。
    }
    以下のためにint型私= 1 ; I <= A-C + 2 - (C == 1); iが++)のputchar(' Oを' );
    INT J = 1 ; J <= CNT [C]; J ++)のputchar(' X ' )。 
    リターン 0 ;
}
CF398A

 

おすすめ

転載: www.cnblogs.com/wozaixuexi/p/11318447.html