| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这题怎么做 ?In Reply To:牛人给几组测试数据吧!我wa的不行了! Posted by:houxuanfelix at 2006-08-09 17:22:21 > 我的思想是这样的,先按每种药可以检测的病的数目进行排序,然后依次扫描每个集合,如果后面打的集合能被前面的小集合合并得到,则此集合将被去掉。
> 这种思想对吗?
> 附代码:
>
> Memory:316K Time:484MS
> Language:G++ Result:Wrong Answer
>
>
> #include <stdio.h>
>
> int f[310],n,m;
>
> struct node{
> int t[310];
> int len;
> }st[300],temp;
>
> int main()
> {
> int i,j,k,flag,count;
> while (1)
> {
> scanf ("%d%d",&n,&m);
> if (n==0&&m==0) break;
> for (i=0;i<=n;i++) f[i]=-1;
> for (i=1;i<=m;i++)
> {
> scanf ("%d",&st[i].len);
> for (j=1;j<=st[i].len;j++)
> {
> scanf ("%d",&st[i].t[j]);
> f[st[i].t[j]]=0;
> }
> }
> for (i=1;i<=m;i++)
> for (j=i+1;j<=m;j++)
> if (st[j].len<st[i].len)
> {
> temp=st[i];
> st[i]=st[j];
> st[j]=temp;
> }
> count=0;
> for (i=1;i<=m;i++)
> {
> k=0;
> for (j=1;j<=st[i].len;j++)
> if (f[st[i].t[j]]==0)
> {
> f[st[i].t[j]]=1;
> k=1;
> }
> if (k==0) count++;
> }
> printf ("%d\n",count);
> }
> return 0;
> }
>
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator