超级复杂的解法,看完我都想笑了
2026-09-14 21:17:22
发布于:福建
#include <algorithm>
#include<bits/stdc++.h>
using namespace std;
int a[101][2];
void add(int index){
int min1=a[index][0];//1集合
int max1=a[index][1];
int i=0;
while(true){
if(i100) break;
int min2=a[i][0];//2集合
int max2=a[i][1];
if(max20||index==i) {
i++;
continue;
}
//1为2的子集
if(min1>=min2&&max1<=max2){
a[i][0]=0;
a[i][1]=0;
a[index][0]=min2;
a[index][1]=max2;
min1=min2;//1集合
max1=max2;
i=0;
}
//2为1的子集
else if(min1<=min2&&max1>=max2){
a[i][0]=0;
a[i][1]=0;
i=0;
}
else if(max1>=min2&&max1<=max2){
a[i][0]=0;
a[i][1]=0;
a[index][1]=max2;
max1=max2;
i=0;
}
else if(min1<max2&&min1>=min2){
a[i][0]=0;
a[i][1]=0;
a[index][0]=min2;
min1=min2;
i=0;
}
else{}
i++;
}
}
int main(){
int c;
int n;
int index=0;
cin>>c>>n;
for(int i=0;i<n;i++){
int max,min;
cin>>min>>max;
//寻找空,插入
for(int j=0;j<101;j++){
if(a[j][1]==0){
index=j;
break;
}
}
a[index][0]=min;
a[index][1]=max;
add(index);
}
int tc=0;
for(int i=0;i<100;i++){
if(a[i][1]==0) continue;
tc+=a[i][1]-a[i][0]+1;
}
cout<<c-tc+1;
}
全部评论 1
呵呵呵
2026-09-15 来自 浙江
0









有帮助,赞一个