模拟赛的时候看这道题没有什么头绪,当时有点晕,感冒还没有好,回来以后瞟了一眼题解就明白了,自己实现了一下,也没有很复杂。大概的思路就像拓扑排序一样,需要理解因为涂的是有顺序的,所以我们总可以找打最后涂的那些,即一行或者一列只有一种颜色,把他们记录下来,然后删除这些颜色,再继续找一行一列中只有一个颜色的,最后就是答案。

还要记得用记录数组记录每一行每一列有多少种颜色,否则直接找的话会超时。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<climits>
#include<queue>
#include<vector>
#include<set>
#include<map>
using namespace std;typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAXN=3e3+5;
int n;
char s[MAXN][MAXN];
bool visr[MAXN],visc[MAXN];
int R[MAXN][30]; int C[MAXN][30];struct node
{char cmd;char color;int num;node(char _cmd=0,int _num=0,int _color=0):cmd(_cmd),num(_num),color(_color){}
}q[MAXN<<1];
int tot;bool ok()
{for(int i=0;i<n;i++){if(!visr[i] || !visc[i])return false;}return true;
}void solve()
{tot=2*n;memset(visc,0,sizeof(visc));memset(visr,0,sizeof(visr));char color;bool flag;while(tot>0){for(int i=0;i<n;i++){if(visr[i]) continue;color=' ';flag=true;for(int k=0;k<26;k++){if(R[i][k]){if(' '==color)color=k+'a';else{flag=false;break;}}}if(flag){if(color==' ') color='a';visr[i]=true;q[tot--]=node('h',i+1,color);for(int j=0;j<n;j++){if(s[i][j]!='?'){C[j][s[i][j]-'a']--;}}}}for(int j=0;j<n;j++){if(visc[j]) continue;color=' ';flag=true;for(int k=0;k<26;k++){if(C[j][k]){if(' '==color)color=k+'a';else{flag=false;break;}}}if(flag){if(color==' ') color='a';visc[j]=true;q[tot--]=node('v',j+1,color);for(int i=0;i<n;i++){if('?'!=s[i][j]){R[i][s[i][j]-'a']--;}}}}}for(int i=1,j=2*n;i<=j;i++){printf("%c %d %c\n",q[i].cmd,q[i].num,q[i].color);}
}int main()
{//memset(R,0,sizeof(R));//memset(C,0,sizeof(C));scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s",s[i]);for(int j=0;j<n;j++){if(s[i][j]!='?'){R[i][s[i][j]-'a']++;}}}for(int j=0;j<n;j++){for(int i=0;i<n;i++){if(s[i][j]!='?'){C[j][s[i][j]-'a']++;}}}solve();return 0;
}

Gym100917 A - Abstract Picture相关推荐

  1. Codeforces Gym - 100917 部分题解

    A.Abstract Picture Gym - 100917A 分析:由于最后刷的一笔肯定使得某一行或者是某一列均为相同的颜色. 因此我们可以在一开始找到所有的行或者列,他们的颜色全都一样,把这样的 ...

  2. 2015-2016 XVI Open Cup, Grand Prix of Bashkortostan, SKB Kontur Cup Stage 2

    地址 Rank Solved A B C D E F G H I J K L M 72/213 8/13 O . O O . O . O O O . O Ø O: 当场通过 Ø: 赛后通过 .: 尚未 ...

  3. 【人工智能】谷歌工程师Blake Lemoine对话AI LaMDA——AI是否真的有了人的意识(英文原文)

    以下是出自Blake Lemoine的博客原文,没有翻译,个人认为翻译会加人一些个人主观感情进去,还是自己理解分析再结合其个人博客去查阅去体悟理解更佳! Is LaMDA Sentient? - an ...

  4. A Way to implement Abstract Class In Flex

    A Way to implement Abstract Class In Flex It's a fact that, until now(3.0) the ActionScript doesn't ...

  5. ICML 2019 Accepted Papers (Title, Author, Abstract, Code) (001-150)

    本博客致力于整理出ICML 2019接收的所有论文,包括题目.作者.摘要等重要信息,能够方便广大读者迅速找到自己领域相关的论文. 相关论文代码.附录可参考ICML 2019 #####1-10#### ...

  6. 语法树与抽象语法树(parse tree abstract syntax tree)

    1 语法树(parse tree): 是在parsing阶段,derivation的图像化表示,parser tree focus on grammar的actual implemment,包括像wh ...

  7. 设计模式(八)Abstract Factory模式

    抽象工厂的工作是将"抽象零件"组装为"抽象产品".在抽象工厂模式中将会出现抽象工厂,它会将抽象零件组装为抽象产品.也就是说,我们并不关心零件的具体实现,而是只关 ...

  8. qt-example之animated picture的学习

    今天一天就主要把这个实验敲了一遍,然后把他写成我们常写的格式吧,本来觉得挺简单的,不过自己敲了一遍之后,发现内容真的挺多的哈哈,初略估计了一下,里面包含了绘图,视图,状态机,时钟(当然这个可有可恶哈哈 ...

  9. 【线性代数】Linear Algebra Big Picture

    Abstract: 通过学习MIT 18.06课程,总结出的线性代数的知识点相互依赖关系,后续博客将会按照相应的依赖关系进行介绍.(2017-08-18 16:28:36) Keywords: Lin ...

最新文章

  1. jQuery中$(function(){})与(function($){})(jQuery)的区别
  2. CGContextSaveGState与CGContextRestoreGState的作用
  3. js中计时器setTimeout、setInterval、requestAnimationFrame区别
  4. Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)
  5. 性能测试工具curl-loader(linux)
  6. ST新一代烧写工具 STM32CubeProgrammer
  7. Codeforces - 65D - Harry Potter and the Sorting Hat - 简单搜索
  8. linux make命令_第一章 1.3Linux下安装Redis
  9. 快速解析大xml报文
  10. 论文浅尝 | 实体图的预览表格生成
  11. Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪)
  12. 兔子运送胡萝卜_我如何建立和运送第一个MVP
  13. 解决 HomeBrew 下载缓慢的问题
  14. Focus On Graphics Hardware 2007
  15. 傲梅分区助手克隆Linux硬盘,傲梅分区助手怎么复制磁盘?分区助手克隆磁盘的具体方法...
  16. 菜鸟笔记——html整理
  17. C语言—各种数据类型间的混合运算
  18. 一根网线连接两台电脑,从而实现数据的传输
  19. 如何通过压缩视频软件,减少大小且画质无损技巧
  20. IOS 开发第一个HelloWorld

热门文章

  1. 有关域索引错误产生的原因及解决办法
  2. 【转】Linux终端下 dstat 监控工具
  3. js eval()函数
  4. 表单php跳转页面跳转,form表单页面跳转方式提交练习
  5. 新风系统风速推荐表_新风系统风速标准及与噪音的关系
  6. d3 i5 神舟精盾k480n_6款神舟精盾轻薄记本发布,10nm十代酷睿,匠心打造国潮好本...
  7. qq群 html,我的群组-普通群组.html
  8. mysql dese_MySQL 5.6-类似于DENSE_RANK的功能,无需订购
  9. 三网合一是指计算机网,什么是三站合一网站?什么是三网合一网站?
  10. linux 内存取证_【取证流程】电子数据证据远程勘验