CodeForces 225C Barcode DP
也是一道dp ,想到了就会觉得很巧妙
矩阵中只有白块和黑块,要求repaint后满足下述条件:
- 每列一种颜色
- 根据输入范围x, y 要求条纹宽度在[x, y] 之间
数据范围: n, m, x and y (1 ≤ n, m, x, y ≤ 1000; x ≤ y).
求:满足条件最少repaint的次数
自己在YY的时候觉得这么大的数据范围肯定没得暴力,估计就dp 了= =
是可以想出这么个dp 公式: cur[][] = Sigma(x ~ y) Min( former[][] + Sum[] )
不过细节没有想全
看了Tutorial 后顿时明白了
题中只有两种颜色Black 和 White ,先作一个预处理使得可以求出任意posX 到 posY 之间White 和 Black 块的数目
然后就可以开始状态转移了~


最后的答案就是min(dp[0][m], dp[1][m]).
Source Code:
//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <cstring>
#include <cmath>
#include <stack>
#include <string>
#include <map>
#include <set>
#include <list>
#include <queue>
#include <vector>
#include <algorithm>
#define Max(a,b) (((a) > (b)) ? (a) : (b))
#define Min(a,b) (((a) < (b)) ? (a) : (b))
#define Abs(x) (((x) > 0) ? (x) : (-(x)))
#define MOD 1000000007
#define pi acos(-1.0) using namespace std; typedef long long ll ;
typedef unsigned long long ull ;
typedef unsigned int uint ;
typedef unsigned char uchar ; template<class T> inline void checkmin(T &a,T b){if(a>b) a=b;}
template<class T> inline void checkmax(T &a,T b){if(a<b) a=b;} const double eps = 1e- ;
const int N = ;
const int M = ;
const ll P = 10000000097ll ;
const int INF = 0x3f3f3f3f ; char a[][];
int v1[][], v2[][];
int dp[][]; int main(){
int i, j, k, t, n, m, numCase = ;
int x, y;
while(cin >> n >> m >> x >> y){
memset(v1, , sizeof(v1));
for(i = ; i <= n; ++i){
for(j = ; j <= m; ++j){
cin >> a[i][j];
if('#' == a[i][j]) ++v1[j][];
else ++v1[j][];
}
}
v2[][] = v1[][];
v2[][] = v1[][];
for(i = ; i <= m; ++i){
v2[i][] = v2[i - ][] + v1[i][];
v2[i][] = v2[i - ][] + v1[i][];
}
memset(dp, 0x3f, sizeof(dp));
dp[][] = dp[][] = ;
for(j = ; j <= m; ++j){
for(int a = x; a <= y; ++a){
if(j - a < ) break;
checkmin(dp[][j], dp[][j - a] + v2[j][] - v2[j - a][]);
checkmin(dp[][j], dp[][j - a] + v2[j][] - v2[j - a][]);
}
}
cout << Min(dp[][m], dp[][m]) << endl; } return ;
}
CodeForces 225C Barcode DP的更多相关文章
- Codeforces 225C Barcode(矩阵上DP)
题目链接:http://codeforces.com/contest/225/problem/C 题目大意: 给出一个矩阵,只有两种字符'.'和'#',问最少修改多少个点才能让每一列的字符一致,且字符 ...
- CF思维联系–CodeForces - 225C. Barcode(二路动态规划)
ACM思维题训练集合 Desciption You've got an n × m pixel picture. Each pixel can be white or black. Your task ...
- 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 ...
- 【Codeforces 225C】Barcode
[链接] 我是链接,点我呀:) [题意] 让你把每一列都染成一样的颜色 要求连续相同颜色的列的长度都大于等于x小于等于y 问你最少的染色次数 [题解] 先求出每一列染成#或者.需要染色多少次 设f[0 ...
- codeforces 682D(DP)
题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列 ...
- codeforces 666A (DP)
题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...
- Codeforces 176B (线性DP+字符串)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成 ...
- Codeforces 55D (数位DP+离散化+数论)
题目链接: http://poj.org/problem?id=2117 题目大意:统计一个范围内数的个数,要求该数能被各位上的数整除.范围2^64. 解题思路: 一开始SB地开了10维数组记录情况. ...
- Codeforces 264B 数论+DP
题目链接:http://codeforces.com/problemset/problem/264/B 代码: #include<cstdio> #include<iostream& ...
随机推荐
- python10min系列之面试题解析:python实现tail -f功能
同步发布在github上,跪求star 这篇文章最初是因为reboot的群里,有人去面试,笔试题有这个题,不知道怎么做,什么思路,就发群里大家讨论 我想了一下,简单说一下我的想法吧,当然,也有很好用的 ...
- Linux系统之UpStart
子贡问为仁.子曰:“工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者.”——孔子(春秋)<论语·卫灵公> [工欲善其事,必先利其器] 掌握一门技术,知道其发展历程是非常重要的 ...
- 【转】android windowSoftInputMode
android:windowSoftInputMode activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性. 这个属性能影响两件事情: [一] ...
- AMD模块化JS
参考http://ourjs.com/detail/52ad26ff127c76320300001f Offcial Site http://requirejs.org/ 下载http://requi ...
- VC++ win32 多线程 一边画圆一边画矩形
// WinThreadTest.cpp : Defines the entry point for the application. // #include "stdafx.h" ...
- php 实现简单的登录
//登录页面: V层前端模板: Administrator@QCEE61NZ66FEX2D /cygdrive/c/wamp/www/thinkphp/Home/Tpl/Login $ ls inde ...
- 犯罪团伙利用POS机刷信用卡积分转卖 年获利千万
今年1月20日,广东省公安厅展示去年缴获的盗刷专用POS机. 今年1月20日,广东省公安厅展示了一批缴获的盗刷信用卡工具. 他们是一群靠信用卡谋生的年轻人,平均年龄不超过30岁. 他们将各银行信用 ...
- Winter(bfs&&dfs)
1084 - Winter PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Winter is ...
- android四大组件详解--摘
Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...
- 在SAE上搭建自定义版本WordPress, 并用SAE Storage代替WordPress Uploads
问题由来: 1. SAE中默认的WP for SAE版本太低, 导致某些基于新版本WordPress的插件不能使用. 2. SAE中单个APP的代码空间仅有100M. 将WordPress中uploa ...