• codeforces 962B Students in Railway Carriage


    题目链接:http://codeforces.com/contest/962/problem/B

    题意:给你一个长度为n的字符串s,然后A和B两种人各有a和b个。然后字符串s中有星和点两种字符。每个字符代表一个作为,其中点代表空座位,星代表座位被占。然后A种人和A种人不能坐在一起,B不能和B坐在一起。现在要你把这些人安排到空座位上,问最多可以安排多少人。

    分析:为了放的人数最多,当当前座位是点,①如果前一个座位是星时,我们优先考虑放人数多的那种人②如果前一个座位是点(就是某一种人被消耗完了,前一个座位才会空开),我们优先考虑放人数多的那种人。(这个应该好理解吧,就是为了防止人数少的那种人用完了,最后人数多的那个只能分隔开,浪费空座位)③当前一个座位是‘A’时,我们只能放B,当前一个是‘B’我们只能放A。然后统计一下这样就可以AC了

    AC代码:

     1 #include<bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 
     6 int main(){
     7     ios_base::sync_with_stdio(0);
     8     cin.tie(0);
     9     int n,a,b;
    10     string s;
    11     cin>>n>>a>>b;
    12     cin>>s;
    13     int sum=0;
    14     if(s[0]=='.'){
    15         if(a>=b){
    16             s[0]='a';
    17             a--;
    18         }
    19         else {
    20             s[0]='b';
    21             b--;
    22         }
    23         sum++;
    24     }
    25     for(int i=1;i<n;i++){
    26         if(a==0&&b==0) break;
    27         if(s[i]=='.'){
    28             if(s[i-1]=='*'||s[i-1]=='.'){
    29                 if(a>=b){
    30                     s[i]='a';
    31                     a--;
    32                 }
    33                 else {
    34                     s[i]='b';
    35                     b--;
    36                 }
    37                 sum++;
    38             }
    39             else {
    40                 if(s[i-1]=='a'){
    41                     if(b>0){
    42                         s[i]='b';
    43                         b--;
    44                         sum++;
    45                     }
    46                 }
    47                 else {
    48                     if(a>0){
    49                         s[i]='a';
    50                         a--;
    51                         sum++;
    52                     }
    53                 }
    54             }
    55         }
    56     }
    57     cout<<sum<<endl;
    58 return 0;
    59 }
    View Code
  • 相关阅读:
    CodeForces 650C Table Compression
    HDU 5632 Rikka with Array [想法题]
    HDU 4352 XHXJ's LIS
    HDU 5634 Rikka with Phi
    HDU 4763 Theme Section
    LightOJ 1342 Aladdin and the Magical Sticks [想法题]
    HDU 4578 Transformation
    POJ 1177 Picture
    HDU 4614 Vases and Flowers
    SPOJ AEROLITE
  • 原文地址:https://www.cnblogs.com/ls961006/p/8799218.html
Copyright © 2020-2023  润新知