zoukankan      html  css  js  c++  java
  • codeforces 399B. Red and Blue Balls 解题报告

    题目链接:http://codeforces.com/problemset/problem/399/B

    题目意思:给出 n 个只由 R 和 B 组成的字符串(由上到下排列,相当于栈),问最多可以操作多少轮。一轮包括三个步骤:(1)如果栈顶的球为 red,则弹出(注意可以弹出多个),直到遇到栈顶的球为blue  (2)将这个blue球替换为red球(只操作一次)  (3)在替换完red 球上面添加blue球,直到有 n 个球为止。当然一轮中不一定3个步骤都执行。当 n 个球都为red时,就不能再操作了。

        千万不要直接模拟,会超时的!!!观察可以发现,它实质是考我们位运算!red球代表该位的数为0,blue则代表该位为1。那么只需要对输入的那个字符串,算出二进制数转换成十进制是多少,就是答案了。

        

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 using namespace std;
     6 
     7 typedef long long LL;
     8 const int maxn = 50 + 5;
     9 char s[maxn];
    10 LL ans;
    11 
    12 int main()
    13 {
    14     int n;
    15     while (scanf("%d", &n) != EOF)
    16     {
    17         getchar();
    18         gets(s);
    19         ans = 0;
    20         for (int i = 0; i < n; i++)
    21         {
    22             if (s[i] == 'B')
    23                 ans += (1LL << i);
    24         }
    25         printf("%lld
    ", ans);
    26     }
    27     return 0;
    28 }
  • 相关阅读:
    UVA 439 Knight Moves
    UVA 673 Parentheses Balance
    UVa 536 Tree Recovery
    UVA 712 S-Trees
    UVA 12657 Boxes in a Line
    UVA 679 Dropping Balls
    UVA 1603 Square Destroyer
    UVA 1343 The Rotation Game
    UVA 1374 Power Calculus
    UVA 12558 Egyptian Fractions (HARD version)
  • 原文地址:https://www.cnblogs.com/windysai/p/3837523.html
Copyright © 2011-2022 走看看