#include<iostream>
#include<memory.h>
using namespace std;
int TreeArray[10010];
int main()
{
int num;
cin>>num;
while(num--)
{ memset(TreeArray,0,sizeof(TreeArray));
int Tree,N;
cin>>Tree>>N;
while(N--)
{
int start,end;
cin>>start>>end;
for(int i=start;i<=end;i++)
TreeArray[i]=1;
}
int NUM=0;
for(int i=0;i<=Tree;i++)
{
if(TreeArray[i]==1)
NUM++;
}
cout<<Tree+1-NUM<<endl;
}
}
算法的思想很简单,种树是1,被挖去就是0,统计最后一的个数就行了。细节在于距离500有501棵树哦
#include<iostream>
#include<numeric>
#include<vector>
using namespace std;
int main()
{
int n,beg,end,L,M;
cin>>n;
while(n--)
{
cin>>L>>M;
vector<bool> have(L+1,true);
while(M--)
{
cin>>beg>>end;
for(int i=beg;i<=end;i++)
have[i]=false;
}
// cerr<<100-n<<endl;
cout<<accumulate(have.begin(),have.end(),0)<<endl; //在于accumulate的用法0为初始值,把所有vector所有值相加
}
}