当前位置: 首页 > news >正文

ABC 337

D. Cheating Gomoku Narabe

        (1) 暴力解法

                对于每个非 ' x ' 的点,都作为起点分别向右或向下枚举,如果 k 个之内出现 ' x ' 就退出,否则对出现的 ' . ' 的个数取 min。

 

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 5, INF = 1e18;int T, n, m, k, cnt, ans;
string s[N];signed main()
{cin >> n >> m >> k;ans = INF;for (int i = 1; i <= n; i ++){cin >> s[i];s[i] = ' ' + s[i];}for (int i = 1; i <= n; i ++)for (int j = 1; j <= m; j ++){if (j + k - 1 > m)break;if (s[i][j] != 'x'){int cnt1 = 0, p1 = 0;for (int z = 0; z < k; z ++){if (s[i][j + z] == '.')cnt1 ++;if (s[i][j + z] == 'x'){p1 = 1;break;}}if (p1 == 0)ans = min(ans, cnt1);}}for (int i = 1; i <= n; i ++){if (i + k - 1 > n)break;for (int j = 1; j <= m; j ++)if (s[i][j] != 'x'){int cnt2 = 0, p2 = 0;for (int z = 0; z < k; z ++){if (s[i + z][j] == '.')cnt2 ++;if (s[i + z][j] == 'x'){p2 = 1;break;}}if (p2 == 0)ans = min(ans, cnt2);		}}if (ans == INF)ans = -1;cout << ans;return 0;
}

 

 

        (2)优化

                注意到这里固定了区间长度 k,典型的滑动窗口解法。统计窗口内 ' . ' 和 ' x ' 的个数即可

 

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 5, INF = 1e18;int T, n, m, k, cnt, ans;
string s[N];signed main()
{cin >> n >> m >> k;ans = INF;for (int i = 1; i <= n; i ++){cin >> s[i];s[i] = ' ' + s[i];}for (int i = 1; i <= n; i ++){int cnt1 = 0, cnt2 = 0; for (int j = 1; j <= m; j ++){cnt1 += (s[i][j] == '.');cnt2 += (s[i][j] == 'x');if (j < k)	continue;if (cnt2 == 0)ans = min(ans, cnt1);cnt1 -= (s[i][j - k + 1] == '.');cnt2 -= (s[i][j - k + 1] == 'x');}}for (int j = 1; j <= m; j ++){int cnt1 = 0, cnt2 = 0; for (int i = 1; i <= n; i ++){cnt1 += (s[i][j] == '.');cnt2 += (s[i][j] == 'x');if (i < k)	continue;if (cnt2 == 0)ans = min(ans, cnt1);cnt1 -= (s[i - k + 1][j] == '.');cnt2 -= (s[i - k + 1][j] == 'x');}}if (ans == INF)ans = -1;cout << ans;return 0;
}
http://www.xdnf.cn/news/989227.html

相关文章:

  • Arduino入门教程:0、课程介绍认识Arduino
  • 餐厅商家怎么做元宵节活动宣传海报?
  • C++ 精简知识点
  • 推荐算法介绍-基础算法
  • python打卡第49天
  • Unity | AmplifyShaderEditor插件基础(第九集:旗子进阶版)
  • Nginx完全学习指南 - 从入门到实战
  • xilinx的GT配置说明(一)
  • Barcode解码 一维码、二维码识别 物流单号识别
  • Flink 系列之二十六 - Flink SQL - 中间算子:普通聚合
  • QDockWidget
  • Spring Data MongoDB 技术指南
  • JS开发node包并发布流程
  • 基于地形数据计算山体阴影
  • 【指针】(适合考研、专升本)
  • MySQL中外键约束详解 外键在表关系维护中的作用
  • vue定义的组件在外部引入时的问题
  • centos7 安装 zabbix6 -proxy
  • 51la统计怎么用及悟空统计的独特优势
  • C#winform画图代码记录
  • Java八股文——Spring「SpringCloud 篇」
  • 西安java面试总结1
  • 亚马逊Woot黑五策略,快速提升亚马逊业绩
  • Docker三大核心组件详解:镜像、容器、仓库的协作关系
  • 模拟IC设计提高系列5-温度角与蒙特卡洛仿真
  • 基于GA遗传优化的PID控制器最优控制参数整定matlab仿真
  • OpenLayers 加载Geoserver WMTS服务
  • 进程的信号掩码,信号集,sigprocmask函数
  • QMultiMapQHashQList使用区别
  • 中学教资考试面试回忆