[loj3220]Terytoria

技术[loj3220]Terytoria [loj3220]Terytoria显然两维是独立的,不妨考虑其中一维的答案
将其离散,枚举交包含的某一段(若不存在即交为空),进而即可确定所有段的方向,用线段

[loj3220]Terytoria

显然两维是独立的,不妨考虑其中一维的答案

将其离散,枚举交包含的某一段(若不存在即交为空),进而即可确定所有段的方向,用线段树维护取到最大值的位置数即可

时间复杂度为$o(n\log n)$,可以通过

1 #包括息税前利润/标准利润.h

2使用命名空间标准;

3 #定义N 500005

4 #定义陆线(landlines的缩写)长

5 #定义pii pairint,int

6 #首先定义船方不负担装货费用

7 #定义硒秒

8 #定义L (k1)

9 #定义R (L 1)

10 #定义mid (l r1)

11 int n,X,Y,M,vis[N],tag[N3],mx[N3],f[N3],DTA[N1];

12个ll ans

13矢量v 0;

14 vectorpairint,int v;

15结构数据{

16国际,r;

17 }x[N],y[N],a[N];

18 void build(int k,int l,int r){ 0

19 if(l==r){ 0

20 mx[k]=n-dta[l],f[k]=v 0[l 1]-v 0[l];

21返回;

22 }

23建(左,左,中),建(R,中间1,R);

24 mx[k]=max(mx[L],mx[R]),f[k]=0;

25 if(MX[k]==MX[L])f[k]=f[L];

26 if(MX[k]==MX[R])f[k]=f[R];

27 MX[k]=标记[k];

28 }

29 void update(int k,int l,int r,int x,int y,int z){ 0

30 if ((ly)||(xr))返回;

31 if((x=l)(r=y)){ 0

32标签[k]=z,MX[k]=z;

33返回;

34 }

35更新(L,L,mid,x,y,z);

36更新(R,mid 1,R,x,y,z);

37 mx[k]=max(mx[L],mx[R]),f[k]=0;

38 if(MX[k]==MX[L])f[k]=f[L];

39 if(MX[k]==MX[R])f[k]=f[R];

40 MX[k]=标签[k];

41 }

42 void add(int id){ 0

43如果(!vis[id])(

44标记[1] -,MX[1]-;

45更新(1,0,M,a[id].l,a[id].r-1,2);

46 vis[id]=1;

47 }

48 else{

49标记[1],MX[1];

50更新(1,0,M,a[id].l,a[id].r-1,-2);

51 vis[id]=0;

52 }

53 }

54 int calc(int m){ 0

55 v.clear(),0v。clear();

56 memset(vis,0,sizeof(vis));

57记忆集(标记,0,sizeof(标记));

58 memset(dta,0,sizeof(DTA));

59表示(int I=1;I=n;I){ 0

60 v.push_back(make_pair(a[i]).l,I));

61 v.push_back(make_pair(a[i]).r,I));

62 }

排序(v.begin()、v . end());

64v 0。push _ back(0);

65表示(int I=0;I(n1);(一)

66 if((!i)||(v[i].菲v[i-1].fi))v0.push_back(v[i]).fi);

67 M=v0.size()-1,v0。push _ back(M);

68表示(int I=1;I=n;I){ 0

69 a[i].l=下界(v0.begin(),v0.end(),a[i].l)-v 0。begin();

70 a[i].r=下界(v0.begin(),v0.end(),a[i].r)-v 0。begin();

71避免双重征税协定.l],dta[a[i].r]-;

72 }

73表示(int I=1;I=M;I)DTA[I]=DTA[I-1];

74建(1,0,M);

75 int ans=0;

76表示(int I=0;I(n1);I){ 0

77 add(v[i]).se);

78 if (mx[1]==n)ans=max(ans,f[1]);

79 }

80个返回美国国家标准(American National Standards的缩写)

81 }

82 int main(){ 0

83 scanf('%d%d%d ',n,X,Y);

84表示(int I=1;I=n;I){ 0

85 scanf('%d%d%d%d ',x[i].我,你.l,x[i].r,y[i].r);

86 if (x[i]).lx[i].r)交换(x[i].l,x[i].r);

87 if (y[i]).撒谎r)交换(y[i].我,你.r);

88 }

89 memcpy(a,x,sizeof(a));

90 ans=calc(X);

91 memcpy(a,y,sizeof(a));

92 ans *=calc(Y);

93 printf('%lld\n ',ans);

94返回0;

95 }

查看代码

另外,还有一个更加巧妙的做法:注意到每一个区间的两种选择是互补的,对每一段区间异或一个随机值,那么可以认为众数的出现次数即为答案,这直接排序即可得到

关于错误的概率,并不太会分析,反正大概就对了QAQ

时间复杂度为$o(n\log n)$,也可以通过(比第一种算法常数更小)

1 #包括息税前利润/标准利润.h

2使用命名空间标准;

3 #定义N 500005

4 #定义陆线(landlines的缩写)长

5 #定义llu无符号陆线(landlines的缩写)

6矢量电视;

七整数n,X,Y;

8个ll ans

9 N1;

10 pairllu,IntP[N];

11结构数据{

12国际,r;

13 }x[N],y[N],a[N];

14 llu rnd(){ 0

15 llu x=0;

16表示(int I=0;i4;I)x=((x16)| rand()%(116));

17返回x;

18 }

19 int calc(int m){ 0

20v。clear();

21 memset(dta,0,sizeof(DTA));

22表示(int I=1;I=n;I){ 0

23 v.push_back(a[i]).l);

24 v.push_back(a[i]).r);

25 }

26 v.push_back(0),v . push _ back(m);

排序(v.begin()、v . end());

28表示(int I=1;I=n;I){ 0

29 a[i].l=下界开始,结束,结束.l)-v . begin();

页:1。r=下界(v.begin()、v.end()、a[i]).r)-v . begin();

31 llu p=rnd();

32 DTA[a[I]].l]^=p,dta[a[i]。r]^=p;

33 }

34为(int I=1);I=(n1);(i)dta[i]^=DTA[I-1];

35表示(int I=0);I=(n1);P[I]=make _ pair(DTA[I],v[I 1]-v[I]);

36个产出(p,p(n1)1);

37 int cnt=0,ans=0

38为(int I=0);I=(n1);>年;

39碳纳米管=磷[碘]。第二:

40 if ((i==(n1))||(P[i 1]).第一!=P[i].第一个)

41岁=最大(年,CNT);

42 cnt=0

43 }

44 }

45岁返回;

46 }

47 int main()

48 srand(时间(0));

49个扫描文件(“%d%d%d”、“n”、“x”、“y”);

50为(int I=1);i=n(I)>;

51个扫描文件(%d%d%d%d ",x[i]).我,你.页:1。r,y[i].(r)执行下列操作:

52 if (x[i]).lx[i].r)交换(x[i]).页:1。(r)执行下列操作:

53 if (y[i]).ly[我]。r)交换(和[i].我,你.(r)执行下列操作:

54 }

55 memcpy(a、x、sizeof(a));

56岁=计算;

57 memcpy(a,y,sizeof(a));

58岁*=计算(y);

59 printf("% lld \ n ",年);

60返回0;

61 }

视图代码

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/151784.html

(0)

相关推荐

  • oracle如何实现压缩表

    技术oracle如何实现压缩表这篇文章给大家分享的是有关oracle如何实现压缩表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。表压缩是如何工作的在Orcle9i第2版中,表压缩特性通过删除在

    攻略 2021年11月11日
  • 男人英语单词是什么,英语单词man和men怎么发音

    技术男人英语单词是什么,英语单词man和men怎么发音man[m鎛]把嘴巴张大一点,强调嬉簟en[men]嘴巴张小一点,不需要强调e音男人英语单词是什么。policeman也是一样,嘴巴张大一点,强调嬉簟olicem

    生活 2021年10月27日
  • C++中怎么使用工厂函数

    技术C++中怎么使用工厂函数本篇内容介绍了“C++中怎么使用工厂函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如果在

    攻略 2021年11月29日
  • mysql管理中的运行权限

    技术mysql管理中的运行权限mysql管理中的运行权限,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。mysql 管理:mysql 运行权限(转)[@mor

    攻略 2021年11月20日
  • python操作excel自动化办公(python自动化办公设置excel样式)

    技术Python办公自动化Excel怎么实现这篇文章主要介绍“Python办公自动化Excel怎么实现”,在日常操作中,相信很多人在Python办公自动化Excel怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年12月23日
  • roi是什么,图像处理中ROI是什么意思

    技术roi是什么,图像处理中ROI是什么意思ROI(region of interest),感兴趣区域。机器视觉roi是什么、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣

    生活 2021年10月22日