E - Polycarp and Snakes

题意:在一个全是点的图上开始画线,每次将一行或一列任意长度染成字母,一笔染一种字母,字母必须从a开始连续到后面某个字母可以覆盖。

问所给图案是否满足 ,若满足输出它画了几个字母,然后输出这每个字母开始和截止画的横纵坐标。

思路:存图,模拟,用个x1,x2,y1,y2记录每个字母出现位置的最小最大的横纵坐标,对于每个字母如果它的x1,x2,y1,y2不是初始值的话,那么它在图上就出现过(没有被覆盖掉),那么这个字母必然满足,x1==x2||y1==y2;

#include<bits/stdc++.h>
using namespace std;
char mp[2005][2005];
int x1[30],x2[30],y1[30],y2[30];int main()
{int n,m;int it=1;scanf("%d",&it);while(it--){scanf("%d%d",&n,&m);for(int i=1; i<=n; i++)scanf("%s",mp[i]+1);for(int i=1; i<=26; i++){x1[i]=9999;y1[i]=9999;x2[i]=-9999;y2[i]=-9999;}for(int i=1; i<=n; i++)for(int j=1; j<=m; j++){if(mp[i][j]!='.'){int num=mp[i][j]-'a'+1;x1[num]=min(x1[num],i);x2[num]=max(x2[num],i);y1[num]=min(y1[num],j);y2[num]=max(y2[num],j);}}int flag=1;int live[30];int cnt=0;memset(live,0,sizeof(live));for(int i=1; i<=26; i++){if(x1[i]!=9999&&y1[i]!=9999){if(x1[i]==x2[i]){cnt=i;for(int j=y1[i]; j<=y2[i]; j++)if(mp[x1[i]][j]<('a'+i-1)){flag=0;break;}live[i]=1;}else if(y1[i]==y2[i]){cnt=i;for(int j=x1[i]; j<=x2[i]; j++){if(mp[j][y1[i]]<('a'+i-1)){flag=0;break;}}live[i]=1;}else{flag=0;break;}}}
//    for(int i=1; i<=5; i++)
//        printf("%d %d %d %d\n",x1[i],x2[i],y1[i],y2[i]);if(flag==0)printf("NO\n");else{printf("YES\n%d\n",cnt);for(int i=1; i<=cnt; i++){if(live[i]==0){
//                    printf("???");for(int j=i+1; j<=26; j++){if(live[j]==1){printf("%d %d %d %d\n",x1[j],y1[j],x2[j],y2[j]);break;}}}elseprintf("%d %d %d %d\n",x1[i],y1[i],x2[i],y2[i]);}}}
}

转载于:https://www.cnblogs.com/dongdong25800/p/11083083.html

E - Polycarp and Snakes相关推荐

  1. E. Polycarp and Snakes

    After a hard-working week Polycarp prefers to have fun. Polycarp's favorite entertainment is drawing ...

  2. E - Polycarp and Snakes(模拟)

    E - Polycarp and Snakes 题意: 画蛇,蛇宽只能为1,长可若干,字母大是蛇可以把字母小的蛇覆盖 从最多a画到z 给一个图,问能否被蛇填充完 解析: 模拟 字母小的不一定在图上出现 ...

  3. Codeforces 1005D Polycarp and Div 3

    Codeforces 1005D Polycarp and Div 3 dp[i]表示前i个数最多能分成多少块%3为0,nxt[x]表示x这个上一次出现的位置. 首先想到 $ dp[i] = max( ...

  4. 【 CodeForces - 864B】Polycarp and Letters(水题,字符串,有坑)

    题干: Polycarp loves lowercase letters and dislikes uppercase ones. Once he got a string sconsisting o ...

  5. CodeForces 858C Did you mean... 、 CodeForces 858D Polycarp's phone book!黑科技

    C. Did you mean... 题意:将一个字符串最少分成几个小的字符串,使得每个字符串都没有连续三个及以上的辅音字母,连续三个相同的辅音字母不算. 贪心构造即可,注意连续三个相同的辅音的时候将 ...

  6. 基于Matlab的3-D胸部扫描CT切片的肺部分割——使用活动轮廓(snakes)进行三维分割及建模

    目录: 一.准备数据 二.肺部分割 三.创建种子MASK掩膜并使用活动轮廓(snakes)分割肺部 四.计算分割肺的体积 例程完整源码: 参考链接 本例程配套完整源码和数据下载 此示例显示了如何使用活 ...

  7. 锻炼左右脑协调的摸鱼必备游戏——《Double Snakes》完整C语言代码!

    锻炼左右脑协调的摸鱼必备游戏--<Double Snakes>完整C语言代码! 目录 锻炼左右脑协调的摸鱼必备游戏--<Double Snakes>完整C语言代码! (一)运行 ...

  8. LeetCode——909. 蛇梯棋(Snakes and Ladders)[中等]——分析及代码(Java)

    LeetCode--909. 蛇梯棋[Snakes and Ladders][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 广度优先搜索 (1)思路 (2)代码 (3)结果 三.其 ...

  9. [USACO19OPEN]Snakes

    题面: 传说,数千年前圣帕特里克消灭了哞尔兰所有的蛇.然而,蛇们现在卷土重来了!圣帕特里克节是在每年的3月17日,所以Bessie要用彻底清除哞尔兰所有的蛇来纪念圣帕特里克. Bessie装备了一个捕 ...

最新文章

  1. 工作报告总是写不好?表达不准确?试试这个写作方法
  2. 解决 WordPress“正在执行例行维护,请一分钟后回来”
  3. Vulnhub靶机渗透之 RAVEN: 1
  4. 新手小白零基础搭建个人博客(二)Hexo搭建
  5. 查看mysql语句运行时间
  6. java换成中文_如果我们的编程替换成中文会变成怎样?
  7. python实现isodd函数、参数为整数、如果整数为奇数_python 程序练习题
  8. 测试通用串行总线控制器好坏软件,通用串行总线控制器出现叹号是什么情况?怎么解决?...
  9. 理论题 —— Windows 7基础知识
  10. JavaScript我学之七数组
  11. 五分钟搭建一个MarkDown文档解析器
  12. EC-JET喷码机报EC2.01偏转板电压故障
  13. vue如何集成阿里云视频服务组件(aliplayer)视频功能是使用el-dialog 弹出aliplayer播放
  14. Android 中的 ClassLoader 摘抄笔记
  15. 大数据压缩处理:数据分卷压缩和分卷压缩解压
  16. php使用halt中断输出
  17. POJ 1635 Subway tree systems 树的Hash 或 树的最小表示法
  18. 工作仅一年就被迫跳槽的感想
  19. [noip2016]天天爱跑步(主席树+lca)
  20. 安装VMware Workstation

热门文章

  1. css sprite/css精灵
  2. 美军人工智能作战计划曝光,100亿美元战争云计算系统公开招标
  3. 抖音带货小店随心推到底怎么测品更容易出单?
  4. Xilinx FGPA Pinout文件查找
  5. MAC电脑gitt@github.com: Permission denied (publickey). fatal: Could not read from remote repository
  6. 高效记忆/形象记忆(03)故事奇象法
  7. 【数学建模】预测模型笔记之灰色预测
  8. pat basic 1104 天长地久
  9. 涛思数据TDengine征稿— ❤️TDEngine 的特点及应用场景❤️
  10. 抖音运营必看的7种玩法和9个类目定位