C. Barcode dp
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 ;
}
C. Barcode dp的更多相关文章
- CodeForces 225C Barcode DP
也是一道dp ,想到了就会觉得很巧妙 矩阵中只有白块和黑块,要求repaint后满足下述条件: 每列一种颜色 根据输入范围x, y 要求条纹宽度在[x, y] 之间 数据范围: n, m, x and ...
- codeforces每日一题1-10
目录: 1.1093D. Beautiful Graph(DFS染色) 2.514C - Watto and Mechanism(Tire) 3.69E.Subsegments(STL) 4.25C. ...
- CF 225C Barcode(DP)
传送门:点我 You've got an n × m pixel picture. Each pixel can be white or black. Your task is to change t ...
- [CF225C] Barcode (简单DAG上dp)
题目链接:http://codeforces.com/problemset/problem/225/C 题目大意:给你一个矩阵,矩阵中只有#和.两种符号.现在我们希望能够得到一个新的矩阵,新的矩阵满足 ...
- Codeforces 225C Barcode(矩阵上DP)
题目链接:http://codeforces.com/contest/225/problem/C 题目大意: 给出一个矩阵,只有两种字符'.'和'#',问最少修改多少个点才能让每一列的字符一致,且字符 ...
- 给你的应用“一只”智慧的眼睛 —— Barcode常识普及以及识别信息处理
在“如何用MediaCapture解决二维码扫描问题”这篇文章中,我们通过“成像”.“截图”与“识别”三个步骤介绍了使用MediaCapture扫码的主要过程及注意事项.本文主要针对“识别”的过程,对 ...
- CF思维联系–CodeForces - 225C. Barcode(二路动态规划)
ACM思维题训练集合 Desciption You've got an n × m pixel picture. Each pixel can be white or black. Your task ...
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 4142 Solved: 1964[Submit][Statu ...
- 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...
随机推荐
- go中的error小结
go中的error error和panic error接口 go中err的困局 推荐方法 总结 参考 go中的error go中的错误处理,是通过返回值的形式来出来,要么你忽略,要么你处理(处理也可以 ...
- redis 正确实现分布式锁的正确方式
前言 最近在自己所管理的项目中,发现redis加锁的方式不对,在高并发的情况有问题.故在网上找搜索了一把相关资料.发现好多都是互相抄袭的,很多都是有缺陷的.好多还在用redis 的 setnx命令来实 ...
- Vue中el-form标签中的自定义el-select下拉框标签
页面写死el-select下拉框标签: 通过v-for="item in stateArr"绑定,stateArr声明在Vue组件里面的data参数里面代码如下: <el-f ...
- three.js中让模型自动居中的代码如下:
//load_Model为需要居中的3D模型 //原理是通过boundingBoxHelper 来计算模型的大小范围 var hex = 0xff0000; var MD_Length,MD_Widt ...
- Python 注释(Python Comments)用法详解
目录 1 Python 注释概述 2 Python 注释的作用 2.1 调试代码 2.2 提高程序的可读性 3 Python 单行注释 3.1 Python 单行注释概述 3.2 单行注释注释单行代码 ...
- Python列表介绍,最常用的Python数据类型
文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:数据杂论 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获 ...
- E - Farthest Nodes in a Tree
Given a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. Th ...
- python3_learn 实现文件夹内批量对图片重命名
初衷 练习Python,提高动手能力. 珍藏的壁纸文件夹名命有点乱. 可以学习下一些基础的库 开始(.jpg,无筛选) First 首先找到OS库,寻找可以遍历文件名的.找到了OS.walk() os ...
- 隐藏响应中的server和X-Powered-By
来源:https://www.yduba.com/biancheng-7831560074.html 有时候,我们用调试工具查看别人的网站时,经常看到 X-Powered-By:PHP/7.1.8 这 ...
- Python logging 模块打印异常 exception
logger.exception(sys.exc_info())