题目
假设货架上从左到右摆放了N种商品,并且依次标号为1到N,其中标号为i的商品的价格为Pi。小Hi的每次操作分为两种可能,第一种是修改价格——小Hi给出一段区间[L, R]和一个新的价格NewP,所有标号在这段区间中的商品的价格都变成NewP。第二种操作是询问——小Hi给出一段区间[L, R],而小Ho要做的便是计算出所有标号在这段区间中的商品的总价格。
由于题目的数据规模是十万级。直接朴素算法就过了。
代码
#include<cstdio>
using namespace std;
const int MAXP=100000+1;
int P[MAXP],N;
int main()
{
scanf("%d",&N);
for(int i=1;i<=N;i++) scanf("%d",&P[i]);
scanf("%d",&N);
int o,l,r,p;
while(N--)
{
scanf("%d%d%d",&o,&l,&r);
if(o)
{
scanf("%d",&p);
for(int i=l;i<=r;i++) P[i]=p;
}
else
{
for(int i=l;i<=r;i++) o+=P[i];
printf("%d\n",o);
}
}
return 0;
}