链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
犇犇是一只贪玩的牛。他最喜欢的游戏是夹娃娃。已知有 n 个娃娃排成一排,犇犇可以控制夹子的位置和夹子的宽度。每个娃娃的价值为整数 w[i],犇犇想知道,他夹起的l 到r 个娃娃的总价值是多少
输入描述:
第 1 行两个正整数 n,k。n 表示娃娃的个数,k 表示询问的次数
第 2 行 n 个正整数,表示数组 w,第 i 个数字表示 w[i]
接下来的 k 行,每行两个正整数 l,r。表示犇犇抓起来的娃娃的范围。
数据范围:
对于20%的数据,保证l=r
对于30%的数据,保证n<=100
对于20%的数据,保证k<=100
对于所有数据:
1<=n<=1e5, 1<=k<=1e6
1<=w[i]<=1e3
1<=l<=r<=n
输出描述:
输出 k 行,每行一个数,表示从 l 到 r 的价值和。
示例1
输入
5 2 2 4 1 3 6 1 3 2 4
输出
7 8
示例2
输入
3 3 2 6 4 1 3 2 3 1 2
输出
12 10 8
备注:
包括第l个和第r个
#include<stdio.h>
int jz[100001];
int xw[1000001][2];
int main()
{
int n,k;
int i,j,sum=0;
scanf("%d %d",&n,&k);
for(i=0;i<n;i++)
{
scanf("%d",&jz[i]);
}
for(i=0;i<k;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",&xw[i][j]);
}
}
for(i=1;i<n;i++)
{
jz[i]=jz[i-1]+jz[i];
}
for(i=0;i<k;i++)
{
if(xw[i][0]==1)
{
printf("%d\n",jz[xw[i][1]-1]);
}
else
{
sum=jz[xw[i][1]-1]-jz[xw[i][0]-2];
printf("%d\n",sum);
}
}
return 0;
}
这个地方用到了一个比较巧妙的方法来解决问题可以细看代码就能发现。