BpbBppbpBB

题目链接
题意 :
给定两种邮票来组成图形,我们把图形给你问你用了两种邮票各自多少种

思路 :
C型印章的黑格子数为146 ,S型印章的黑格子数为100

设C型、S型印章分别用了x 、y 个.因印章不重叠,则黑格子数为146 x + 100 y ,洞数为2 x + y ,联立解出x 和y 即可.

​ 此处不使用白格子数列方程是因为纸上未盖印的部分也是白格子.

考虑如何统计洞数.从上往下、从左往右扫一遍字符矩阵,遇到白格子时做一遍DFS,统计每个连通块中白格子的个数,若为12 ,检查该白格子的附近是否满足洞的特征.
原文链接:https://blog.csdn.net/Hytidel/article/details/126287064
AC代码 :

#include <iostream>
#include <map>
#include <cstring>
#include <algorithm>
#include <math.h>#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;typedef long long ll;const int N = 1e6 + 10;const int MAXN = 1005;
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};
int n, m;
string graph[MAXN];
bool vis[MAXN][MAXN];  // 记录每个格子是否已遍历过void dfs(int x, int y, int& white) {  // 统计每个连通块中白格子的个数white++;vis[x][y] = true;for (int i = 0; i < 4; i++) {int curx = x + dx[i], cury = y + dy[i];if (curx < 0 || curx >= n || cury < 0 || cury >= m || graph[curx][cury] == '#') continue;if (!vis[curx][cury]) dfs(curx, cury, white);}
}bool check(int x, int y) {  // 检查白格子所在的连通块是否是洞:(x,y)为洞的第一行第一个白格子if (y < 4) return false;if (graph[x][y + 1] == '.'  // 第一行&& graph[x + 1][y - 1] == '.' && graph[x + 1][y] == '.' && graph[x + 1][y + 1] == '.' && graph[x + 1][y + 2] == '.'  // 第二行&& graph[x + 2][y - 1] == '.' && graph[x + 2][y] == '.' && graph[x + 2][y + 1] == '.' && graph[x + 2][y + 2] == '.'  // 第三行&& graph[x + 3][y] == '.' && graph[x + 3][y + 1] == '.') return true;  // 第四行else return false;
}void solve() {cin >> n >> m;for (int i = 0; i < n; i++) cin >> graph[i];int black = 0, hole = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (graph[i][j] == '#') black++;else {  // 白格子if (!vis[i][j]) {int white = 0;dfs(i, j, white);if (white == 12) hole += check(i, j);}}}}cout << (100 * hole - black) / 54 << ' ' << hole - (100 * hole - black) / 27;
}int main() {solve();
}

BpbBppbpBB相关推荐

  1. The 19th Zhejiang Provincial Collegiate Programming Contest

    文章目录 [A.JB Loves Math](https://codeforces.com/gym/103687/problem/A) [B.JB Loves Comma](https://codef ...

  2. The 19th Zhejiang Provincial Collegiate Programming Contest 2022浙江省赛 (A/B/C/G/L/I)

    https://codeforces.com/gym/103687 题解在cf旁边的Tutorial那里 A - JB Loves Math 本来是按照数的奇偶分类讨论,一直wa2,跑了个对拍 如果错 ...

  3. The 19th Zhejiang Provincial Collegiate Programming Contest(部分题解)

    在完成三道签到之后,分别对图论.前缀&二分.大模拟上面取得突破点,但其他题集没能得到突破,仍需多加练习. A - JB热爱数学 [题意] 给定两个数 a.b.求出让a变成b的最少次数. 能修改 ...

最新文章

  1. 查询/新建/修改本地用户和组
  2. python基础系列:类
  3. 83. Remove Duplicates from Sorted List
  4. java xwork_xwork-core-2.3.4源码 - 源码下载|通讯/手机编程|J2ME|源代码 - 源码中国
  5. 2021年第十二届蓝桥杯 - 省赛 - C/C++大学A组 - D.路径
  6. php 登陆信息 传递,PHP传递POST信息
  7. 【LeetCode题解】402.移掉K位数字问题
  8. vue打开html自动加载js,vue.js怎么实现懒加载
  9. dagger2 备注
  10. 剑指offer面试题[11]-数值的正整数次方
  11. eclipse配置项目部署到到本地tomcat
  12. 如何在HTML中输入英语音标符号,电脑上如何输入国际音标?
  13. VGG16网络结构图及pytorch 代码实现
  14. 小智双核浏览器下载安装配置教程
  15. 必看!Salesforce管理员职场如何快速晋升?
  16. linux 软件安装及卸载
  17. Leetcode 2327. Number of People Aware of a Secret [Python]
  18. 11道都在这儿了!2020年高考作文试题全汇总
  19. oa java 二次开发_泛微OA ecology 二次开发实例 开发完整.doc
  20. 真机调试鸿蒙HarmonyOS应用步骤(超详细!!!)

热门文章

  1. Web Vue VI
  2. 志当存高远,而唯有努力才能抵达成功彼岸
  3. 前端面试题之计算机网络篇
  4. 推荐几个比较骚的技术公众号【文末福利】
  5. 配音赚钱的软件有哪些 ?推荐以下这3个平台
  6. R包中文文本挖掘chinese.misc的中文说明
  7. python七段数码管绘制实验报告_Python绘制七段数码管实例代码
  8. Windows触控手势
  9. 浅谈ipad阅读类应用设计
  10. POI单元格合并(合并后边框空白修复)、自动列宽、水平居中、垂直居中、设置背景颜色、设置字体等常见问题