Gym 101047M Removing coins in Kem Kadrãn

Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u

Description

standard input/output

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

Input
4
3
BDB
5
DBDDB
5
DDBDD
6
DBBBBB
Output
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 - 暴力的更多相关文章

  1. Gym 101047M Removing coins in Kem Kadrãn

    给定一个序列,只能拿走D,隔壁的会翻转,问能否全部拿走. 注意到如果能拿走的话,拿D的顺序是没关系的.模拟即可 #include <cstdio> #include <cstdlib ...

  2. ACM: Gym 100935F A Poet Computer - 字典树

    Gym 100935F A Poet Computer Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d &am ...

  3. ACM: Gym 101047K Training with Phuket's larvae - 思维题

     Gym 101047K Training with Phuket's larvae Time Limit:2000MS     Memory Limit:65536KB     64bit IO F ...

  4. ACM: Gym 101047E Escape from Ayutthaya - BFS

    Gym 101047E Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  5. ACM: Gym 101047B Renzo and the palindromic decoration - 手速题

     Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64 ...

  6. ACM: Gym 100935B Weird Cryptography - 简单的字符串处理

    Weird Cryptography Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  7. ACM: Gym 100935G Board Game - DFS暴力搜索

    Board Game Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u  Gym 100 ...

  8. Gym 101606F - Flipping Coins - [概率DP]

    题目链接:https://codeforc.es/gym/101606/problem/F 题解: 假设 $f[i][j]$ 表示抛 $i$ 次硬币,有 $j$ 个硬币正面朝上的概率. 所以只有两种挑 ...

  9. 杭电ACM hdu 1398 Square Coins

    Problem Description People in Silverland use square coins. Not only they have square shapes but also ...

随机推荐

  1. 使用node初始化项目

    初始化项目 在建项目的时候经常会建很多文件夹和文件,今天使用node初始化项目自动生成这些内容. 执行步骤 执行命令 node init 初始化项目生成package.json 设置配置文件 var ...

  2. 再说表单验证,在Web Api中使用ModelState进行接口参数验证

    写在前面 上篇文章中说到了表单验证的问题,然后尝试了一下用扩展方法实现链式编程,评论区大家讨论的非常激烈也推荐了一些很强大的验证插件.其中一位园友提到了说可以使用MVC的ModelState,因为之前 ...

  3. js储存参数的数组arguments

    js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这个数组中.于是我们的js版支持参数默认值的函数可以通过另外一种变通的方法实现 function simue ( ...

  4. Windows 10(64位)配置Caffe运行环境的基本流程

    最新博客地址已搬家到: http://blog.csdn.net/zzlyw/article/details/53215148

  5. 【河北省队互测】 gcd BZOJ 2818

    Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sa ...

  6. Kali 开机报错解决方案

    问题一: piix4_smbus ::007.3: Host SMBus controller not enabled 解决:打开 /etc/modprobe.d/blacklist.conf 末尾加 ...

  7. 整理文件,翻出了以前作的ps稿 (^o^)c旦``

    稍稍会那么一点PS,小意思   

  8. FFmpeg介绍

    ---恢复内容开始--- FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常 ...

  9. Docker Container 配置独立IP

    1.宿主机安装网桥工具包 要是Linux可以工作在网桥模式,必须安装网桥工具bridge-utils,运行命令: yum install bridge-utils

  10. 利用反射实现通用的excel导入导出

    如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...