洛谷P8267题解
前置知识
- 若
a\leqslant b,x\leqslant a ,则x\leqslant b - 若
a\geqslant b,x\geqslant a ,则x\geqslant b - 若
a>b,x\geqslant a,x\leqslant b ,则x 无解
题解
首先,我们将字符为 L 和 G 分别加入数组
由前置知识,我们可以得到:
-
-
- 如果
a_i<b_j 则无解。
因此,我们先判断一下
优化
数据加强版
其实这道题是可以
注意
-
最坏情况下有
1 只奶牛猜的是对的,所以ans 要初始化为n-1 。 -
有可能说
L或说G的奶牛全都是错的,注意细节。
Code
#include<bits/stdc++.h>
using namespace std;
#define N 1005
int n,t,x,y,a[N],b[N],ans;
char c;
int main()
{
scanf("%d",&n);
b[++y]=-1;
for(int i=1;i<=n;i++)
{
scanf("\n%c%d",&c,&t);
if(c=='L') a[++x]=t;
else b[++y]=t;
}
sort(a+1,a+x+1);
sort(b+1,b+y+1);
a[++x]=1e9+1,ans=n-1;
for(int i=1;i<=x;i++)
{
for(int j=1;j<=y;j++)
{
if(a[i]>=b[j]) ans=min(ans,i-1+y-j);
else break;
}
}
printf("%d\n",ans);
return 0;
}