https://codeforces.com/problemset/problem/225/C

这个题目和之前一个题目很像 https://www.cnblogs.com/EchoZQN/p/10900373.html

只是这个数据范围更大一些,

不过刚开始我真的没有看出来。。。。

这个就是整列整列的处理,所以还是一样枚举当前的连续的j

dp[i][j][k] 这个k只有两个取值,一个是0,一个是1,0 代表白色,1代表黑色。

这个定义就是dp[i][j][0] 前面i个连续j个白色的列需要粉刷的最少的砖的数量。

另外一个同样,

所以按照之前的想法,很贱的就可以知道会有两种情况,一个是j==1 那就说明是之前的情况推过来的,因为之前的这个j不确定,

所以这里要枚举每一种情况。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<vector>
#define inf 0x3f3f3f3f
#define debug(x) cout<<"-----"<<" x = "<<x<<"-----"<<endl
using namespace std;
typedef long long ll;
const int maxn = 5e3 + ;
ll dp[][][];
char s[][];
int b[], w[];
int main()
{
int n, m, x, y;
scanf("%d%d%d%d", &n, &m, &x, &y);
for (int i = ; i <= n; i++) scanf("%s", s[i] + );
for(int j=;j<=m;j++)
{
for(int i=;i<=n;i++)
{
if (s[i][j] == '.') w[j]++;
else b[j]++;
}
}
memset(dp, inf, sizeof(dp));
dp[][][] = b[];
dp[][][] = w[];
for(int i=;i<=m;i++)
{
for(int j=;j<=y&&j<=i;j++)
{
if(j!=)
{
dp[i][j][] = dp[i-][j-][] + b[i];
dp[i][j][] = dp[i-][j-][] + w[i];
}
else
{
for(int k=x;k<=y;k++)
{
dp[i][j][] = min(dp[i][j][], dp[i-][k][] + b[i]);
dp[i][j][] = min(dp[i][j][], dp[i-][k][] + w[i]);
}
}
// printf("dp[%d][%d][0]=%lld\n", i, j, dp[i][j][0]);
// printf("dp[%d][%d][1]=%lld\n", i, j, dp[i][j][1]);
}
}
ll ans = inf;
for(int i=x;i<=y;i++)
{
ans = min(ans, dp[m][i][]);
ans = min(ans, dp[m][i][]);
}
printf("%lld\n", ans);
return ;
}

最新文章

  1. [Asp.net 5] Caching-缓存架构与源码分析
  2. button 样式
  3. selenium处理select标签的下拉框
  4. struts2总结一:MVC设计模式
  5. java多线程学习-同步之线程通信
  6. 初始html5,遇到的第一个问题
  7. 一网打尽当下NoSQL类型、适用场景及使用公司
  8. HDU 2176 (Nim博弈 先手取胜方案) 取(m堆)石子游戏
  9. socket编程在windows和linux下的区别
  10. php学习笔记——表单
  11. SD卡的SPI模式的初始化顺序(转)
  12. backbone入门学习一
  13. c语言int型和char型的自动类型转换
  14. About The Order of The Declarations And Definition When Making a Member Function a Friend.关于使类成员成为另一个类友元函数的声明顺序和定义。
  15. 树莓派0 ubuntu无显示器ssh登录终端
  16. JVM 虚拟机笔记
  17. [转]python3字符串与文本处理
  18. 自动化测试-21.RobotFrameWork配置安装
  19. 重置AD用户密码
  20. Java http协议概述

热门文章

  1. java集合中的一个移除数据陷阱(遍历集合自身并同时删除被遍历数据)
  2. 数组的增加与删除(push、pop、unshift、shift)
  3. 【Java】步入OOP 面向对象
  4. 【LeetCode】23.合并K个排序链表
  5. pomelo环境配置(windows环境)
  6. Java2年开发工作经验面试总结
  7. 【题解】P2831 愤怒的小鸟 - 状压dp
  8. Mysql链接查询
  9. prefetch 和 preload 及 webpack 的相关处理
  10. Java集合:ArrayList (JDK1.8 源码解读)