【CodeVS4246】奶牛的身高

Description

奶牛们在FJ的养育下茁壮成长。这天,FJ给了奶牛Bessie一个任务,去看看每个奶牛场中若干只奶牛的身高,由于Bessie是只奶牛,无法直接看出第i只奶牛的身高,而只能看出第i只奶牛与第j只奶牛的身高差,其中第i 只奶牛与第j只奶牛的身高差为A(i<=n)。当A大于0时表示这只奶牛比前一只奶牛高A cm,小于0时则是低。现在,FJ让Bessie总共去看了m次身高,当然也就传回给FJ m对奶牛的身高差,但是Bessie毕竟是奶牛,有时候眼睛可能会不好使……(大雾)你的任务是帮助FJ来判断是不是需要给Bessie看看眼睛了……

注:Hj-Hi=A 注意T1的样例 注意注意注意 重要的事情说三遍。

Input

第一行为一个正整数w,表示有w组数据,即w个奶牛场,需要你判断。每组数据的第一行为两个正整数n和m,分别表示对应的奶牛场中的奶牛只数以及看了多少个对奶牛身高差。接下来的m行表示Bessie看m次后传回给FJ的m条信息,每条信息占一行,有三个整数s,t和v,表示第s只奶牛与第t只奶牛的身高差为v。

Output

包含w行,每行是”Bessie’s eyes are good”或”Bessie is blind.”(不含双引号),其中第i行为”Bessie’s eyes are good”当且仅当第i组数据,即无法从第i个奶牛场传回的身高差判断Bessie视力好不好;第i行为”Bessie is blind.”当且仅当第i组数据,即从第i个奶牛场传回的身高差是有问题的。

Sample Input

2

3 3

1 3 10

2 3 5

1 2 5

4 3

1 4 100

3 4 50

1 3 100

Sample Output

Bessie’s eyes are good

Bessie is blind.

HINT

对于30%的数据,保证n<=100,m<=1000;

对于100%的数据,保证w<=100,n<=1000,m<=30000,|A|<=30000.

题解

#include<iostream>
#include<cstdio>
#define N 1010
using namespace std;
struct node
{
    int fa,val;
}cow[N];
int T,n,m;
int root(int x)
{
    if (cow[x].fa == x) return x;
    int y=cow[x].fa; // fa的值会改变,先记录一下
    cow[x].fa = root(cow[x].fa);
    cow[x].val = cow[x].val+cow[y].val;
    return cow[x].fa;
}
int main()
{
    int s,t,v,ans;
    scanf("%d",&T);
    for (int I=1;I<=T;I++)
    {
        ans=1;
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++)
        {
            cow[i].fa = i;
            cow[i].val = 0;
        }
        for (int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&s,&t,&v);
            if (!ans) continue;
            if (s == t && v!=0)
            {
                ans = 0;
                continue;
            }
            int fx=root(s),fy=root(t);
            if (fx != fy)
            {
                cow[fx].fa=fy;
                cow[fx].val=cow[t].val-cow[s].val+v; //算一下
            }
            else
            {
                if (cow[t].val+v != cow[s].val)
                    ans=0;
            }
        }
        if (ans) printf("Bessie‘s eyes are good\n");
        else printf("Bessie is blind.\n");
    }
}
时间: 2024-11-10 00:11:24

【CodeVS4246】奶牛的身高的相关文章

4246 奶牛的身高

题目描述 Description 奶牛们在FJ的养育下茁壮成长.这天,FJ给了奶牛Bessie一个任务,去看看每个奶牛场中若干只奶牛的身高,由于Bessie是只奶牛,无法直接看出第i只奶牛的身高,而只能看出第i只奶牛与第j只奶牛的身高差,其中第i 只奶牛与第j只奶牛的身高差为A(i<=n).当A大于0时表示这只奶牛比前一只奶牛高A cm,小于0时则是低.现在,FJ让Bessie总共去看了m次身高,当然也就传回给FJ m对奶牛的身高差,但是Bessie毕竟是奶牛,有时候眼睛可能会不好使--(大雾)

[BZOJ1657] [Usaco2006 Mar] Mooo 奶牛的歌声 (单调栈)

Description Farmer John's N (1 <= N <= 50,000) cows are standing in a very straight row and mooing. Each cow has a unique height h in the range 1..2,000,000,000 nanometers (FJ really is a stickler for precision). Each cow moos at some volume v in th

[BZOJ1657][Usaco2006 Mar]Mooo 奶牛的歌声

1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 863  Solved: 607 [Submit][Status][Discuss] Description Farmer John's N (1 <= N <= 50,000) cows are standing in a very straight row and mooing. Each cow has a unique heigh

BZOJ 1657: [Usaco2006 Mar]Mooo 奶牛的歌声( 单调栈 )

从左往右,从右往左 扫两遍,单调栈维护... ---------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<stack> #include<iostream> #define rep( i , n ) for( int i = 0 ; i &

1657: [Usaco2006 Mar]Mooo 奶牛的歌声

1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 526  Solved: 365[Submit][Status] Description Farmer John's N (1 <= N <= 50,000) cows are standing in a very straight row and mooing. Each cow has a unique height h in the

[BZOJ] 1657: [Usaco2006 Mar]Mooo 奶牛的歌声

1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 858  Solved: 603[Submit][Status][Discuss] Description Farmer John's N (1 <= N <= 50,000) cows are standing in a very straight row and mooing. Each cow has a unique height

NOIP2012模拟试题 121105【奶牛排队(tahort)

3.奶牛排队(tahort) [ 问题描述] 奶牛在熊大妈的带领下排成了一条直队. 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的B是最高的,且B高于A奶牛,中间如果存在奶牛,则身高不能和A.B奶牛相同.问这样的奶牛最多会有多少头? 从左到右给出奶牛的身高,请告诉它们符合条件的最多的奶牛数(答案可能是0,2,但不会是1). [输入] 第一行一个数N (2≤N≤l00000),表示奶牛的头数. 接下来N个数,每行一个数,从上到下

奶牛排序——RMQ

[问题描述]奶牛在熊大妈的带领下排成了一条直队.显然,不同的奶牛身高不一定相同--现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛 A 是最矮的,最右边的 B 是最高的,且 B 高于 A 奶牛,且中间如果存在奶牛,则身高不能和 A.B 奶牛相同,问这样的一些奶牛最多会有多少头.从左到右给出奶牛的身高,请告诉它们符合条件的最多的奶牛数(答案可能是零.二,但不会是一).[输入格式]第一行一个数 N(2<=N<=100000),表示奶牛的头数.接下来 N 个数,每行一个数,从上到下表示从

WOJ1109 奶牛排队

题目链接: WOJ1109 题目描述: 奶牛在熊大妈的带领下排成了一条直队. 显然,不同的奶牛身高不一定相同-- 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的B是最高的,且B高于A奶牛,且中间如果存在奶牛,则身高不能和A.B奶牛相同,的这样的一些奶牛最多会有多少头. 从左到右给出奶牛的身高,请告诉它们符合条件的最多的奶牛数(答案可能是0.2,但不会是1). 输入 第一行一个数N(2<=N<=100000),表示奶牛的头数. 接下来N个数,每行一个数,从上到下