读书人

ACM新手题老是WA求解救解决方法

发布时间: 2012-03-18 13:55:39 作者: rapoo

ACM新手题老是WA,求解救
http://acm.bnu.edu.cn/contest/problem_show.php?pid=10809
聚餐

Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 65536 KB
Submit: 149 Accepted: 58
[Prev][Next]

Description

Lolilu大牛又要请客了~~
有些同学呢,是果断要去的,而有些同学呢,只有确定心中的大牛会参加,他才会参加。
Lolilu决定请大家去吃金钱豹,因此希望你告诉他一共会有多少人参加,他才知道带多少钱比较合适。假设金钱豹人均消费200元。


Input

第一行一个整数N(N<=100),表示一共多少个同学。
接下来N行依次描述了这N个同学,每行一个整数C表示该同学心中的大牛的编号。如果C为-1表示该同学果断要去。


Output

一个整数T,表示Lolilu大牛要出多少钱。


Sample Input
5
-1
1
2
5
4
Sample Output
800
Hint

首先1号果断去,因此2号也去,所以3号去。4,5互相仰慕,因为都不能明确知道对方会不会去,所以都不去。最终3个人去,加上Lolilu大牛自己一共4人,所以总共花费800。

C/C++ code
# include<stdio.h># include<string.h>int main(void){    int a[101],b[101],i,j,n,num;    while(scanf("%d",&n)!=EOF)    {        num = 1;        memset(a,0,sizeof(a));        memset(b,0,sizeof(b));        for(i=1;i<=n;i++)        {            scanf("%d",&a[i]);            if(a[i] == -1)            {                b[i] = 1;                num++;            }        }        for(i=1;i<=n;i++)        {            if(a[i] == -1) continue;            if(b[a[i]])            {                b[i] = 1;                num++;            }        }        printf("%d\n",200*num);    }    return 0;}


[解决办法]
for(i=1;i<=n;i++)
{
if(a[i] == -1) continue;
if(b[a[i]])
{
b[i] = 1;
num++;
}
}

读书人网 >C语言

热点推荐