线段树成段更新接触的第一个题...不过题目只要求找最后一次用的材料加起来的和,所以前面的过程都可以忽略,只找出最后到底是什么材料...
- -一个好朋友想出来的酷炫办法。尽管时间复杂度估算起来很高,但是代码提交上去是200MS左右,还算不错
#include<stdio.h>
int a[100005][3];
int main()
{
int t,q,n,i,j,sum,k,v;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d%d",&n,&q);
for(j=1;j<=q;j++)
scanf("%d%d%d",&a[j][0],&a[j][1],&a[j][2]);//把所有输入存起来
sum=0;
for(k=1;k<=n;k++)//找出每个点是否最后一次出现在哪个区间,那么这个点的价值就是最后价值
{
v=1;
for(j=q;j>=1;j--)
if(a[j][0]<=k&&k<=a[j][1])
{
v=a[j][2];
break;
}
sum+=v;
}
printf("Case %d: The total value of the hook is %d.\n",i,sum);
}
return 0;
}