概述
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1166
始终不明为什么第一个代码不超时,然而第二个超时
#include<iostream>
#include<cstdio>
#include<cstring>
const int MAX=50010;
int s[MAX];
int n;
int Sum[MAX];
using namespace std;
void Add()
{
int a,b,i;
scanf("%d%d",&a,&b);
{
for(i=a;i<=n;i++)
Sum[i]+=b;
}
}
void Sub()
{
int a,b,i;
scanf("%d%d",&a,&b);
{
for(i=a;i<=n;i++)
Sum[i]-=b;
}
}
void Query()
{
int a,b,i;
int sum;
scanf("%d%d",&a,&b);
printf("%dn",Sum[b]-Sum[a-1]);
}
int main()
{
int t,i,j,k=1,x,y;
char a[10];
scanf("%d",&t);
for(i=0;i<t;i++)
{
printf("Case %d:n",k++);
memset(Sum,0,sizeof(Sum));
scanf("%d",&n);
for(j=1;j<=n;j++)
{
scanf("%d",&s[j]);
Sum[j]=(Sum[j-1]+s[j]);
}
scanf("%s",&a);
while(a[0]!='E')
{
if(a[0]=='A')
{
Add();
}
else if(a[0]=='S')
{
Sub();
}
else
Query();
scanf("%s",&a);
}
}
return 0;
}
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[50010],sum[50010];
int Query(int x,int y)
{
int i,c=0;
for(i=x-1;i<y;i++)
c+=a[i];
return c;
}
int main()
{
int t,n,i,j,k,l,b,c;
scanf("%d",&t);
for(k=1;k<=t;k++)
{
memset(sum,0,sizeof(sum));
scanf("%d",&n);
c=0;
char zl[10]={};
for(l=0;l<n;l++)
scanf("%d",&a[l]);
while(scanf("%s",&zl)&&zl[0]!='E')
{
scanf("%d%d",&j,&b);
if(zl[0]=='Q')
{
sum[c]=Query(j,b);
c++;
}
else if(zl[0]=='A')
{
a[j-1]+=b;
}
else if(zl[0]=='S')
{
a[j-1]-=b;
}
}
printf("Case %d:n",k);
for(i=0;i<c;i++)
printf("%dn",sum[i]);
}
return 0;
}
最后
以上就是苗条发卡为你收集整理的HDOJ-1166的全部内容,希望文章能够帮你解决HDOJ-1166所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复