Yin and Yang Stones(思路题)

Problem Description:

A mysterious circular arrangement of black stones and white stones has appeared. Ming has been tasked with balancing the stones so that only one black and one white stone remain.

Ming has two operations for balancing the stones:

  1. Take some consecutive sequence of stones where there is exactly one more black stone than a white stone and replace the stones with a single black stone
  1. Take some consecutive sequence of stones where there is exactly one more white stone than black stone and replace the stones with a single white stone

Given a circular arrangement, determine if it is possible for Ming to balance the stones.

Input

Each input will consist of a single test case. Note that your program may be run multiple times on different inputs. The input will consist of a single string ss (1 \le |s| \le 10^5)(1≤∣s∣≤105), with only the characters capital ‘BB’ and ‘WW’. The stones are arranged in a circle, so the first stone and the last stone are adjacent.

Output

Output 11 if it is possible for Ming to balance the stones with his rules. Otherwise, output 00.

题意:有一堆阴阳石,如果连续的一段石头的序列中,白色石头的个数要比黑色的石头的个数多一,就可以用白色的石头代替这段石头序列。反过来对黑色的石头也是一样的。问给出的这段序列石头能不能替换完后只剩下一个白石头和一个黑石头。

思路:读完题后wxy一分钟出思路,我敲完后提交A掉,这恐怖的思维速度,,,赛后有看了看这题目:假设我们用黑色的石头来代替这段序列,我们拿走这段序列的时候黑色的要比白色的多拿一个,然后再放上一个黑色的,这样黑色和白色的石头减少的个数就都是一样多的了。所以要想最后只剩下一个黑色一个白色,就只有开始两种的颜色石头的个数是一样的才可以。

代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 1e5;
 4 typedef long long ll;
 5 int main()
 6 {
 7     string str;
 8     cin>>str;
 9     int w=  0,b = 0;
10     for(int i = 0; i<str.size(); i++)
11     {
12         if(str[i]==‘W‘)w++;
13         else if(str[i]==‘B‘) b++;
14     }
15     if(w == b)cout<<1<<endl;
16     else
17         cout<<0<<endl;
18     return 0;
19 }
20 /*
21 样例输入:
22 WWBWBB
23 WWWWBBW
24 WBBBBBWWBW
25 样例输出:
26 1
27 0
28 0
29 */

原文地址:https://www.cnblogs.com/sykline/p/9742776.html

时间: 2024-11-08 20:41:53

Yin and Yang Stones(思路题)的相关文章

51nod P1305 Pairwise Sum and Divide ——思路题

久しぶり! 发现的一道有意思的题,想了半天都没有找到规律,结果竟然是思路题..(在大佬题解的帮助下) 原题戳>>https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1305<< 有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整: fun(A) sum = 0 for i = 1 to A.length for j = i+1 to A.length sum = sum + Floor(

[思路题] hdu 5124 lines

题意: 给n个区间 [x,y],问被最多覆盖的点,被覆盖了多少次. 思路: 一个很巧妙的方法.好像原来有接触过. 就是如果给你[1,3]就used[1]++,used[4]--. 然后从左到又过一遍出现的点 依次累加每次加的时候取最大值. 然后这题需要用到map离散化. 代码: #include"cstdlib" #include"cstdio" #include"cstring" #include"cmath" #inclu

[思路题+贪心] fzu oj 2197 最小花费

题意: 给一个01串,相邻的01交换代价为X,否则为Y. 问把全部1变到0前面的最小费用. 思路: 对于 01011->11100 如果只靠相邻位移动是需要5步的. 然而不管怎么移动,步数是固定的. 那我们就把最前面的0和最后面的1交换 假设0在i,1在j.我们交换的代价就是min(y,x*(j-i)) 然后累加求和就好了! 很棒的脑洞题! 代码: #include"cstdlib" #include"cstdio" #include"cstring

Bet(The 2016 ACM-ICPC Asia China-Final Contest 思路题)

题目: The Codejamon game is on fire! Fans across the world are predicting and betting on which team will win the game. A gambling company is providing betting odds for all teams; the odds for the ith team is Ai :Bi . For each team, you can bet any posi

upcoj2679 Binary Tree(思路题)

题意: 给你两个串,每个串有LRU三个操作,L(R)为去左(右)子树,U为回到父亲(根节点不作处理) 然后按这样的规则遍历完第一个串,将现在的位置作为第二个串的起始位置 然后遍历第二个串,第二个串的每个位置都可以执行或者不执行,U操作为将原点倒退(按第一个串行进的过程反向) 问你最多能到多少个节点 ? 思路: 开一个栈将第一个串的每一步的变动压入栈中,第二个串遍历的时候开三个变量l,r,sum lr分别表示向左(右)走的新节点数量,这样遍历第二个串的时候, 遇到L就让ans和r都加l,意思不好讲

hdu 4908(思路题)

BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1614    Accepted Submission(s): 566 Problem Description Mr Potato is a coder.Mr Potato is the BestCoder. One night, an amazing

hdu 5701(区间查询思路题)

中位数计数 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 999    Accepted Submission(s): 383 Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在多少个包

[思路题] spoj 11354 Amusing numbers

题意: 给k(1<=k<=10^15),问第k 大的只含有数字5和6的数是多少 比如 1就是5 ,3就是55 ,4就是56 思路: 首先我们可以发现,一位数有2个这的数,两位数有4个,三位数有8个.. 那么我们可以通过统计确定出第k大的数是几位的. 通过累和,一位数以下0个,两位数以下2,三位数以下6 n位数以下就是2^n-2 然后给k,从大到下搜索第一个小于k的bit[i],那么就有i位数. 然后就是对于i位数,它是第几个数. 比如说k=70,它就是6位数. 然后 70-bit[6]-1=7

hdu 5056(尺取法思路题)

Boring count Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 932    Accepted Submission(s): 382 Problem Description You are given a string S consisting of lowercase letters, and your task is cou