用的方法叫作浮水法,实质是递归自下而上判断一个区间有没有覆盖,O(n^2)感觉也没有很实用。
前几年的haoi怎么这么水啊。。。
代码
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int maxn=1010; 9 int n,m;10 int a[maxn]={},b[maxn]={};11 int vis[maxn]={};12 int doit(int l,int r,int x){13 if(r b[x]||r =a[x]&&r<=b[x])return 0;19 if(b[x] l)return doit(l,a[x]-1,x+1)|doit(b[x]+1,r,x+1);20 if(b[x] =1;i--){29 if(doit(a[i],b[i],i+1)){30 cnt++;31 }32 }33 printf("%d\n",cnt);34 return 0;35 }