USACO备考冲刺必刷题 | P8267 Counting Liars

学习C++从娃娃抓起!记录下USACO(美国信息学奥赛)备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:USACO备考冲刺必刷题 | 汇总-优快云博客


【题目描述】

奶牛 Bessie 躲在数轴上的某处。Farmer John 的 N 头奶牛(1≤N≤1000)中的每头奶牛都有一条信息要分享:第 i 头奶牛说 Bessie 躲在小于或等于 pi 的某个位置,或者说 Bessie 躲在大于或等于 pi 的某个位置(0≤pi≤10^9)。

不幸的是,可能不存在躲藏位置与所有奶牛的回答均一致,这意味着并非所有奶牛都在说真话。计算在撒谎的奶牛的最小数量。

【输入】

输入的第一行包含 N

以下 N 行每行包含字符 L 或 G,之后是一个整数 pi。L 表示第 i 头奶牛说 Bessie 的躲藏位置小于或等于 pi,而 G 表示第 i 头奶牛说 Bessie 的躲藏位置大于或等于 pi

【输出】

输出在撒谎的奶牛的最小数量。

【输入样例】

2
G 3
L 5

【输出样例】

0

【代码详解】

#include <bits/stdc++.h>
using namespace std;
int n, minn=1e9;
struct node {
    char c;
    int pos;
}p[1005];
bool cmp(node a, node b)
{
    return a.pos < b.pos;
}
int main()
{
    cin >> n;
    for (int i=1; i<=n; i++) {
        cin >> p[i].c >> p[i].pos;
    }
    sort(p+1, p+n+1, cmp);
    for (int i=1; i<=n; i++) {
        int tmp = p[i].pos;
        int cnt = 0;
        for (int j=1; j<=n; j++) {
            if (p[j].c=='G') {
                if (tmp<p[j].pos) cnt++;
            } else if (p[j].c=='L') {
                if (tmp>p[j].pos) cnt++;
            }
        }
        minn = min(minn, cnt);
    }
    cout << minn << endl;
    return 0;
}

【运行结果】

G 3
L 5
0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值