2014 Super Training #4 D Paint the Grid Again --模拟
原题:ZOJ 3780 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780
刚开始看到还以为是搜索题,没思路就跳过了。结果后来发现就是一个简单的模拟啊,因为每行每列都只能消去一次,直接慢慢消去就好了,因为按字典序从小到大,那就按行从大到小,列从大到小的顺序来消就可以了,消完了标记一下,把那行或者那列的元素都赋为一个特殊的字符'*'即可。
还是应该多思考啊,不要被题目吓到了。探寻题目的本质才能更好的解题。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <map>
using namespace std;
#define N 14 pair<char,int> ans[];
char ss[][];
int Rvis[],Cvis[]; int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=;i<n;i++)
scanf("%s",ss[i]);
memset(Rvis,,sizeof(Rvis));
memset(Cvis,,sizeof(Cvis));
int flag = ;
int o,x,h;
int k = ;
while(!flag)
{
flag = ;
//行X
for(i=n-;i>=;i--)
{
if(Rvis[i])
continue;
o = x = h = ;
for(j=;j<n;j++)
{
if(ss[i][j] == 'X')
x++;
else if(ss[i][j] == 'O')
break;
else
h++;
}
if(j == n && h != n) //没有出现O且不全为'*'
{
Rvis[i] = ;
ans[k].first = 'R';
ans[k++].second = i+;
for(j=;j<n;j++)
ss[i][j] = '*';
flag = ;
break;
}
else if(h == n)
Rvis[i] = ;
}
if(!flag)
continue;
//列O
for(j=n-;j>=;j--)
{
if(Cvis[j])
continue;
o = x = h = ;
for(i=;i<n;i++)
{
if(ss[i][j] == 'X')
break;
else if(ss[i][j] == 'O')
o++;
else
h++;
}
if(i == n && h != n) //没有出现X且不全为'*'
{
Cvis[j] = ;
ans[k].first = 'C';
ans[k++].second = j+;
for(i=;i<n;i++)
ss[i][j] = '*';
flag = ;
break;
}
else if(h == n)
Cvis[j] = ;
}
}
int tag = ;
for(i=;i<n;i++)
for(j=;j<n;j++)
if(ss[i][j] != '*')
{
tag = ;
break;
}
if(!tag)
puts("No solution");
else
{
printf("%c%d",ans[k-].first,ans[k-].second);
for(i=k-;i>=;i--)
printf(" %c%d",ans[i].first,ans[i].second);
printf("\n");
}
}
return ;
}
2014 Super Training #4 D Paint the Grid Again --模拟的更多相关文章
- 2014 Super Training #4 E Paint the Grid Reloaded --联通块缩点+BFS
原题: ZOJ 3781 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3781 题意: 给一个n*m的X,O构成的格子,对 ...
- ZOJ 3780 - Paint the Grid Again - [模拟][第11届浙江省赛E题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780 Time Limit: 2 Seconds Me ...
- 2014 Super Training #8 B Consecutive Blocks --排序+贪心
当时不知道怎么下手,后来一看原来就是排个序然后乱搞就行了. 解法不想写了,可见:http://blog.csdn.net/u013368721/article/details/28071241 其实就 ...
- 2014 Super Training #8 A Gears --并查集
题意: 有N个齿轮,三种操作1.操作L x y:把齿轮x,y链接,若x,y已经属于某个齿轮组中,则这两组也会合并.2.操作Q x y:询问x,y旋转方向是否相同(等价于齿轮x,y的相对距离的奇偶性). ...
- 2014 Super Training #9 E Destroy --树的直径+树形DP
原题: ZOJ 3684 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3684 题意: 给你一棵树,树的根是树的中心(到其 ...
- 2014 Super Training #9 C E - Cup 2 --记忆化搜索
原题:ZOJ 3681 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3681 题意:给一个m,n,m表示m个人,可以把m个 ...
- 2014 Super Training #6 H Edward's Cola Plan --排序+二分
原题: ZOJ 3676 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3676 题意:给每个朋友一瓶可乐,可乐有普通和高 ...
- 2014 Super Training #7 F Power of Fibonacci --数学+逆元+快速幂
原题:ZOJ 3774 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3774 --------------------- ...
- 2014 Super Training #7 C Diablo III --背包问题(DP)
原题: ZOJ 3769 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3769 一个带有一些限制的背包问题. 假设在没有限 ...
随机推荐
- (旧)子数涵数·PS——文字人物
首先我们来看一下我用到的素材(在百度图库里下载的). 一.打开PS,在PS中打开素材. 二.复制一个图层(好习惯不解释). 三.图像->调整->阈值,或者按下图示按钮后选择阈值,弹出阈值窗 ...
- [mysql] timestamp自动更新和初始化
1.概述 在我们设计表的时候,考虑将行数据的创建时间和最后更新时间记录下来是很好的实践.尤其是可能需要做数据同步或者对数据新鲜度有要求的表.举些应用场景,更新距上次更新超过2小时的行数据,或者是将一个 ...
- [原创]html5游戏_五线谱打音符
html5手机游戏—五线谱打音符 1.[用五线谱打唱名] 2.[用唱名打五线谱] 3.[无限练习模式] 用来熟悉五线谱上音符的位置 代码不难,这回注释还是有认真写的[只是废代码没有全部删除...] 效 ...
- <SharePoint 2013 用户界面设计与品牌化>学习系列之---基础
什么是SharePoint界面与品牌化设计 这一章主要介绍了: 为什么要品牌化SharePoint 介绍一些内部和互联网的SharePoint网站 简单 中等 复杂的三种品牌化方式 简单难度: 普通用 ...
- ArcGis在Oracle中常用的sql
) m 查询坐标数据 更新坐标: update tableName set SHAPE = mdsys.sdo_geometry(2002,28420,null,mdsys.sdo_elem_info ...
- 配置SharePoint使用ADFS
1. 如果网站应用程序没有使用声明式验证 $wpp = Get-SPWebApplication <URL> $wpp.UseClaimsAuthentication = 1 $wpp.U ...
- git学习笔记1
很早以前就听说了git,今天就开始使用git,并做简单记录 在Linux上安装Git 首先,你可以试着输入git,看看系统有没有安装Git: $ git The program 'git' is cu ...
- PL/SQL基础2(笔记)
1 第一个PL/SQL的程序 DECLARE BEGIN DBMS_OUTPUT.PUT_LINE('Hello World!'); END; / --2一个简单的PL/SQL程序 DECLARE v ...
- 【原】iOSCoreAnimation动画系列教程(一):CABasicAnimation【包会】
本文的最新版本已经发布在简书[编程小翁]上,强烈建议到上查看简书,[点击这里跳转]. 在iOS中,图形可分为以下几个层次: 越上层,封装程度越高,动画实现越简洁越简单,但是自由度越低:反之亦然.本文着 ...
- 如何获取QQ里的截图app?
电脑系统平台:OS X EI Capitan 10.11 在以前的旧的QQ版本,QQ的截图的偏好还有一个开机自启动的选项: 现在新的版本,却没有了"开机自动运行"的选项,然而有时候 ...