[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)

相关推荐

  • 南昌旅游必去景点,南昌市内有那些旅游景点

    技术南昌旅游必去景点,南昌市内有那些旅游景点1南昌旅游必去景点、滕王阁 秋水共长天一色江南三大名楼之一,因初唐诗人王渤的《滕王阁序》而声名远播,历经29次兴废之后,她依然保留着古朴的风格,弥漫着一股人文之气。素有“西江第

    生活 2021年10月27日
  • 未来可期的意思,人间值得,未来可期是什么意思

    技术未来可期的意思,人间值得,未来可期是什么意思意思是未来是可以值得去期盼的未来可期的意思,人世间还是有很多美好值得我们去努力去等待去追求,不要灰心丧气。要保持积极乐观的心态,开心地度过每一天。扩展知识:积极乐观的句子有

    生活 2021年10月28日
  • 笔记本电脑性能排行,笔记本电脑价格及性能排行

    技术笔记本电脑性能排行,笔记本电脑价格及性能排行笔记本价格和性能排行?感觉您的提问有些问题..数码产品一般是一分钱一分货笔记本电脑性能排行,性能是和价格挂钩的,性能越高的笔记本,其价格肯定也越高,想低价格买到高性能的笔记

    生活 2021年10月25日
  • Android输入法弹窗bug怎么处理

    技术Android输入法弹窗bug怎么处理小编给大家分享一下Android输入法弹窗bug怎么处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言最近发现一个bug,在项目中的某个界面,每当弹出输入法

    攻略 2021年10月27日
  • Python 列表

    技术Python 列表 Python 列表Python 集合(数组)
    Python 编程语言中有四种集合数据类型:
    列表(List)是一种有序和可更改的集合。允许重复的成员。列表是一个有序且可更改的集合

    礼包 2021年11月14日
  • java语言软件开发工具包是什么(使用java语法的脚本语言)

    技术四种Java脚本语言对比的示例分析小编给大家分享一下四种Java脚本语言对比的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在一些

    攻略 2021年12月20日