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

相关推荐

  • 顺序表——顺序存储结构

    技术顺序表——顺序存储结构 顺序表——顺序存储结构#includestdio.h#includestdbool.h#define MaxSize 20typedef int DataType;typed

    礼包 2021年11月1日
  • HDFS的工作原理是什么呢

    技术HDFS的工作原理是什么呢这期内容当中小编将会给大家带来有关HDFS的工作原理是什么呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Hadoop分布式文件系统(HDFS)是一种被设

    攻略 2021年12月3日
  • Java如何将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML

    技术Java如何将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML小编给大家分享一下Java如何将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML,相信大部分人都还不怎么了解,因此分享

    攻略 2021年11月24日
  • 3个看似简单的Python问题是什么

    技术3个看似简单的Python问题是什么本篇内容主要讲解“3个看似简单的Python问题是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“3个看似简单的Python问题是什

    攻略 2021年11月2日
  • 全国商品防伪查询中心,怎么办理315防伪标签

    技术全国商品防伪查询中心,怎么办理315防伪标签全国315产品防伪查询中心 第一步:企业要提供企业资质,如公司营业执照、税务登记证、商标注册证、生产许可证等复印件加盖公章全国商品防伪查询中心。 第二步:提供品牌的商标图案

    生活 2021年10月30日
  • Apache Shiro怎么入门

    技术Apache Shiro怎么入门今天就跟大家聊聊有关Apache Shiro怎么入门,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。项目权限 表Shiro与Sp

    攻略 2021年10月20日