我的代码:
#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
unsigned long long n,m,k,ans;
struct il{
unsigned long long l,r,h,num=-1;
}iil[100010];
unsigned long long search(unsigned long long k,unsigned long long h1,unsigned long long f){
for(unsigned long long i=f;i>0;i--)
if(iil[i].l<=k&&iil[i].r>=k){
if(iil[i].num==-1)
iil[i].num=(search(iil[i].l,iil[i].h,i-1)%mod+search(iil[i].r,iil[i].h,i-1)%mod)%mod;
return iil[i].num;
}
return 1;
}
bool cmp(il x,il y){
return x.h<y.h;
}
int main(){
scanf("%lld %lld",&n,&m);
for(unsigned long long i=1;i<=m;i++) scanf("%lld %lld %lld",&iil[i].l,&iil[i].r,&iil[i].h);
sort(iil+1,iil+m+1,cmp);
for(unsigned long long i=1;i<=n;i++){
scanf("%lld",&k);
ans+=search(k,1e10,m);
}
printf("%lld",ans);
return 0;
}
用的记忆化搜索,后面WA了,不是TLE
求调