稍微复杂一点的划分dp

设f[i][j][k]为第i行前j个k次粉刷正确的最大值

由于每行循环使用,可以去掉第一维,但每次不要忘了清零(卡了好久)

f[j][k]=max{ f[u][j-1] + max(u+1到j的蓝色的个数,u+1到j的红颜色的个数) }

设h[i][k]为第i行分成k份的最大值

h[i][k]=f[i][m][k]

设dp[i][k]为前i行总共分成k份的最大值

dp[i][k]=dp[i-1][t-x]+h[i][x]

x表示在第i行使用x次

代码如下:

#include<iostream>
#define Size 55
#define Max_t 3000
using namespace std; char a[Size][Size];
int f[Size][Size];
int h[Size][Size];
int dp[Size][Max_t];
int s1[Size][Size],s2[Size][Size];
int n,m,t; inline int sum1(int i,int l,int r){return s1[i][r]-s1[i][l-];}
inline int sum2(int i,int l,int r){return s2[i][r]-s2[i][l-];} int main(){
freopen("1744.in","r",stdin); cin>>n>>m>>t;
for(int i=;i<=n;i++){
cin>>a[i]+;
for(int j=;j<=m;j++){
s1[i][j]=s1[i][j-];
s2[i][j]=s2[i][j-];
if(a[i][j]=='')s1[i][j]++;
else s2[i][j]++;
}
} //test
/*
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<s1[i][j]<<' ';
}
cout<<endl;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<s2[i][j]<<' ';
}
cout<<endl;
}
*/ for(int i=;i<=n;i++){//行
for(int j=;j<=m;j++){//前j个数
for(int k=;k<=min(t,j);k++){//分成k份
f[j][k]=;//注意f是每行重复使用的,需要清零!
for(int u=k-;u<=j-;u++){//分割点
f[j][k]=max(f[j][k], f[u][k-]+max(sum1(i,u+,j),sum2(i,u+,j)));
}
//cout<<i<<','<<j<<','<<k<<':'<<f[j][k]<<endl;
}
}
//cout<<"----------"<<endl;
for(int k=;k<=min(m,t);k++){
h[i][k]=f[m][k];
//cout<<i<<','<<k<<':'<<h[i][k]<<endl;
}
//cout<<"------------------------------"<<endl;
} for(int i=;i<=n;i++){
for(int k=;k<=t;k++){
for(int x=;x<=k;x++){
dp[i][k]=max(dp[i][k], dp[i-][k-x]+h[i][x]);
}
}
} cout<<dp[n][t]<<endl; fclose(stdin);
return ;
}

再次提醒自己注意f重用的清零!

code1744 方格染色的更多相关文章

  1. [BZOJ2303][Apio2011]方格染色

    [BZOJ2303][Apio2011]方格染色 试题描述 Sam和他的妹妹Sara有一个包含n × m个方格的 表格.她们想要将其的每个方格都染成红色或蓝色. 出于个人喜好,他们想要表格中每个2 × ...

  2. BZOJ_2303_[Apio2011]方格染色 _并查集

    BZOJ_2303_[Apio2011]方格染色 _并查集 Description Sam和他的妹妹Sara有一个包含n × m个方格的 表格.她们想要将其的每个方格都染成红色或蓝色. 出于个人喜好, ...

  3. bzoj 2303: [Apio2011]方格染色

    传送门 Description Sam和他的妹妹Sara有一个包含n × m个方格的表格.她们想要将其的每个方格都染成红色或蓝色.出于个人喜好,他们想要表格中每个2 × 2的方形区域都包含奇数个(1 ...

  4. BZOJ2303: [Apio2011]方格染色 【并查集】

    Description Sam和他的妹妹Sara有一个包含n × m个方格的表格.她们想要将其的每个方格都染成红色或蓝色.出于个人喜好,他们想要表格中每个2 × 2的方形区域都包含奇数个(1 个或 3 ...

  5. BZOJ 2303 方格染色(带权并查集)

    要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...

  6. 【题解】P3631 [APIO2011]方格染色

    很有意思的一道题,所以单独拿出来了. 完整分享看 这里 题目链接 luogu 题意 有一个包含 \(n \times m\) 个方格的表格.要将其中的每个方格都染成红色或蓝色.表格中每个 \(2 \t ...

  7. BZOJ 2303: [Apio2011]方格染色 题解

    题目大意: 有n*m的方格,中间的数要么是1,要么是0,要求任意2*2的方格中的数异或和为1.已知一部分格子中的数,求合法的填数的方案数. 思路: 由题意得:a[i][j]^a[i][j+1]^a[i ...

  8. BZOJ 2303: [Apio2011]方格染色 [并查集 数学!]

    题意: $n*m:n,m \le 10^6$的网格,每个$2 \times 2$的方格必须有1个或3个涂成红色,其余涂成蓝色 有一些方格已经有颜色 求方案数 太神了!!!花我三节课 首先想了一下只有两 ...

  9. BZOJ2303 APIO2011方格染色(并查集)

    比较难想到的是将题目中的要求看做异或.那么有ai,j^ai+1,j^ai,j+1^ai+1,j+1=1.瞎化一化可以大胆猜想得到a1,1^a1,j^ai,1^ai,j=(i-1)*(j-1)& ...

随机推荐

  1. Makefile编写 四 函数篇

    一.函数的调用语法 函数调用与变量一样,也是以“$”来标识的,其语法如下: $(<function> <arguments>) 或是 ${<function> &l ...

  2. Zookeeper--集群管理

    Zookeeper--集群管理 在多台服务器组成的集群中,需要监控每台服务器的状态,一旦某台服务器挂掉了或有新的机器加入集群,集群都要感知到,从而采取相应的措施.一个主动的集群可以自动感知节点的死亡和 ...

  3. struts2学习(13)struts2文件上传和下载(1)

    一.Struts2文件上传: 二.配置文件的大小以及允许上传的文件类型: 三.大文件上传: 如果不配置上传文件的大小,struts2默认允许上传文件最大为2M: 2097152Byte:   例子实现 ...

  4. ALSA声卡笔记1---ALSA驱动框架

    1.声卡驱动程序sound.c (1)入口函数里通过register_chrdev()函数注册file_operations 结构体 (2)file_operations 结构体,里面只有open函数 ...

  5. jdk ssl证书

  6. Centos 部署Cobbler系统

    一.简介 Cobbler 可以用来快速建立 Linux 网络安装环境,它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会.(~..~) 二.安装环境以及资 ...

  7. Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡

    转载:http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架 ...

  8. C# GDI+ 实现橡皮筋技术

    原文 C# GDI+ 实现橡皮筋技术 应该有很多人都在寻找这方面的资料,看看下面我做的,或许对你会有所帮助,但愿如此. 为了实现橡皮筋技术,我用了两种方法:     第一种是利用ControlPain ...

  9. mongodb(四)

    Count+Distinct+Group数据库命令操作固定集合特性GridFS文件系统补充服务器端脚本 db.runCommand({group:{ ns:"persons", k ...

  10. leetcode289

    public class Solution { public void GameOfLife(int[][] board) { ) - ; ].GetLength() - ; var list = n ...