首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-18 
ACM新手题老是WA,求解救http://acm.bnu.edu.cn/contest/problem_show.php?pid10809聚餐Time Limit: 1000

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++;
}
}

热点排行