题目有问题还是我没看懂
查看原帖
题目有问题还是我没看懂
1229346
yangyoulin楼主2024/3/29 16:01

这题应该有问题 在for循环中你小于n或者小于max都是可以AC的,但正解应该是小于max,因为这个测试数据小于n的话你的答案是0也能AC,那不就错了吗,还是有一些题目我没看懂?最开始写成<n也A了,太尬了 6 3 100 5 100 6 101 7 101 5 99 1 99 2

#include "stdio.h"
#include "string.h"
#include "math.h"

long long n,w,x[200005],b,a,ans,s[200005],max;

main()
{
   int i,j;
   scanf("%lld%lld",&n,&w);
   
   
   
   for(i=1;i<=n;i++)
   {
   	scanf("%lld%lld",&a,&b);
   	x[a]+=b;
   	max=fmax(a,max);
   }
   if(w==0) {printf("0"); return 0;}
   
   for(i=1;i<=n;i++)
   s[i]=s[i-1]+x[i];
   
   for(i=w/2;i<=n;i++)
   {
   	  ans=fmax(s[i+w/2]-s[i-w/2-1],ans);
   }
   printf("%lld",ans);
   
   
}
                      
                      
 #include "stdio.h"
#include "string.h"
#include "math.h"

long long n,w,x[200005],b,a,ans,s[200005],max;

main()
{
   int i,j;
   scanf("%lld%lld",&n,&w);
   
   
   
   for(i=1;i<=n;i++)
   {
   	scanf("%lld%lld",&a,&b);
   	x[a]+=b;
   	max=fmax(a,max);
   }
   if(w==0) {printf("0"); return 0;}
   
   for(i=1;i<=max;i++)
   s[i]=s[i-1]+x[i];
   
   for(i=w/2;i<=max;i++)
   {
   	  ans=fmax(s[i+w/2]-s[i-w/2-1],ans);
   }
   printf("%lld",ans);
   
   
}

2024/3/29 16:01
加载中...