LG P1496 火烧赤壁

传送门

\(map\)是个好东西

  • 起火部分起点为\(a\),终点为\(b\)。

  • 我们可以在\(a\)处打个\(+1\)记号,在\(b\)处打个\(-1\)记号。

  • 因为没打记号点和前面的点情况一样,所以我们可以枚举每个有记号的点,若从前到后记号总和\(>0\),那么便累加。


#include<bits/stdc++.h>
#define pr <int,int>
using namespace std;
map pr q;
map pr ::iterator it,last;
int ans,jl;
int main()
{
  int n;
  scanf("%d",&n);
  for(int i=1; i<=n; i++)
  {
  	int x,y;
  	scanf("%d%d",&x,&y);
  	q[x]++;q[y]--;
  }
  it=q.begin();
  last=it;
  jl+=it->second;
  it++;
  while(it!=q.end())
  {
  	if(jl>0) ans+=(it->first - last->first);
  	jl+=it->second;
  	last=it;it++;
  }
  printf("%d",ans);
  return 0;
}
上一篇:Sklearn对多分类的每个类别进行指标评(PR)


下一篇:D. Petya and Coloring 题解(组合数学+dp+容斥)