[BNUZOJ1261][ACM][2016北理校赛]方块消除(栈,字符串)

玩过方块消除游戏吗?
现在规定当有两个或两个以上相邻且颜色相同的方块在一起的时候,它们就会产生消除反应。当存在多个消除反应同时产生时,最下的反应先执行。
现在只给你其中一列,求最后剩下的方块结果。


输入要求

第一行是一个整数T(T<=100),表示有T组测试数据。
每组测试数据一行。
每行有一串数字(数字长度<=1,000,000),按从下往上给出一列方块的颜色(颜色用0-9表示,每个数字代表一种颜色)。
(数字长度大于100,000的不超过5组)

输出要求

输出消除后的结果。

测试数据示例

输入

2
1800081
180008945541
 

输出

(空行)

没什么特别的.水题了,主要是利用栈的思想,字符串搞搞就行了(这里我用Java的StringBUffer)

Code:

package bnuzoj1261;

import java.util.Scanner;

public class Main {

    public static void run( String str ) {

        StringBuffer sb = new StringBuffer();
        char[] chs = str.toCharArray();
        sb.append( chs[ 0 ] );
        for( int i = 1; i < str.length(); ) {
            if(sb.length() < 1){
                sb.append( chs[i] );
                i++;
            }
            else if( chs[ i ] != sb.charAt( sb.length()-1 ) ) {
                sb.append( chs[i] );
                i++;
            } else {
                if( chs[i] == sb.charAt( sb.length()-1 )){
                    do{
                        i++;
                    }while(i<chs.length && chs[i] ==sb.charAt( sb.length()-1 ));
                 sb.delete(sb.length()-1,sb.length());
                }
            }
        }
        System.out.println( sb.toString() );
    }

    public static void main( String[] args ) {
        Scanner sc = new Scanner( System.in );
        int T = sc.nextInt();

        while( T-- > 0 ) {
            String str = sc.next();
            run( str );
        }
    }

}

Ps:注意消除是左边优先.

时间: 2024-10-24 20:03:05

[BNUZOJ1261][ACM][2016北理校赛]方块消除(栈,字符串)的相关文章

北邮校赛 F. Gabriel&#39;s Pocket Money(树状数组)

F. Gabriel's Pocket Money 2017- BUPT Collegiate Programming Contest - sync 时间限制 2000 ms 内存限制 65536 KB 题目描述 For centuries, Heaven has required its young angels to live and study among humans in order to become full-fledged angels. This is no different

2016移动开发校赛之Android实践

学校组织的<移动互联网应用软件开发>技能竞赛,所有参赛命题均基于 Android 4.2 版本实现,比赛推荐使用的开发环境为:ADT, JDK 1.6, Android SDK 4.1  经过了四天的培训我们小组选择在计算器应用 计算器能够实现: 1. 数学四则运算 2. 实现开方元算  3. 实现求倒数运算  4. 实现百分比运算  5. 实现删除一位数字的功能  6. 实现删除所有数据的功能  7. 实现临时存储数据的功能 目前我可以完成全部功能,虽然是扩展老师的基础程序,但还是很有成就感

【题解】2016.5.8SWJTU校赛题解

这套题目总体而言,中等题偏多,而简单题和难题较少.一些题目需要组合运用多种算法和数据结构,而代码复杂度并不高,主要目的使是选手在整个比赛过程中不至于进入"垃圾时间",能感受到思考并解决题目的乐趣--但好像大家都跳进坑里面了. A:Tickets 寻找最少花费及购买方式,若有多种则输出最前一种,直接处理即可,注意数据较大,用cin,cout可能会超时,这点在宣讲会上已经提过了. B:Wave string 定义了波浪串,要求寻找从某位开始的波浪长度为L的波浪串个数,用manacher求出

长理 校赛的 一个贪心题

cls与lzp的热身赛 发布时间: 2017年12月11日 13:58   最后更新: 2017年12月11日 14:46   时间限制: 1000ms   内存限制: 128M 描述 众所周知,长春理工大学的"嗨呀好气啊"队伍由两个菜鸡lzp和cls以及某X姓巨巨组成,热身赛打的太好可能导致电脑里的PC^2被删掉,所以热身赛一般都是由lzp和cls两个菜鸡代表队伍参加比赛,热身赛由n道题组成,他们队内分工明确,lzp想出思路,然后cls去写,第i个题目lzp思考出来的是第ai分钟,c

Nowcoder 北师校赛 B 外挂使用拒绝 ( k次前缀和、矩阵快速幂打表找规律、组合数 )

题目链接 题意 : 中文题.点链接 分析 : 有道题是问你不断求前缀和后的结果 Click here 这道题问的是逆过程 分析方法雷同.可参考 Click here -------------------------------------------------------------------------------- 正着做的矩阵是一个下三角 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 结合杨辉三角可得 C(k, 0) C(k+1, 1)      C(k, 0) C

2016 年宁波工程学院第七届ACM校赛题解报告

2016 年宁波工程学院第七届ACM校赛题解报告 本题解代码直接为比赛代码,仅供参考. A,B,C,D,G,H,J,K,L,M 来自 Ticsmtc 同学. F 来自 Gealo 同学. E,I 来自Alex 学长. Promblem A :    Two Sum 时间限制: 1 Sec  内存限制: 64 MB 题目描述: 给出n个数,另外给出?个整数S,判断是否可以从中取出2个数,使得这两个数的和是S. 输入: 第?行有个整数T(1 <= T <= 10),代表数据组数. 对于每组数据,第

2016 华科校赛 B. And

// 2016 华科校赛 B. And http://acm.hust.edu.cn/problem/show/1672 题目描述 给出 a[1], ..., a[n].查询 t[1], ... t[m],问有多少 a[] 的子序列的按位与是 t[]. 输入 多组测试,EOF 结束. n a[] m t[] 1 ≤ n ≤ 1e6 1 ≤ m ≤ (1 << 20) 1 ≤ a[i] ≤ (1 << 20) 1 ≤ t[i] ≤ (1 << 20) 输出 输出一行,每组

2014哈商大ICPC/ACM校赛解题报告

被debug邀请去參加校赛,哎,被虐..我对不起工大.. 由于本人不搞ACM,算法处于HelloWorld水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数据:点此下载 ============================================================== a:逆序数组+删除特定元素 题目: 小伙伴们好像非常多没接触过ICPC,那先来一道水题尝尝鲜,给出 一个数组,和一个特征值.将这个数组中特征值值删除后逆序输出.

第九届西电ACM校赛解答

Description 欢迎参加西电第九届ACM校内赛!作为一名经历了四届校赛的ACM老队员以及本次校赛的出题人,每次校赛都让我有一种全新的感受--有第一次参加校赛时提交代码时紧张到双手发抖,也有当裁判时看到有些不明真相的人提交编译后程序时的欢乐.不管你是第几次参赛,好好享受这一刻带给你的各种感受,经历就是一种财富.为了让大家更好地记住这悲喜交加的日子,特意准备了这么一道题: 给你一个日期,你只要输出这个日期是在校赛前还是校赛后,或者刚好就是校赛那一天(2011年5月22号). 题目是什么意思呢