Appearance Analysis

分析:

  • 让求有多少种不同的窗户,然后这个窗户是可以多次旋转的

  • 数据才 111111111,直接暴力判断即可

  • 考虑用 mapmapmap 来映射每一种窗户

    每一个窗户都是一个二维的字符串,将二维转换成一维,扔到 mapmapmap 里映射一下

  • 几个坑点:

    • 每种窗户经旋转后,总共会有四种状态,每种状态要 mapmapmap 映射

      注意:旋转之后,字符串的顺序一定要考虑清楚

    • 对答案的处理

      所有窗户跑一遍 mapmapmap 之后,单独考虑每个窗户,我们只知道该种窗户出现了多少次

      tot=cnt1+cnt2+...tot=cnt_1+cnt_2+...tot=cnt1​+cnt2​+...

      tottottot 为窗户总数,cnticnt_icnti​ 表示出现了 iii 次的窗户数量(可能不只一种窗户,也可能是两三种窗户都出现了)

      故,ans=cnt1+cnt2/2+cnt3/3+...ans=cnt_1+cnt_2/2+cnt_3/3+...ans=cnt1​+cnt2​/2+cnt3​/3+...

#include <bits/stdc++.h>
using namespace std;const int N=155;
char s[N][N];
int x[N*N],y[N*N];
map <string,int> mp;
void build(int x,int y) // 四种状态
{int ex=x,ey=y;while(s[x][ey+1] != '#') ey++;while(s[ex+1][y] != '#') ex++;string s1="";for(int i=x;i<=ex;i++){for(int j=y;j<=ey;j++){s1+=s[i][j];}}mp[s1]++; string s2="";for(int i=y;i<=ey;i++){for(int j=ex;j>=x;j--){s2+=s[j][i];}}if(s2!=s1) mp[s2]++;string s3="";for(int i=ex;i>=x;i--){for(int j=ey;j>=y;j--){s3+=s[i][j];}}if(s3!=s1 && s3!=s2) mp[s3]++;string s4="";for(int i=ey;i>=y;i--){for(int j=x;j<=ex;j++){s4+=s[j][i];}}if(s4!=s3 && s4!=s2 && s4!=s1) mp[s4]++;
}
int add(int x,int y)
{int ex=x,ey=y;while(s[x][ey+1] != '#') ey++;while(s[ex+1][y] != '#') ex++;string sr="";for(int i=x;i<=ex;i++){for(int j=y;j<=ey;j++){sr+=s[i][j];}}return mp[sr];
}
int a[N*N];
signed main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>s[i]+1;}int tot=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if((s[i][j]=='.' || s[i][j]=='+') && s[i-1][j-1]=='#' && s[i-1][j]=='#' && s[i][j-1]=='#'){x[++tot]=i; y[tot]=j; //每个窗户的左上角}}}for(int i=1;i<=tot;i++){build(x[i],y[i]);}int ans=0;for(int i=1;i<=tot;i++){int t=add(x[i],y[i]); //对每个窗户都判断一下属于哪一种a[t]++;}for(int i=1;i<N*N;i++){ans+=a[i]/i;}cout<<ans<<endl;
}

Appearance Analysis (map,字符串降维,暴力枚举,答案处理小技巧)相关推荐

  1. CountDownLatch 的使用 || enum 枚举使用的小技巧

    CountDownLatch CountryEnum.java package thread;public enum CountryEnum {ONE(1, "齐"), TWO(2 ...

  2. COW(暴力枚举) + 玄神的字符串(思维题) + Duplicate Strings(字符串思维题)

    '只要坚持就会成功--2022.1.22' 1.COW,这道题的大概意思就是求出一个字符串中一共有多少个COW,不要求连续. 思路: 暴力枚举,枚举每一个包含O,看这个O和前后的C,W结合能组成多少个 ...

  3. codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]

    A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...

  4. 如何从Java中的字符串值获取枚举值?

    说我有一个枚举 public enum Blah {A, B, C, D } 我想找到一个字符串的枚举值,例如"A"就是Blah.A 怎么可能做到这一点? Enum.valueOf ...

  5. hdu 4587 TWO NODES 暴力枚举+tarjan

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意是拿掉两个点 求最多可以把整个图分成几个联通块 注意到有一个模板是可以通过找割点来快速求出 ...

  6. 枚举----暴力枚举

    第一题 题目描述 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求. ...

  7. #644 (Div. 3)F. Spy-string(暴力枚举)

    题目描述 You are given n strings a1,a2,-,an: all of them have the same length m. The strings consist of ...

  8. 寒假集训三(暴力枚举)2020.01.02(11题)

    寒假集训三(暴力枚举)id :521 Problem:A 二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.比如给 ...

  9. 大一寒假培训(三)——暴力枚举及妙用

    大一寒假培训(三) 经过两天的培训之后,第三天也到来了.今天讲的是暴力枚举.好像没什么可讲的(悄咪咪地说) 接下来还是今天的练习 nefu 8 二倍的问题 Description 给定2到15个不同的 ...

最新文章

  1. 有赞分层自动化测试实践
  2. 使用 Recipe 安装 SAP Commerce Cloud
  3. Fiori Launchpad Tile点击后跳转的调试技巧
  4. 去贵阳参观大数据到哪参观_您必须参观的四个世界
  5. This is a Blog Test
  6. Canvas制作的下雨动画
  7. LeetCode 1275. 找出井字棋的获胜者(位运算)
  8. mock如何为空_Mockito怎么样Mock返回值为空的方法
  9. php前段时间戳转字符串,JavaScript_js获取时间并实现字符串和时间戳之间的转换,废话少说,直接上代码 复制 - phpStudy...
  10. vs2019键盘钩子_江门网站建设:针对Web开发人员的12个最佳Visual Studio代码扩展
  11. IDEA安装插件IDE Eval Reset
  12. 离线光学字符识别(OCR)技术简介
  13. 【BZOJ4134】【树上博弈】【博弈论】【线段树合并】ljw和lzr的hack比赛 题解
  14. 语言和语义(一,什么是语言)
  15. less中的变量 单位问题
  16. SQL注入基础--判断闭合形式
  17. 《面朝大海,春暖花开》-海子
  18. opengl高级光照之延迟渲染以及光体积
  19. c/c++编译器配置(交叉编译重要参数)、交叉编译动态库与as配置、mk初步
  20. Android OpenMobileAPI、OMA、智能卡开发总结

热门文章

  1. DHU 25繁殖问题
  2. 当销售离当老总还有多远(转)
  3. 文职辅警的技能测试计算机操作是考什么,辅警文职体测都考哪些内容?
  4. 关于工业物联网的10个笑话
  5. 帧、报文、报文段、分组、包、数据报的概念区别
  6. B站狂神 JavaWeb 1-6
  7. xp计算机管理员账户无法更改,XP系统administrator账户无法显示怎么办
  8. QA问答系统总体介绍
  9. RT-Thread—STM32—enc28j60
  10. 如何使用CSS和JavaScript构建简单的甘特图