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

相关推荐

  • 韦编三绝是什么意思,韦编三绝的故事,简短些

    技术韦编三绝是什么意思,韦编三绝的故事,简短些早在春秋战国时期,由于纸尚未出现,人们用竹简通过熟牛皮串起来来写下书籍韦编三绝是什么意思。”韦编“就是熟牛皮的意思。韦编三绝顾名思义就是穿竹简的牛皮屡次断裂的意思。这其实是一

    生活 2021年10月24日
  • 对我影响最大的人,对我影响最大的人妈妈作文

    技术对我影响最大的人,对我影响最大的人妈妈作文她可以不知道我的名字对我影响最大的人,不知道我的性格,甚至不必认识我,不必了解我,就可以爱我爱得那样刻骨铭心。 是的,她就是我的妈妈。是她给了我第一份最纯洁最美丽的爱。

    生活 2021年10月27日
  • 如何用OAuth 2.0实现权限认证mybatis连接mysql数据库

    技术如何用OAuth 2.0实现权限认证mybatis连接mysql数据库本篇内容介绍了“如何用OAuth 2.0实现权限认证mybatis连接mysql数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困

    攻略 2021年12月4日
  • python MySQLdb如何配置python链接MYSQL

    技术python MySQLdb如何配置python链接MYSQL这篇文章给大家介绍python MySQLdb如何配置python链接MYSQL,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

    攻略 2021年12月4日
  • Windows Oracle 11G R2搭建方法是什么

    技术Windows Oracle 11G R2搭建方法是什么本篇内容主要讲解“Windows Oracle 11G R2搭建方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家

    攻略 2021年11月9日
  • Ajax和WebSpherePortal设计有哪些注意事项

    技术Ajax和WebSpherePortal设计有哪些注意事项本篇内容介绍了“Ajax和WebSpherePortal设计有哪些注意事项”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大

    攻略 2021年11月14日