Gym100917 A - Abstract Picture
模拟赛的时候看这道题没有什么头绪,当时有点晕,感冒还没有好,回来以后瞟了一眼题解就明白了,自己实现了一下,也没有很复杂。大概的思路就像拓扑排序一样,需要理解因为涂的是有顺序的,所以我们总可以找打最后涂的那些,即一行或者一列只有一种颜色,把他们记录下来,然后删除这些颜色,再继续找一行一列中只有一个颜色的,最后就是答案。
还要记得用记录数组记录每一行每一列有多少种颜色,否则直接找的话会超时。
#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相关推荐
- Codeforces Gym - 100917 部分题解
A.Abstract Picture Gym - 100917A 分析:由于最后刷的一笔肯定使得某一行或者是某一列均为相同的颜色. 因此我们可以在一开始找到所有的行或者列,他们的颜色全都一样,把这样的 ...
- 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: 当场通过 Ø: 赛后通过 .: 尚未 ...
- 【人工智能】谷歌工程师Blake Lemoine对话AI LaMDA——AI是否真的有了人的意识(英文原文)
以下是出自Blake Lemoine的博客原文,没有翻译,个人认为翻译会加人一些个人主观感情进去,还是自己理解分析再结合其个人博客去查阅去体悟理解更佳! Is LaMDA Sentient? - an ...
- 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 ...
- ICML 2019 Accepted Papers (Title, Author, Abstract, Code) (001-150)
本博客致力于整理出ICML 2019接收的所有论文,包括题目.作者.摘要等重要信息,能够方便广大读者迅速找到自己领域相关的论文. 相关论文代码.附录可参考ICML 2019 #####1-10#### ...
- 语法树与抽象语法树(parse tree abstract syntax tree)
1 语法树(parse tree): 是在parsing阶段,derivation的图像化表示,parser tree focus on grammar的actual implemment,包括像wh ...
- 设计模式(八)Abstract Factory模式
抽象工厂的工作是将"抽象零件"组装为"抽象产品".在抽象工厂模式中将会出现抽象工厂,它会将抽象零件组装为抽象产品.也就是说,我们并不关心零件的具体实现,而是只关 ...
- qt-example之animated picture的学习
今天一天就主要把这个实验敲了一遍,然后把他写成我们常写的格式吧,本来觉得挺简单的,不过自己敲了一遍之后,发现内容真的挺多的哈哈,初略估计了一下,里面包含了绘图,视图,状态机,时钟(当然这个可有可恶哈哈 ...
- 【线性代数】Linear Algebra Big Picture
Abstract: 通过学习MIT 18.06课程,总结出的线性代数的知识点相互依赖关系,后续博客将会按照相应的依赖关系进行介绍.(2017-08-18 16:28:36) Keywords: Lin ...
最新文章
- jQuery中$(function(){})与(function($){})(jQuery)的区别
- CGContextSaveGState与CGContextRestoreGState的作用
- js中计时器setTimeout、setInterval、requestAnimationFrame区别
- Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)
- 性能测试工具curl-loader(linux)
- ST新一代烧写工具 STM32CubeProgrammer
- Codeforces - 65D - Harry Potter and the Sorting Hat - 简单搜索
- linux make命令_第一章 1.3Linux下安装Redis
- 快速解析大xml报文
- 论文浅尝 | 实体图的预览表格生成
- Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪)
- 兔子运送胡萝卜_我如何建立和运送第一个MVP
- 解决 HomeBrew 下载缓慢的问题
- Focus On Graphics Hardware 2007
- 傲梅分区助手克隆Linux硬盘,傲梅分区助手怎么复制磁盘?分区助手克隆磁盘的具体方法...
- 菜鸟笔记——html整理
- C语言—各种数据类型间的混合运算
- 一根网线连接两台电脑,从而实现数据的传输
- 如何通过压缩视频软件,减少大小且画质无损技巧
- IOS 开发第一个HelloWorld
热门文章
- 有关域索引错误产生的原因及解决办法
- 【转】Linux终端下 dstat 监控工具
- js eval()函数
- 表单php跳转页面跳转,form表单页面跳转方式提交练习
- 新风系统风速推荐表_新风系统风速标准及与噪音的关系
- d3 i5 神舟精盾k480n_6款神舟精盾轻薄记本发布,10nm十代酷睿,匠心打造国潮好本...
- qq群 html,我的群组-普通群组.html
- mysql dese_MySQL 5.6-类似于DENSE_RANK的功能,无需订购
- 三网合一是指计算机网,什么是三站合一网站?什么是三网合一网站?
- linux 内存取证_【取证流程】电子数据证据远程勘验