zoukankan      html  css  js  c++  java
  • UESTC1013-我的魔法栈-模拟/排列组合

    有一个串,有黑色和白色两种元素。一次操作可以把最上面的白色元素变成黑色,同时把这个元素上面的所有元素变成白色。

    给你一个30以内的串,计算变成全黑时,元素变化的总和。

    我用的方法比较笨,打表处理了1-30个全白串变黑的ans,然后模拟,借助打表的结果计算出答案。

    其实,每出现一个白色元素 cnt+=(1<<i+1)-1即可;

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cstring>
     4 
     5 using namespace std;
     6 
     7 int T,N;
     8 char str[100];
     9 int flag;
    10 long long ans;
    11 int table[35] = {0,1,4,11,26,57,120,247,502,1013,2036,4083,8178,16369,32752,65519,131054,262125,524268,1048555,2097130,4194281,8388584
    12                     ,16777191,33554406,67108837,134217700,268435427,536870882,1073741793,2147483616};
    13 int main()
    14 {
    15     scanf("%d",&T);
    16     while(T--)
    17     {
    18         scanf("%d%s",&N,str);
    19         ans = 0;
    20         while(true)
    21         {
    22             flag = 0;
    23             //printf("str:%s
    ",str);
    24             for(int i=0;i<N;i++)
    25             {
    26                 if(str[i]=='W')
    27                 {
    28                     for(int j=0;j<i;j++)
    29                     {
    30                         if(str[j] == 'B')
    31                             ans++;
    32                         else if(str[j] == 'W')
    33                             str[j] == 'B';
    34                     }
    35                     ans += table[i];
    36 
    37                     str[i] = 'B';
    38                     ans++;
    39 
    40                     flag = 1;
    41                     break;
    42                 }
    43             }
    44 
    45             if(!flag)
    46             {
    47                 printf("%lld
    ",ans);
    48                 break;
    49             }
    50         }
    51     }
    52 }
  • 相关阅读:
    第一次冲刺站立会议03
    第二次冲刺计划会议
    梦断代码阅读笔记02
    学习进度12
    个人项目——找水王
    学习进度11
    梦断代码阅读笔记01
    学习进度10
    学习进度09
    第一次冲刺个人博客10
  • 原文地址:https://www.cnblogs.com/helica/p/5205173.html
Copyright © 2011-2022 走看看