pku 3282 即爱又恨

下面的代码 郁闷死了,全部测试用例都对,能想到的用例也对,就是WA,

#include<stdio.h>
#include<string.h>
void main()
{
   char a[10000][8];
   int s[10001],mark[10000];
   int n,l,m,i,j,k=0;
   int left_t=0,right_t=0;
   scanf("%d",&n);
   for(i=0;i<n;i++)
   {
    left_t=0;right_t=0;
    scanf("%d %d",&l,&m);

    for(j=0;j<m;j++)
    {
     scanf("%d %s",&s[j],a[j]);
     mark[j]=0;
    }

   
    for(j=0;j<m-1;j++)
    {
                if(mark[j]==1)   continue;
             for(k=j+1;k<m;k++)
    {   
         if(mark[j]==0&&mark[k]==0&&(!strcmp(a[j],a[k]))&&s[j]+s[k]<=l*100)
      {
           s[j]=s[j]+s[k];
           mark[k]=1;
      }
    }
   
    
    }
//  for(j=0;j<m;j++)
 // printf("%d !!%s!! %d/n",s[j],a[j],mark[j]);

    for(j=0;j<m;j++)
    {
     if(a[j][0]=='l'&&mark[j]==0) left_t++;
     if(a[j][0]=='r'&&mark[j]==0) right_t++;
    }
 
 
    if(left_t>right_t)
     printf("%d/n",2*left_t-1);
    else
     printf("%d/n",2*right_t);

   }
}
 

 

 

题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=3282

不过下面的一次就ac了

 

 

 

#include<stdio.h>
#include<string.h>
void main()
{
 int l,m,n,i,j,sum,k,h=0,left_t=0,right_t=0;
 char a[]="left",s[8];
 int left[100000],right[100000];
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  scanf("%d%d",&l,&m);
  l=l*100;
  k=0;h=0;
  left_t=0;right_t=0;
  for(j=0;j<m;j++)
  {
   scanf("%d %s",&sum,s);
   //printf("|||||%d %s|||/n",sum,s);
   if(strcmp(s,a)==0) left[k++]=sum;
   else right[h++]=sum;
  }
    left_t=k;
    right_t=h;
   // printf("l=%d left_t=%d %d/n",l,left_t,right_t);
    sum=0;
  for(j=0;j<k;j++)
  {
             if(left[j]+sum<=l)
    {
     sum=left[j]+sum;
     if(j!=0) left_t--;
    }
                else
     sum=left[j];
  }
  sum=0;
  for(j=0;j<h;j++)
  {
   if(right[j]+sum<=l)
   {
    sum=sum+right[j];
     if(j!=0) right_t--;
   }
   else
    sum=right[j];
  }
 // printf("left_t =%d %d",left_t,right_t);
        if(left_t>right_t)
   printf("%d/n",2*left_t-1);
  else
   printf("%d/n",2*right_t);
 }
}

 但是现在还是不知道怎么回事,那位大哥帮我看一下啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值