CodeChef--July Lunchtime 2014_And Operation

本文探讨了在给定非负整数数组中,如何找到并计算最大位与运算值的策略,通过优化算法从O(n^2)复杂度降至O(n),并详细解释了实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                               And Operation

Given an array of n non-negative integers: A1, A2, …, AN. Your mission is finding a pair of integers Au, Av (1 ≤ u < vN) such that (Au and Av) is as large as possible.
And is a bit-wise operation which is corresponding to & in C++ and Java.

 

Input

The first line of the input contains a single integer N. The ith line in the next N lines contains the Ai.

 

Output

Contains a single integer which is the largest value of Au and Av where 1 ≤ u < vN.

 

Constraints

50 points:

  • 2N5000
  • 0Ai109

50 points:

  • 2N3 × 105
  • 0Ai109

 

Example

Input:
4
2
4
8
10

Output:
8

 

Explanation

  • 2 and 4 = 0
  • 2 and 8 = 0
  • 2 and 10 = 2
  • 4 and 8 = 0
  • 4 and 10 = 0
  • 8 and 10 = 8

题目大意是给你n个整数,从中找出两个整数u,v,使得u&v得到最大值(&是c++中的和运算,等于pascal中的and)。

一开始我想到了暴力,枚举每一对然后比较,N最大是3*10^5,枚举是(1+3*10^5-1)*(3*10^5)/2,估计算一下应该是超过10^9,就TLE了。
暴力代码:
#include<iostream>
using namespace std;
const long maxx=3*100000;
long a[maxx];
long ans;
long n;
int main()
{
	cin>>n;
	for(int j=1; j<=n; j++)
	cin>>a[j];
	for (int i=1; i<=n; i++)
	  for (int j=i+1; j<=n; j++)
	  {
	  	long c;
	  	c=a[i]&a[j];
	  	ans=max(ans,c);
	  }
	  cout<<ans<<endl;
	  return 0;
}
然后我觉得应该有什么规律,应为我找不到别的算法来优化。这条题的时间复杂度应该可以从O(n^2)→O(n),然后我用程序枚举了1....2...100&8的值发现除了0,就是8了。
上面的例子是8&10为最大,比较一下看看。
 8的二进制是1000
10的二进制是1011
8&10     得到   1000
发现了没,如果u,v的二进制第一位相同那么他们得到的&运算会尽可能的大,u,v的二进制第一位要相同,那么他们之前的差距要尽可能的小。
所以我们每一次只需要比较排序后,每两两之间的&运算就行了。

O(n)代码:
#include<iostream>
#include<algorithm>
using namespace std;
long n;
long a[300005];
long maxx=0;
int main()
{
	cin>>n;
	for (int i=1; i<=n; i++)
	cin>>a[i];
	sort(a+1, a+n+1);
	for (int i=1; i<=n-1; i++)
	{
		long b=a[i]&a[i+1];
		maxx=max(maxx,b);
	}
	cout<<maxx<<endl;
	return 0;
}



内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。
IATF 16949-SIS-July 2021是指国际汽车工作组(IATF)16949标准的最新版本,该版本于2021年7月发布。IATF 16949是汽车行业的质量管理系统要求,它基于国际质量管理标准ISO 9001,并在汽车行业领域进行了特定的更新和补充。 IATF 16949-SIS-July 2021对汽车供应链的质量要求和认证程序进行了严格的规定和标准化,旨在提高整个汽车行业的质量水平和客户满意度。该标准适用于制造和供应汽车零部件和相关服务的组织,包括原材料供应商、零部件制造商、汽车制造商和相关服务提供商。 IATF 16949-SIS-July 2021强调了质量管理的重要性,要求组织建立和实施有效的质量管理体系,包括质量政策、质量目标和质量计划等。它也强调了组织的持续改进和客户导向的原则,鼓励组织积极参与供应链管理和合作伙伴关系的建立。 该标准对组织的质量管理体系进行了详细的要求,包括组织结构、资源管理、产品设计和开发、供应链管理、生产过程控制、售后服务等方面。它还对组织进行了质量审核和持续改进的要求,以确保质量管理体系的有效性和持续符合标准要求。 IATF 16949-SIS-July 2021对于汽车供应链的质量管理具有重要的意义,它可以帮助组织建立规范的质量管理体系,提高产品和服务的质量水平,提升客户满意度,增强组织的竞争力和市场份额。同时,它也是汽车行业国际贸易中的一个重要准入条件,对于想要进入汽车供应链的组织来说,获得IATF 16949-SIS-July 2021认证是必要的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值