2 条题解

  • 1
    @ 2025-8-23 12:12:57

    此为差分方案题解。

    using namespace std;
    int n,m,s[110],a[110],c[110],p;
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		int x,y;
    		cin>>x>>y;
    		s[x]+=1;
    		s[y+1]-=1;
    		p=max(n,y+1);
    	}
    	for(int i=1;i<=p;i++){
    		a[i]=a[i-1]+s[i];
    		c[i]=c[i-1]+a[i];
    	}
    	for(int i=1;i<=m;i++){
    		int l,r;
    		cin>>l>>r;
    		if(c[r]-c[l-1]>=r-l+1) cout<<"true\n";
    		else cout<<"false\n";
    	}
    	return 0;
    }
    
    
    
    • 1
      @ 2025-8-23 12:06:20

      本题数据过小,可用标记法做。

      using namespace std;
      int n,m,a[110];
      int main(){
      	cin>>n>>m;
      	for(int i=1;i<=n;i++){
      		int x,y;
      		cin>>x>>y;
      		for(int j=x;j<=y;j++) a[j]=1;
      	}
      	for(int i=1;i<=m;i++){
      		int x,y;
      		cin>>x>>y;
      		bool f=1;
      		for(int j=x;j<=y;j++){
      			if(a[j]==0){
      				f=0;
      				break;
      			}
      		} 
      		if(f) cout<<"true\n";
      		else cout<<"false\n";
      	}
      	return 0;
      }
      
      #### 
      
      • 1

      信息

      ID
      614
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      递交数
      6
      已通过
      2
      上传者