一眼看到题,马上想到线段树,不想离散化,又只有一维,果断矩形分割RE,原因未考虑线段未相交情况,加上后AC结果在DISCUSS里看到了这么一句It is confirmed that these sections do not overlap with each other. 马上囧了要认真读题啊#include<stdio.h>int line[5005*4][2];int m;voidAdd(int a,int b){++m;
line[m][0]=a;
line[m][1]=b;}voidDelete(int&i){
line[i][0]=line[m][0];
line[i][1]=line[m][1];--m;}intmain(){int L,M;while(scanf("%d%d",&L,&M)){if(!L &&!M)break;
m=-1;int a,b;while(M--){scanf("%d%d",&a,&b);int mm=m;for(int i=0;i<=mm;i++){if(!((line[i][0]>=b)||(line[i][1])<=a)){if(line[i][0]<a)Add(line[i][0],a-1);// 每个点不能重复算,所以线段不相交要加强到if(b<line[i][1])Add(b+1,line[i][1]);// 点不相交Delete(i);}}Add(a,b);}for(int i=0;i<=m;i++)
L-=(line[i][1]-line[i][0]+1);printf("%d/n",L+1);}}