题目

Description

鸡腿想到了一个很高(sha)明(bi)的问题,墙可以看作一个N*M的矩阵,有一些格子是有污点的。现在鸡腿可以竖着刷一次,覆盖连续的最多C列,或者横着刷一次,覆盖连续的最多R行。现在鸡腿把墙上的情况告诉你,请你告诉鸡腿最少要刷多少次才能刷干净!

Input

第1行,输入俩正整数N,M。

第2到N+1行,每行一个长度为M的字符串,每个字符可能是’.’表示干净的,或者’X’表示这个格子有污点。

第N+2行,输入俩正整数表示R和C。

Output

输出一行一个整数,表示鸡腿最少要刷几次。

Sample Input

输入1:
1 9
XXXXXXXXX
2 3
输入2:

11 14
XXX..XXX..XXX.
.X..X....X...X
.X..X....X...X
.X..X....X...X
.X...XXX..XXX.
..............
...XX...XXX...
....X......X..
....X....XXX..
....X......X..
...XXX..XXX...
1 2

Sample Output

输出1:
1
输出2:
7

Data Constraint

对于50%的数据1≤N,M≤5;

对于100%的数据1≤N,M,R,C≤15。

分析

  • n=15
  • 那就枚举吧,枚举当前行刷不刷
  • 然后计算出列的答案加上取min

代码

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int b[20][20],a[20][20],ans=100000000;
 5 bool h[20],l[20],hh[20],ll[20];
 6 int n,m,r,c;
 7 int check()
 8 {
 9     int t=0;
10     memcpy(b,a,sizeof(b));
11     for (int i=1;i<=n;i++)
12       if (h[i]==1)
13         for (int j=1;j<=m;j++)
14           b[i][j]=0;
15     for (int j=1;j<=m;j++)
16       for (int i=1;i<=n;i++)
17         if (b[i][j]==1)
18         {
19             t++;
20             j+=c-1;
21             break;
22         }
23     return t;
24 }
25 void dfs(int x,int sum)
26 {
27     if (x>n)
28     {
29         ans=min(ans,sum+check());
30         return;
31     }
32     for (int i=x;i<=min(x+r-1,n);i++)
33           h[i]=1;
34     dfs(min(x+r,n+1),sum+1);
35     for (int i=x;i<=min(x+r-1,n);i++)
36           h[i]=0;
37     dfs(x+1,sum);
38 }
39 int main ()
40 {
41     cin>>n>>m;
42     char num;
43     for (int i=1;i<=n;i++)
44         for (int j=1;j<=m;j++)
45         {
46             cin>>num; if (num=='X') a[i][j]=1;
47         }
48     cin>>r>>c;
49     dfs(1,0);
50     cout<<ans;
51 } 

转载于:https://www.cnblogs.com/zjzjzj/p/11370579.html

JZOJ 3503. 粉刷(paint)相关推荐

  1. 【纪中受难记】——Day17:本来能AK

    (标题妄想). 95/0/0 第二题很水,后来花5分钟切了. 3503. 粉刷(paint) (Standard IO) Time Limits: 1000 ms  Memory Limits: 13 ...

  2. JZOJ 1035. 【SCOI2009】粉刷匠

    题目 Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. ...

  3. JZOJ 5627. 【NOI2018模拟4.3】paint

    Description Input Output Sample Input 样例输入1 10 10 4 1 6 4 1 6 9 9 4 样例输入2 10 10 4 2 2 4 4 7 7 9 9 Sa ...

  4. BZOJ1296:[SCOI2009]粉刷匠

    1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2038  Solved: 1182 [Submit][Sta ...

  5. 牛客网 【每日一题】[SCOI2009]粉刷匠

    链接: 题目描述 windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个格子最 ...

  6. BZOJ 1296: [SCOI2009]粉刷匠( dp )

    dp[ i ][ j ] = max( dp[ i - 1 ][ k ] + w[ i ][ j - k ] )  ( 0 <= k <= j ) 表示前 i 行用了 j 次粉刷的机会能正 ...

  7. 1296: [SCOI2009]粉刷匠

    Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个 ...

  8. bzoj 1296: [SCOI2009]粉刷匠(DP+DP)

    1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2339  Solved: 1348 [Submit][Sta ...

  9. bzoj1296【SCOI2009】粉刷匠

    1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec   Memory Limit: 162 MB Submit: 1479   Solved: 837 [ Submit][ ...

最新文章

  1. nginx同IP、同端口、不同域名时的转发
  2. centos树莓派安装mysql_用树莓派实现网络批量自动安装CentOS
  3. vb中如何才能有手型的光标?
  4. Eclipse配置注释模板的方法
  5. 【项目管理】合同和采购
  6. cmd连接不了mysql_cmd连接mysql操作命令
  7. 问世 20 多年的 PHP 还是最好的编程语言吗?
  8. 国二考试c语言考场能炒么,国2考试题_计算机国二office高级应用考试的题目是从题库20套里抽其中一套还是别的题目_淘题吧...
  9. 一位女性程序员的职业规划
  10. 女子深夜醉酒后躺在马路中央,被路过的十几辆汽车压过,怎么定罪?
  11. 1.3寸IIC OLED SH1106和Arduino库的适配性鸡肋问题
  12. Masonry约束自定义TableViewCell自适应行高的约束冲突的问题
  13. 7-6 最热门的职业
  14. 14个种类,600款笔刷!如何做一套属于自己的精美笔刷?
  15. 《虚拟化安全解决方案》一2.2 配置VMware ESXi
  16. 在Vue中使用flex布局 echarts多图标不能自适应缩放问题
  17. Windows 11 正式版 ISO 镜像下载大全
  18. 中国机器人产业图谱(2022)
  19. 国际现货黄金换算须知
  20. python谷歌翻译库googletrans使用 避坑!

热门文章

  1. Homebrew命令具体解释
  2. CentOS 7运维管理笔记(5)----源代码安装Apache 2.4,搭建LAMP服务器
  3. (转)Inno Setup入门(十七)——Inno Setup类参考(3)
  4. PAT1003. 我要通过!
  5. c语言 选择结构,C语言学习:选择结构
  6. hello python jpush_Python人脸识别 + 手机推送,老板来了你就会收到短信提示
  7. python统计句子中单词个数_【python统计单词数量】作文写作问答 - 归教作文网
  8. DFINITY创始人:目前仍以Q1路线图为主要目标,正在进行创世启动前的安全审计
  9. SAP License:COPA凭证冲销
  10. 反欺诈之设备指纹(下篇)