ex.dpr

来自「tongji acm-online judge solution」· DPR 代码 · 共 52 行

DPR
52
字号
program Ural_1167(Input, Output);
const
    MaxN = 500;
    MaxM = 500;
type
    TIndex = Longint;
    TSum = array[0..MaxN] of TIndex;
    TDp = array[1..MaxN] of TIndex;
var
    SW, SB: TSum;
    F1, F2: TDp;
    N, M: TIndex;

procedure Main;
var
    i, j, k: TIndex;
    X: TIndex;
begin
    FillChar(F1, SizeOf(F1), 127);
    FillChar(F2, SizeOf(F2), 127);
    FillChar(SW, SizeOf(SW), 0);
    FillChar(SB, SizeOf(SB), 0);
    Readln(N, M);
    for i := 1 to N do
    begin
        Read(X);
        SW[i] := SW[i - 1] + Ord(X = 0);
        SB[i] := SB[i - 1] + Ord(X = 1);
    end;
    for j := 1 to N do
        F1[j] := SW[j] * SB[j];
    for i := 2 to M do
    begin
        for j := i to N do
            for k := 1 to j - i + 1 do
                if F1[j - k] + (SW[j] - SW[j - k]) * (SB[j] - SB[j - k]) < F2[j] then
                    F2[j] := F1[j - k] + (SW[j] - SW[j - k]) * (SB[j] - SB[j - k]);
        F1 := F2;
    end;
    Writeln(F1[N]); // it's not F2, because when n=1!
end;
begin
    {Assign(Input, 'i.txt');
     Reset(Input);
     Assign(Output, 'o.txt');
     Rewrite(Output); }
    Main;
    {Close(Input);
    Close(Output); }
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?