关闭

Codevs 1744 格子染色

264人阅读 评论(0) 收藏 举报
分类:

1744 格子染色
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题目描述 Description
有 n 条木板需要被粉刷。 每条木板被分为 m 个格子。 每个格子要被刷成红
色或蓝色。
输入描述 Input Description
Dizzy 每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色。 每个格子最多只能被粉刷一次。 如果 Dizzy 只能粉刷 t 次,他最多能正确粉刷多少格子? 一个格子如果未被粉刷或者被粉刷错颜色,就算错误粉刷。
输出描述 Output Description
第一行包含三个整数,n m t。 接下来有n行,每行一个长度为m的字符串,’0’表
示红色,’1’表示蓝色。
样例输入 Sample Input
3 6 3
111111
000000
001100
样例输出 Sample Output
16
数据范围及提示 Data Size & Hint
1 ≤ n,m ≤ 50 ; 0 ≤ t ≤ 2500 。
分类标签 Tags
动态规划

/*
区间(划分?)DP+背包DP. 
f[i][j][k]表示刷k次刷到(i,j)的最大格子数.
o(nm^2t).
一开始考虑的东西太多然后写不出来orz.
预处理后我们枚举一个w,
这样就成了一个区间问题:
求[1,j]只需求[1,w]和[w+1,j](w<=j).
决策有三种:不刷,刷0,刷1. 
然后从小区间到大区间乱搞...... 
我们发现每一行都是独立的(方格取数类似).
最后只需要跑背包分配每行刷几次就阔以啦. 
*/
#include<iostream>
#include<cstdio>
#define MAXN 51
#define MAXM 2501
using namespace std;
int n,m,t,f[MAXN][MAXN][MAXM],sum[MAXN][MAXN][2],s[MAXN][MAXM];
int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(f=='-')f-=1;ch=getchar();}
    while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
    return x*f;
}
void slove()
{
    for(int i=1;i<=n;i++)
      for(int j=1;j<=m;j++)
        for(int k=1;k<=t;k++)
          for(int w=1;w<=j;w++)
            f[i][j][k]=max(f[i][j][k],f[i][w-1][k-1]+
              max(sum[i][j][0]-sum[i][w-1][0],sum[i][j][1]-sum[i][w-1][1]));
    for(int i=1;i<=n;i++)
      for(int j=1;j<=t;j++)
        for(int k=0;k<=j;k++)
        s[i][j]=max(s[i][j],s[i-1][j-k]+f[i][m][k]);
    printf("%d",s[n][t]);
    return;
}
int main()
{
    char ch;
    n=read(),m=read(),t=read();
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            cin>>ch,ch-=48;
            sum[i][j][0]=sum[i][j-1][0];
            sum[i][j][1]=sum[i][j-1][1];
            sum[i][j][ch]++;
        }
    slove();
    return 0;
}
0
0
查看评论

codevs1050 棋盘染色 2

原题网址:http://codevs.cn/problem/1050/ 插头dp板子题 论文链接:http://wenku.baidu.com/link?url=ppnlF-_UyXkM0fWq4lByxGxjd4K67RpRywuLSgWUNwqAqsT69Hx3plGfBeaUR7pW55_...
  • MintGreenTZ
  • MintGreenTZ
  • 2016-10-11 19:35
  • 679

[CODEVS 1050] 棋盘染色 2

描述 有一个5*N的棋盘,棋盘中的一些格子已经被染成了黑色,你的任务是对最少的格子染色,使得所有的黑色能连成一块。 http://codevs.cn/problem/1050/ 分析 CODEVS 题解里有个很良心的人, 我是看了他的才写的. http://...
  • qq_21110267
  • qq_21110267
  • 2015-02-20 18:52
  • 1607

B【NOIP2017提高组模拟12.18】

Description在两个n*m的网格上染色,每个网格中被染色的格子必须是一个四联通块(没有任何格子被染色也可以),四联通块是指所有染了色的格子可以通过网格的边联通,现在给出哪些格子在两个网格上都被染色了,保证网格的最外围一层不会在两个网格中同时被染色,即所有处于第x行第y列满足x=1或x=n或y...
  • Last_Freezen_yue
  • Last_Freezen_yue
  • 2016-12-19 21:50
  • 266

HDU 5245 joyful( 2015 Shanghai Metropolitan J )

【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5245【解题报告】 题目大意:给你一个N*M个格子的矩阵,每次任意挑两个格子(可以相同)染色,一共染色K次,求被染色的格子的个数的期望。 一道普通概率题,解题关键在于如何求一个格子在k次染色后不...
  • gungnir0711
  • gungnir0711
  • 2015-11-21 23:31
  • 261

染色问题(n个格子,3种颜色)

有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 递推公式: A1 = 3 A2 = 6 //A(3,2)=6 A3 = 6 //A(3,3)=6 An=2*A...
  • perfumekristy
  • perfumekristy
  • 2013-03-23 22:16
  • 2343

染色问题(n个格子,3种颜色)

有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 递推公式: A1 = 3 A2 = 6 //A(3,2)=6 A3 = 6 //A(3,3)=6 An=2*A...
  • winycg
  • winycg
  • 2016-05-23 16:25
  • 959

Codevs 1566 染色

1566 染色 省队选拔赛山东 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 给定一棵有n个节点的无根树和m个操作,操作有2类:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(...
  • qq_35776409
  • qq_35776409
  • 2017-03-29 20:19
  • 188

CODEVS 1049 棋盘染色

题目描述 Description 有一个5×5的棋盘,上面有一些格子被染成了黑色,其他的格子都是白色,你的任务的对棋盘一些格子进行染色,使得所有的黑色格子能连成一块,并且你染色的格子数目要最少。读入一个初始棋盘的状态,输出最少需要对多少个格子进行染色,才能使得所有的黑色格子...
  • u013810072
  • u013810072
  • 2014-09-28 16:57
  • 951

codevs 1049 棋盘染色

#include using namespace std; int map1[10][10]; int map2[10][10]; int deep,ans,flag; int dir[4][2]={-1,0,0,1,1,0,0,-1}; void dfs1(int x,int y) { i...
  • ScorpioN___
  • ScorpioN___
  • 2016-11-18 10:32
  • 116

Codevs 数轴染色

题目描述 Description 在一条数轴上有N个点,分别是1~N。一开始所有的点都被染成黑色。接着 我们进行M次操作,第i次操作将[Li,Ri]这些点染成白色。请输出每个操作执行后 剩余黑色点的个数。输入描述 Input Description 输入一行为N和M。下面M行每行两个数Li、...
  • LOI__DiJiang
  • LOI__DiJiang
  • 2015-10-20 17:22
  • 444
    个人资料
    • 访问:81109次
    • 积分:4039
    • 等级:
    • 排名:第9147名
    • 原创:335篇
    • 转载:3篇
    • 译文:0篇
    • 评论:12条
    New blog