传送门:http://codeforces.com/contest/919/problem/C

给出一张n×m的座位表(有已占座位和空座位),请选择同一行(或列)内连续的k个座位。求选择的方法数。

Hack:首先,若k=1,则所有的空座位均可选,方法数即为空座位数。

对于某一行(或列)中连续的len个座位,选择的方法数为len-k+1。

于是,分别逐行、逐列地统计,求出答案。参考程序如下:

#include <stdio.h>
#define MAX_N 2000 char map[MAX_N][MAX_N];
int row[MAX_N][MAX_N], col[MAX_N][MAX_N]; int main(void)
{
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
for (int i = ; i < n; i++) {
getchar();
for (int j = ; j < m; j++)
map[i][j] = getchar();
}
int ans = ;
if (k == ) {
for (int i = ; i < n; i++) {
for (int j = ; j < m; j++)
if (map[i][j] == '.') ans++;
}
printf("%d\n", ans);
return ;
}
//pass by row
for (int i = ; i < n; i++) {
int len = , cnt = ;
for (int j = ; j < m; j++) {
if (map[i][j] == '*') {
if (len) row[i][cnt++] = len;
len = ;
}
else len++;
}
if (len) row[i][cnt++] = len;
}
//pass by column
for (int j = ; j < m; j++) {
int len = , cnt = ;
for (int i = ; i < n; i++) {
if (map[i][j] == '*') {
if (len) col[j][cnt++] = len;
len = ;
}
else len++;
}
if (len) col[j][cnt++] = len;
}
for (int i = ; i < n; i++) {
for (int j = ; row[i][j] != ; j++)
if (row[i][j] >= k) ans += row[i][j] - k + ;
}
for (int i = ; i < m; i++) {
for (int j = ; col[i][j] != ; j++)
if (col[i][j] >= k) ans += col[i][j] - k + ;
}
printf("%d\n", ans);
return ;
}

最新文章

  1. IDDD 实现领域驱动设计-理解限界上下文
  2. 引用模板中的类型时,切记要加上typename声明!!
  3. 获取乌云补天指定关键字的漏洞并输出URL和标题
  4. 常用Windows DOS命令项目部署经常用到
  5. 温故而知新----stack
  6. ykit入门
  7. 4、Kafka命令行操作
  8. kubernetes 部署 traefik 以及kubernetes dashborad
  9. 4. Oracle数据库用户管理备份与恢复
  10. 学习笔记&lt;3&gt;View接触
  11. PriorityQueue的Java实现
  12. 关于cocos2dx的textfield事件响应
  13. UITableView的headerView展开缩放动画
  14. spring拾遗(一)——@Value注入static属性
  15. 小程序插入html代码
  16. 2017 Multi-University Training Contest - Team 3 hdu6060 RXD and dividing
  17. Backup--备份相关的信息查看及小技巧
  18. el表达式动态拼接变量_c:set的用法
  19. quagga源码学习--BGP协议中的routemap
  20. CRM IFD 部署在同一台服务器上遇到的错误

热门文章

  1. linux下查看一个文件的属性(ls,lsattr,file,stat)
  2. Secure CRT中解决vim高亮设置的方法
  3. 关于pycharm中pip版本10.0无法使用的解决办法
  4. P1452 Beauty Contest
  5. 研磨JavaScript系列(五):奇妙的对象
  6. fcc html5 css 练习3
  7. 笔记《精通css》第4章 背景图像,平铺方式,背景定位,圆角框,投影,不透明
  8. Android之Glide获取图片Path和Glide获取图片Bitmap
  9. 【GAN学习笔记】对抗式生成网络入门
  10. hdu2639,第K优决策