codeforces 225C C. Barcode(dp)
2015-09-17 11:35
309 查看
题目链接:
codeforces 225C题目大意:
给出一个矩阵,包含两种颜色,问最少修改多少个点才能让每一列的颜色一致,且颜色一致的连续的列的长度在x和y之间。题目分析:
首先我们需要统计出每一列调整为全黑列和调整为全白列的花费,然后定义状态dp[i][j][k]为当前处理到第i列,当前颜色为k,连续的列的长度为j的情况下的最小花费。然后转移很简单:
⎧⎩⎨dp[i][1][k]=mint∈[x,y](dp[i−1][t][k⊕1]) ,j=1dp[i][j][k]=dp[i−1][j−1][k] ,j≠1\left\{
\begin{aligned}
& dp[i][1][k] = \min_{t \in [x,y]} ( dp[i-1][t][k \oplus 1])\ , j = 1 \\
& dp[i][j][k] = dp[i-1][j-1][k] \ , j \neq 1
\end{aligned}
\right.
最后答案就是取mini∈[x,y](min(dp[m][i][0],dp[m][i][1]))\min_{i \in [x,y]} ( min ( dp[m][i][0] , dp[m][i][1] ))
AC代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #define MAX 1007 using namespace std; char a[MAX][MAX]; int b[MAX],w[MAX],dp[MAX][MAX][2],n,m,x,y; int main ( ) { while ( ~scanf ( "%d%d%d%d" , &n , &m , &x , &y )) { for ( int i = 1 ; i <= n ; i++ ) scanf ( "%s" , a[i]+1 ); for ( int i = 1 ; i <= m ; i++ ) { b[i] = w[i] = 0; for ( int j = 1 ; j <= n ; j++ ) if ( a[j][i] == '#' ) w[i]++; else b[i]++; } memset ( dp , 0x3f , sizeof ( dp )); const int INF = dp[0][0][0]; dp[1][1][0] = b[1]; dp[1][1][1] = w[1]; for ( int i = 2; i <= m ; i++ ) { for ( int j = x ; j <= y ; j++ ) { if ( dp[i-1][j][1] != INF ) dp[i][1][0] = min ( dp[i][1][0] , dp[i-1][j][1] + b[i] ); if ( dp[i-1][j][1] != INF ) dp[i][1][1] = min ( dp[i][1][1] , dp[i-1][j][0] + w[i] ); } for ( int j = 2; j <= y ; j++ ) { if ( dp[i-1][j-1][0] != INF ) dp[i][j][0] = dp[i-1][j-1][0] + b[i]; if ( dp[i-1][j-1][1] != INF ) dp[i][j][1] = dp[i-1][j-1][1] + w[i]; } } int ans = INF; for ( int i = x ; i <= y ; i++ ) { ans = min ( ans , dp[m][i][0] ); ans = min ( ans , dp[m][i][1] ); } printf ( "%d\n" , ans ); } }
相关文章推荐
- 华为 dhcp server dns-list 最多可以设置
- js的MVC结构设计
- nexus5 博通芯片WIFI详解 (2)
- mysql备份
- 远程管理桌面
- Java:关于super()的用法
- 在Android Studio的drawable文件下创建XML文件
- linux(centOS)下安装nodejs
- XXSXB
- dynamic generate command line parameters for qt embedded application
- android-async-http源码解读(一)
- Firefox OS启动过程分析-nuwa进程启动
- C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0
- Xcode 4.5( iOS6 SDK)、旧版本号cocos2d,支持iPhone5解析度
- OC方面的基础笔记摘录
- Access the Spring-ApplicationContext from everywhere in your Application
- ASP正则表达式清除HTML指定标签的方法
- nexus5 博通芯片WIFI详解 (1)
- 用netsh查看和设置IP地址、DNS地址、防火墙
- XXLB