5WA 1TLE
如题,找了一会儿还是没发现问题
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return x*f;
}
int n,m,k,h[10005],l[10005],pp,ans=1e9,p,up[10005],down[10005],dp[10005][1005];
int main(){
n=read();m=read();k=read();
for(int i=0;i<n;i++){
up[i]=read();down[i]=read();
}
while(k--){
p=read();l[p]=read();h[p]=read();
}
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
dp[i][j]=1e9;
}
}
for(int i=1;i<=n;i++){
bool canget=0;
if(h[i]){
for(int j=h[i]-1;j>l[i];j--){
if(j<=m-down[i-1]&&dp[i-1][j+down[i-1]]!=1e9){
dp[i][j]=min(dp[i][j],dp[i-1][j+down[i-1]]);
canget=1;
}
for(register int k=j-up[i-1],l=1;k>0;k-=up[i-1],l++){
if(dp[i-1][k]==1e9)continue;
dp[i][j]=min(dp[i][j],dp[i-1][k]+l);
canget=1;
}
}
pp++;
}else{
for(int j=m;j>0;j--){
if(j<=m-down[i-1]&&dp[i-1][j+down[i-1]]!=1e9){
dp[i][j]=min(dp[i][j],dp[i-1][j+down[i-1]]);
canget=1;
}
if(j==m){
for(register int k=j;k>=j-up[i-1];k--){
if(dp[i-1][k]==1e9)continue;
dp[i][j]=min(dp[i][j],dp[i-1][k]+1);
canget=1;
}
continue;
}
for(register int k=j-up[i-1],l=1;k>0;k-=up[i-1],l++){
if(dp[i-1][k]==1e9)continue;
dp[i][j]=min(dp[i][j],dp[i-1][k]+l);
canget=1;
}
}
}
if(!canget){
if(h[i])pp--;
cout<<0<<endl<<pp;
return 0;
}
}
for(int i=1;i<=m;i++){
ans=min(ans,dp[n][i]);
}
cout<<1<<endl<<ans;
return 0;
}