传送门

dp好题。

先推出对于每一行花费k次能最多粉刷的格子数。

然后再推前i行花费k次能最多粉刷的格子数。

代码:

#include<bits/stdc++.h>
#define N 55
#define T 2505
using namespace std;
int n,m,t,sum[T],f[T][T],g[T][T],ans=0;
char s[N];
int main(){
    scanf("%d%d%d",&n,&m,&t);
    for(int i=1;i<=n;++i){
        scanf("%s",s+1),memset(f,0,sizeof(f));
        for(int j=1;j<=m;++j)sum[j]=sum[j-1]+(s[j]=='1');
        for(int j=1;j<=m;++j)for(int k=1;k<=m;++k)
                for(int l=1;l<=j;++l)
                    f[j][k]=max(f[j][k],f[l-1][k-1]+max(sum[j]-sum[l-1],j-l+1-sum[j]+sum[l-1]));
        for(int j=1;j<=t;++j){int up=min(j,m);for(int k=1;k<=up;++k)g[i][j]=max(g[i][j],g[i-1][j-k]+f[m][k]);}
    }
    for(int i=1;i<=t;++i)ans=max(ans,g[n][i]);
    cout<<ans;
    return 0;
}

2018.09.02 bzoj1296: [SCOI2009]粉刷匠(dp套dp)的更多相关文章

  1. [Bzoj1296][Scoi2009] 粉刷匠 [DP + 分组背包]

    1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2184  Solved: 1259[Submit][Statu ...

  2. bzoj1296: [SCOI2009]粉刷匠(DP)

    1296: [SCOI2009]粉刷匠 题目:传送门 题解: DP新姿势:dp套dp 我们先单独处理每个串,然后再放到全局更新: f[i][k]表示当前串枚举到第i个位置,用了k次机会 F[i][j] ...

  3. 【Dp】Bzoj1296 [SCOI2009] 粉刷匠

    Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个 ...

  4. BZOJ1296: [SCOI2009]粉刷匠 DP

    Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个 ...

  5. BZOJ1296 [SCOI2009]粉刷匠 【dp】

    题目 windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个格子最多只能被粉刷 ...

  6. 2018.09.02 bzoj1025: [SCOI2009]游戏(计数dp+线筛预处理)

    传送门 要将所有置换变成一个轮换,显然轮换的周期是所有置换长度的最小公倍数. 于是我们只需要求长度不超过n,且长度最小公倍数为t的不同置换数. 而我们知道,lcm只跟所有素数的最高位有关. 因此lcm ...

  7. BZOJ1296 [SCOI2009]粉刷匠 动态规划 分组背包

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1296 题意概括 有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝 ...

  8. bzoj1296: [SCOI2009]粉刷匠

    dp. 用到俩次dp,用1和0代表俩种颜色,首先对于每块木板我们进行一次dp,g[i][j]代表前j个格子刷i次最多能涂到几个格子. 则 g[i][j]=max(g[i-1][k],max(cnt[j ...

  9. bzoj1296 [SCOI2009]粉刷匠——背包

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1296 对于不同木板之间,最终统计答案时做一个分组背包即可: 而要进行分组背包,就需要知道每个 ...

随机推荐

  1. css属性 writing-mode 改变文字书写方向

    作为IE的私有属性之一,IE5.5率先实现了 writing-mode ,后期被w3c采纳成标准属性: #test{ -webkit-writing-mode: vertical-rl;/*horiz ...

  2. getitem, setitem, delitem (把类实例化成字典的类型)

    class Foo(object):     def __init__(self):         self.data = {} def __getitem__(self, key):        ...

  3. npm 安装cnpm

    npm install -g cnpm --registry=https://registry.npm.taobao.org

  4. PAXOS/RAFT理解

    PAXOS学习记录 前提: 信息准确无篡改,通信环境可信 目的: 解决多结点间一致性问题(集群中一个修改或者申请成为主结点的提议) 主要角色: Proposer :提出议案(同时存在一个或者多个,他们 ...

  5. 本地Facts

    我们可以通过Facts来获取目标主机的系统信息,当这些信息还不能满足我们的功能需要时,可以通过编写自定义的Facts模块来实现.当然,还有一个更简单的实现方法,就是通过本地Facts来实现.只需在目标 ...

  6. Filter接口编写过滤器

      Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程.为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息 ...

  7. lzo文件压缩,解压

    LZOP命令安装 yum install lzop lzop命令基本操作命令 # lzop -v test # 创建test.lzo压缩文件,输出详细信息,保留test文件不变 # lzop -Uv ...

  8. DELPHI WM_CopyData 用法

    unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

  9. go递归函数如何传递数组切片slice

    数组切片slice这个东西看起来很美好,真正用起来会发现有诸多的不爽. 第一,数组.数组切片混淆不清,使用方式完全一样,有时候一些特性又完全不一样,搞不清原理很容易误使用. 第二,数组切片的appen ...

  10. dns server 配置

    # cat /etc/named.conf//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND ...