zoukankan      html  css  js  c++  java
  • bzoj1296

    首先先预处理每行刷1~m次最多能正确涂出多少格

    然后把每行涂色看做一个物品,当重量为j(这行涂了j次),价值为对应能正确涂出的格子数;

    总重量为k,然后做分组背包即可

     1 var f:array[0..60,0..60,0..60] of longint;
     2     sum:array[0..60,0..60] of longint;
     3     dp:array[0..60,0..3000] of longint;
     4     t,x,p,n,m,k,l,i,j:longint;
     5     s:string;
     6 
     7 function max(a,b:longint):longint;
     8   begin
     9     if a>b then exit(a) else exit(b);
    10   end;
    11 
    12 begin
    13   readln(n,m,t);
    14   for i:=1 to n do
    15   begin
    16     readln(s);
    17     l:=length(s);
    18     for j:=1 to l do
    19     begin
    20       x:=ord(s[j])-48;
    21       sum[i,j]:=sum[i,j-1]+x;
    22     end;
    23   end;
    24   for i:=1 to n do
    25   begin
    26     for j:=1 to m do
    27     begin
    28       f[i,j,0]:=0;
    29       for k:=1 to j do
    30       begin
    31         for l:=j-1 downto 0 do
    32         begin
    33           p:=sum[i,j]-sum[i,l];
    34           f[i,j,k]:=max(f[i,j,k],f[i,l,k-1]+max(p,j-l-p));
    35         end;
    36       end;
    37     end;
    38   end;
    39   for i:=1 to n do
    40   begin
    41     for j:=t downto 0 do
    42     begin
    43       for k:=0 to m do
    44         if j-k>=0 then dp[i,j]:=max(dp[i,j],dp[i-1,j-k]+f[i,m,k])
    45         else break;
    46     end;
    47   end;
    48   writeln(dp[i,t]);
    49 end.
    View Code
  • 相关阅读:
    firefox 插件开发2
    android ndk
    android Fragment.
    排序算法
    php中判断iphone版本
    php css
    ndk 入门实例
    howtoaddabuttontopreferencescreen 自定义view
    分布式K/V存储方案
    android版 eclipse
  • 原文地址:https://www.cnblogs.com/phile/p/4473194.html
Copyright © 2011-2022 走看看