柿子饼同学 发表于 2022-7-12 10:43:14

奶牛拍照


题解看不懂 , 思路大概是把白的看成 -1 , 把花的看成 1 , 枚举区间范围 , 用前缀和判断 , 如果白的比花的多就行 (PS 只能把白的 P 成花的 , 不能反着来)
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define M 100005
int n;
struct ss{
    int pos,f;
}A;
int last;
bool cmp(ss a,ss b){
    return a.pos<b.pos;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
      char a;
      scanf("%d %s",&A.pos,a);
      A.f= a=='S'?1:-1;//可以把 'W' into'S' 即-1变成+1多了2 故last=min(last,last)
    }
    sort(A+1,A+1+n,cmp); // 下面就不知道什么意思了 , 求解
    memset(last,127,sizeof(last));
    int sum=n;
    last=A.pos;
    for(int i=1;i<n;i++){
      sum+=A.f;
      last=min(last,A.pos);
    }
    for(int i=n<<1;i>=0;--i)last=min(last,last);
    sum=n;
    int ans=0;
    for(int i=1;i<=n;i++){
      sum+=A.f;
      ans=max(ans,A.pos-last);
    }
    printf("%d\n",ans);
    return 0;
}
输入输出 : 5
8 W
11 S
3 W
10 W
5 S
7
解释 : FJ对位置从3到10的牛进行拍照,这个区间有3个白色牛和1个斑点牛,他可以把一个白色牛变成斑点牛,这样两种牛的数量就一样多了。

对于30%的数据,n的范围;

对于50%的数据,n的范围;

对于100%的数据,n的范围;

每头牛的位置范围;
谢谢回答{:10_303:}

柿子饼同学 发表于 2022-7-12 19:47:09

求求了 , 回答给渔币
页: [1]
查看完整版本: 奶牛拍照