社区讨论
题解一的优化(希望被看到)
B3930[GESP202312 五级] 烹饪问题参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mj9nz36d
- 此快照首次捕获于
- 2025/12/17 15:02 2 个月前
- 此快照最后确认于
- 2025/12/17 15:17 2 个月前
这串代码有优化的空间
CPPfor(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i!=j)
{
mx=max(mx,a[i]&a[j]);
}
}
}
我们知道,3(0011) & 4(0100)等于4 & 3。
那么也就是说在第二个循环内,有一部分重复判断了
优化如下
CPP#include <iostream>
#include <algorithm>
using namespace std ;
int Max, n, a[214748369] ;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
cin >> n ;
for(int i = 1 ; i <= n ; i ++ ) cin >> a[i] ;
sort(a + 1, a + n + 1, cmp) ;
n = min(n, 32) ;
for(int i = 1 ; i <= n ; i ++ )
{
for(int j = i + 1 ; j <= n ; j ++ )
{
Max = max(Max, a[i] & a[j]) ;
}
}
cout << Max ;
}
虽说大佬的逻辑已经很无敌了O()
但④
这说明题太水(doge)
回复
共 2 条回复,欢迎继续交流。
正在加载回复...