ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
Andréh and his friend Andréas are board-game aficionados. They know many of their friends would love to go on a trip to Phuket, Thailand, and so they want to challenge them at Kem Kradãn, a traditional Thai board game.
Kem Kradãn (เกมกระดาน) has been played since the 2nd century AD. The game is played with N pieces where each piece has two faces, one of which is golden and the other is white. The game starts with all pieces arranged in a line on the board and they are numbered from 1 to N from left to right. When a piece numbered i has its golden face up, it can be removed from the board. When this is done, the pieces numbered i - 1 and i + 1 are flipped, if they're still there. The goal is to remove all game pieces.
Before challenging their friends, Andréh and Andréas want to make sure their initial configurations have a solution. To help them, given an initial configuration, you must determine if it is possible to remove all game pieces and, if so, you must show how to do it.
Input
The first line has a single integer T, the number of test cases.
Each test case is formed by a line containing an integer N, the number of pieces, followed by line containing a string of length Ncontaining only the letters B (white face up) and D (golden face up), representing the initial state of the game.
Limits
- 1 ≤ T ≤ 100
- 1 ≤ N ≤ 105
- The sum of N over all test cases will not exceed 5·105
Output
For each test case, print a line containing Y if it is possible to remove every piece from the board, or N otherwise. In case it is possible to remove all the pieces, you should also print on the next line a sequence of N integers each representing a piece number, indicating the order in which the pieces must be removed. If there is more than one possible sequence, you can print any of them.
Sample Input
4
3
BDB
5
DBDDB
5
DDBDD
6
DBBBBB
Y
2 3 1
Y
4 5 1 2 3
N
Y
1 2 3 4 5 6
/*/
题意:
在一段字符里面有两种字符D和B,字符串中D可以直接拿掉,但是D两边的都要进行反转,B->D , D->B ,问能不能把所有的字符全部拿掉。 如果可以输出Y并且打印拿的过程。 如果不能就输出N。
暴力扫描,如果找到一个D那么从D开始往前面去拿掉字符串,如果前面的不能被拿掉,那么肯定这个字符串是不能被拿掉的。
举个栗子:
AC代码:
/*/
#include"algorithm"
#include"iostream"
#include"cstring"
#include"cstdio"
using namespace std; int main() {
int T,n;
int ans[111111],light[111111];
char s[111111];
cin>>T;
while(T--) {
memset(s,0,sizeof(s));
memset(ans,0,sizeof(ans));
memset(light,0,sizeof(light));
cin>>n;
scanf("%s",s+1);
for(int i=1; i<=n; i++) {
if(s[i]=='B')light[i]=2;
else light[i]=1;
}
int j;
int erear=0;
for(int i=1; i<=n; i++) {
j=i;
while(light[j]==1) {
if(j<=0)break;
if(j> n)break;
light[j]=0;
ans[erear++]=j;
if(light[j-1]==2)light[j-1]=1;
else if(light[j-1]==1)light[j-1]=2;
if(light[j+1]==2)light[j+1]=1;
else if(light[j+1]==1)light[j+1]=2;
j--;
}
}
int t=1;
if(erear==n) {
puts("Y");
for(int i=0; i<erear; i++) {
if(t)t=0;
else printf(" ");
printf("%d",ans[i]);
}
puts("");
} else puts("N");
}
return 0;
}
ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力的更多相关文章
- Gym 101047M Removing coins in Kem Kadrãn
给定一个序列,只能拿走D,隔壁的会翻转,问能否全部拿走. 注意到如果能拿走的话,拿D的顺序是没关系的.模拟即可 #include <cstdio> #include <cstdlib ...
- ACM: Gym 100935F A Poet Computer - 字典树
Gym 100935F A Poet Computer Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d &am ...
- ACM: Gym 101047K Training with Phuket's larvae - 思维题
Gym 101047K Training with Phuket's larvae Time Limit:2000MS Memory Limit:65536KB 64bit IO F ...
- ACM: Gym 101047E Escape from Ayutthaya - BFS
Gym 101047E Escape from Ayutthaya Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I6 ...
- ACM: Gym 101047B Renzo and the palindromic decoration - 手速题
Gym 101047B Renzo and the palindromic decoration Time Limit:2000MS Memory Limit:65536KB 64 ...
- ACM: Gym 100935B Weird Cryptography - 简单的字符串处理
Weird Cryptography Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...
- ACM: Gym 100935G Board Game - DFS暴力搜索
Board Game Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Gym 100 ...
- Gym 101606F - Flipping Coins - [概率DP]
题目链接:https://codeforc.es/gym/101606/problem/F 题解: 假设 $f[i][j]$ 表示抛 $i$ 次硬币,有 $j$ 个硬币正面朝上的概率. 所以只有两种挑 ...
- 杭电ACM hdu 1398 Square Coins
Problem Description People in Silverland use square coins. Not only they have square shapes but also ...
随机推荐
- 菜鸟笔记:java编程基础一
Java中的关键字 Java 语言中有一些具有特殊用途的词被称为关键字.关键字对 Java 的编译器有着特殊的意义,在程序中应用时一定要慎重哦!! Java 中常用关键字: 问:这么多,记不住啊... ...
- 上个项目的一些反思 III
离线缓存 之前的项目因为实时性要求比较高,所以一打开客户端,就开始做网络请求.现在想想,是没有做内容的离线缓存.这个问题,我没意识到.产品经理也没有意识到... 我觉得Archiver,来做比较合适, ...
- 使用wget命令时发生错误
用的是centos6.5, 当我使用命今 sudo wget https://cmake.org/files/v3.6/cmake-3.6.1.tar.gz 下载个cmake的包时, 发生了这样的错误 ...
- (三)Netty源码学习笔记之boss线程处理流程
尊重原创,转载注明出处,原文地址:http://www.cnblogs.com/cishengchongyan/p/6160194.html 本文我们将先从NioEventLoop开始来学习服务端的 ...
- mysql workbench连接不上远程数据库,xshell无法连接远程主机的问题
1.先说xshell无法连接的问题 最近使用virtualbox装了个ubuntu-16.04,然后在win7上使用xshell连接,首先确认win7能ping通虚拟机ip.然后确认是否安装了open ...
- Ubuntu 16.04 安装ftp服务器
1.sudo apt-get update 2.sudo apt-get install vsftpd ,执行完该步骤,vsftpd服务已经安装 3.创建ftp用户 a,创建用户目录 sudo mkd ...
- Delphi中DBChart的数据库应用
一:属性相关:Series选项: (1)Format页(数据柱的风格) 在Color Each中打勾,就可使用多种颜色显示,color按钮用于设置颜色,Style用于设置图表的风格(Rectangle ...
- TFS API : 四、工作项查询
TFS API : 四.工作项查询 本节将讲述如何查询工作项,将用户统计数据. 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似: Select [标题] f ...
- Python帮助文档中Iteration iterator iterable 的理解
iteration这个单词,是循环,迭代的意思.也就是说,一次又一次地重复做某件事,叫做iteration.所以很多语言里面,循环的循环变量叫i,就是因为这个iteration. iteration指 ...
- SPFA
SPFA算法用来求单源最短路.可以处理任何有解的情况. 先建一个数组\(dist_x = 起点到x的最短路长度\),当\(x=起点\)时为0,当x和起点不通时为INF(本题中为\(2^31-1\)). ...
