摘要

题目链接 难度等级 完成状态 完成分数 最后编辑时间 失误原因(初次提交分数)
On Segment's Own Points ★☆☆☆☆ 答案正确 100 2015-02-28 13:28:11 数据类型(3)

题意

给出一堆区间,找出[l,r]内不属于任何区间的部分。

题解

离散化排序判断即可。注意每个点可能出现多次。

代码

397A.cpp代码已折叠
展开折叠内容
显示/移除行号
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<string>
  4. #include<vector>
  5. #include<iomanip>
  6. #include<algorithm>
  7. #include<cstring>
  8. #include<cmath>
  9. #include<bitset>
  10. #include<set>
  11. #include<stack>
  12. #include<sstream>
  13. #include<utility>
  14. using namespace std;
  15. //数据类型//
  16. #define llu unsigned long long
  17. #define lld long long
  18. //定义默认类型//
  19. typedef lld num;
  20. #define dsi(n) num n;scanf("%lld",&n)
  21. #define si(n) scanf("%lld",&n)
  22. //其它//
  23. #define reset(x) memset(x,0,sizeof(x))
  24. #define ci const num&
  25. #define sqr(x) ((x)*(x))
  26. #define f(i,n) for(num i=1;i<=n;++i)
  27. #define ff(i,r,n) for(num i=r;i<=n;++i)
  28. #define fi(n) f(i,n)
  29. #define f0(i,n) for(num i=0;i!=n;++i)
  30. #define fd(i,n) for(num i=n;i>=1;--i)
  31. #define foreach(i,s) for(typeof(s.begin()) i=s.begin();i!=s.end();++i)
  32. #define rforeach(i,s) for(typeof(s.rbegin()) i=s.rbegin();i!=s.rend();++i)
  33. #define iforeach(i,s) int idx=0;for(typeof(s.begin()) i=s.begin();i!=s.end();++i,++idx)
  34. #define Vector2 pair<num,num>
  35. #define vector2(x,y) make_pair(x,y)
  36. #define x first
  37. #define y second
  38. multiset<Vector2> s;//fixed:multi.//
  39. num sgNum,steOpen=0;
  40. int main()
  41. {
  42. dsi(n);
  43. dsi(x);dsi(y);
  44. s.insert(vector2(x,2));
  45. s.insert(vector2(y,2));
  46. fi(n-1)
  47. {
  48. dsi(l);dsi(r);
  49. s.insert(vector2(l,0));
  50. s.insert(vector2(r,1));
  51. }
  52. num ans=0;
  53. foreach(i,s)
  54. {
  55. typeof(i) j=i;
  56. ++j;
  57. if(j==s.end())
  58. {
  59. cout<<ans;
  60. return 0;
  61. }
  62. if(i->y==0)++sgNum;
  63. if(i->y==1)--sgNum;
  64. if(i->y==2&&steOpen)
  65. {
  66. cout<<ans;
  67. return 0;
  68. }
  69. if(i->y==2)
  70. {
  71. steOpen=1;
  72. }
  73. if(steOpen&&!sgNum)
  74. {
  75. ans+=j->x-i->x;
  76. }
  77. }
  78. }

著作权声明[编辑]

关于[编辑]