数据很大 立马想预处理
每只怪物会从点x出现移动到点n(终点) 问能剩几只怪物
预处理求出每个位置到终点所受伤害 出现一只怪物直接判断死活即可
代码如下:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
#define LL long long
#define INF 0x3f3f3f3f
using namespace std;
int st[233333],en[233333];
LL atc[233333];
int main()
{
int i,j,n,l,r,x,k,cnt,m;
LL h,mm;
while(~scanf("%d",&n) && n)
{
memset(st,0,sizeof(st));
memset(en,0,sizeof(en));
scanf("%d",&m);
while(m--)
{
scanf("%d %d %d",&l,&r,&x);
st[l] += x;
en[r] += x;
}
mm = 0;
atc[0] = 0;
for(i = 1; i <= n; ++i)
{
mm += st[i];
mm -= en[i-1];
atc[i] = atc[i-1] + mm;
}
cnt = 0;
scanf("%d",&m);
while(m--)
{
scanf("%I64d %d",&h,&x);
if(h - (atc[n] - atc[x-1]) > 0)
{
cnt++;
}
}
printf("%d\n",cnt);
}
return 0;
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-13 08:34:21