题目


分析

首先每条木板可以分开处理,再合并起来求最大值

下面讲一下单独处理每条木板的情况

设\(dp[k][m]\)表示前\(m\)个格子粉刷了\(k\)次最多正确粉刷的格子数

那么

\[dp[k][m]=\max\{dp[k-1][m']+(m-m'-(s[m]-s[m']))\}
\]

代码

#include <cstdio>
#include <cstring>
#define rr register
using namespace std;
const int N=51;
int n,m,T,ans,s[N],dp[N*N],f[N][N];
inline signed min(int a,int b){return a<b?a:b;}
inline signed max(int a,int b){return a>b?a:b;}
signed main(){
scanf("%d%d%d",&n,&m,&T);
for (rr int i=1;i<=n;++i){
memset(f,0,sizeof(f));
for (rr int j=1;j<=m;++j){
rr char c=getchar();
while (c!=48&&c!=49) c=getchar();
s[j]=s[j-1]+(c^48);
}
for (rr int j=1;j<=m;++j)
for (rr int k=j;k<=m;++k)
for (rr int p=j-1;p<k;++p)
f[j][k]=max(f[j][k],f[j-1][p]+max(s[k]-s[p],k-p-s[k]+s[p]));
for (rr int j=T;j>=1;--j)
for (rr int k=min(j,m);~k;--k)
dp[j]=max(dp[j],dp[j-k]+f[k][m]);
}
for (rr int i=1;i<=T;++i) ans=max(ans,dp[i]);
return !printf("%d",ans);
}

#dp#洛谷 4158 [SCOI2009]粉刷匠的更多相关文章

  1. 【题解】洛谷P4158 [SCOI2009] 粉刷匠(DP)

    次元传送门:洛谷P4158 思路 f[i][j][k][0/1]表示在坐标为(i,j)的格子 已经涂了k次 (0是此格子涂错 1是此格子涂对)涂对的格子数 显然的是 每次换行都要增加一次次数 那么当j ...

  2. 洛谷P4158 [SCOI2009]粉刷匠

    传送门 设$dp[i][j][k][0/1]$表示在涂点$(i,j)$,涂了$k$次,当前点的颜色是否对,最多能刷对多少个格子 首先换行的时候肯定得多刷一次 然后是如果和前一个格子颜色相同,那么当前点 ...

  3. 洛谷 P4158 [SCOI2009]粉刷匠 题解

    每日一题 day59 打卡 Analysis 很容易看出是一个dp, dp[i][j[k][0/1]来表示到了(i,j)时,刷了k次,0表示这个没刷,1表示刷了. 于是有转移: 1.换行时一定要重新刷 ...

  4. 【洛谷4158/BZOJ1296】[SCOI2009]粉刷匠(动态规划)

    题目:洛谷4158 分析: 这题一看就是动态规划. 可以看出,如果每个木条粉刷的次数是固定的,那么这些木条是互不干扰的,因此对于每个木条可以通过dp来求出把T次中的j次分配给这个木条时可以获得的最大正 ...

  5. 背包 DP【洛谷P4158】 [SCOI2009]粉刷匠

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

  6. BZOJ 1296: [SCOI2009]粉刷匠 分组DP

    1296: [SCOI2009]粉刷匠 Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上 ...

  7. BZOJ 1296: [SCOI2009]粉刷匠( dp )

    dp[ i ][ j ] = max( dp[ i - 1 ][ k ] + w[ i ][ j - k ] )  ( 0 <= k <= j ) 表示前 i 行用了 j 次粉刷的机会能正 ...

  8. 1296: [SCOI2009]粉刷匠[多重dp]

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

  9. 【BZOJ1296】[SCOI2009]粉刷匠 (DP+背包)

    [SCOI2009]粉刷匠 题目描述 \(windy\)有 \(N\) 条木板需要被粉刷. 每条木板被分为 \(M\) 个格子. 每个格子要被刷成红色或蓝色. \(windy\)每次粉刷,只能选择一条 ...

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

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

随机推荐

  1. maven引入本地jar不能打入部署包的问题解决

    引入的三方依赖 jar 包, scope 为 system 的包 maven 默认是不打包进去的,需要加这个配置 在pom.xml文件中找到spring-boot-maven-plugin插件,添加如 ...

  2. vscode中python类型注解插件及自动格式化

    # 插件名称 Python Type Hint # 如何ctrl+s保存时格式化,推荐安装yapf包 (flake8貌似不支持有类型注解的) 1.安装yapf包:pip install yapf 2. ...

  3. portainer docker可视化工具

    下载可视化工具 docker pull portainer/portainer 启动portainer --restart=always 只要挂掉了 就自动重启 docker run -d -p 80 ...

  4. 简化Simulink的建模与模型重构

    简化Simulink的建模与模型重构 模型重构 Simulink作为汽车和自动化领域中经典的模型工程必备工具,不管是专业的汽车控制器的开发还是自动化控制的专业应用编程,都会使用到Simulink进行图 ...

  5. 【Azure Cloud Services】云服务频繁发生服务器崩溃的排查方案

    问题描述 云服务(Cloud Services)在使用期间,频繁发生崩溃事件,在崩溃期间,查看CPU负载为100%,而且同时伴随以下情况: 部署在云服务上的应用无法访问 远程连接云服务实例(RDP)访 ...

  6. 【Azure Developer】使用MSAL4J 与 ADAL4J 的SDK时候,遇见了类型冲突问题 "java.util.Collections$SingletonList cannot be cast to java.lang.String"

    问题描述 在博文 "[Azure Developer]使用 Powershell az account get-access-token 命令获取Access Token (使用用户名+密码 ...

  7. 好用网址分享-77ai导航与77搜索导航

    AI(人工智能)技术正在改变我们的生活方式和工作方式,越来越多的人开始关注和使用AI相关的网站和应用程序.在这篇文章中,我将为大家介绍一些常用的AI网址导航,帮助您更好地了解和使用AI技术. AI H ...

  8. 【规范】Apifox就应该这么玩

    前言 缘由 好的工具就要配好的玩法 起因是最近在回顾项目时,看到了年事已高并且长时间不用的Postman,发现之前自己整理的接口文档十分混乱且没有规律.遂打开现在使用的Apifox,将本狗目前项目中使 ...

  9. 手机使用termux部署alist(一起体验alist挂载云盘)

    termux安装alist 安装termux 软件Termux:https://f-droid.org/packages/com.termux/ pkg install vim pkg install ...

  10. ANDROID : NEW IDEA

    •前言 学习了 Android 开发后,小脑袋瓜中时不时会蹦跶出一些想法: 这些想法大都是我现在实现不了的,所以就需要记录一下,等学到相关知识时,在着手解决. •NEW IDEA 1 将一款 APP( ...