AOJ-problem-801

本文介绍了一种算法,用于计算经过多次添加不同重量酱料后,特定区间内草莓总重量的方法。通过输入草莓初始重量及添加酱料的操作,最终输出指定区间草莓的总重量。
                                                                          热身之蘸酱吃
Description

在ACM实验室里有n个草莓,编号依次为1到n,重量依次为w[1],w[2],...,w[n]。
由于某人比较喜欢蘸西瓜酱吃,在接下来的时间内,我会选择m个区间[l,r]并且随机选择一个数字k,使得标号在[l,r]区间内的每个草莓(包括端点)上面都加蘸了k重量的酱。
这时候会突然出现T个区间[L,R],对于每个区间,我们需要计算标号属于这个区间的草莓的重量和(包括上面的西瓜酱的重量,区间也包括端点)并输出。



Input

题目包括多组输入
第一行输入3个数n,m,T,空格分开,1<=n<=1000,1<=m<=1000,1<=T<=1000
第二行输入n个数,空格分开,w[1],w[2],...,w[n],1<=w[i]<=100
接下来m行,每行有三个数,空格分开,分别为l,r,k,1<=l<=r<=n, 0<=k<=100
接下来T行,每行有两个数,空格分开,分别为L,R, 1<=L<=R<=n


Output

输出公有T行,每行一个数字表示标号属于区间[L,R]的草莓加酱的重量

代码:
#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
	int n,m,t;
	int w[1001];
	while(scanf("%d%d%d",&n,&m,&t)!=EOF)
	{
		for(int i=1;i<=n;i++)
		cin>>w[i];
		while(m--)
		{
			int l,r,k;
			cin>>l>>r>>k;
			for(int i=l;i<=r;i++)
				w[i]+=k;
		}
		for(int i=1;i<=t;i++)
		{
			int sum=0;
			int L,R;
			cin>>L>>R;
			for(int i=L;i<=R;i++)
				sum+=w[i];
			cout<<sum<<endl;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值