牛客小白月赛9: F. 暴力出奇迹(思维题)

链接:https://ac.nowcoder.com/acm/contest/275/F
来源:牛客网
 

题目描述

给定一个序列,寻找一对l,r,满足1 ≤ l ≤ r ≤ n
最大化的值
其中表示将al,al+1, ... , ar按位与后的结果

输入描述:

第一行一个整数n,表示数列长度.
第二行有n个整数,表示这个数列的初始数值.

输出描述:

一行一个整数表示答案.

输入

10
7 9 9 4 0 0 8 8 4 7 

输出

162

 

设dp[x][i] = 最小的p满足a[p+1]&a[p+2]&…&a[x]的第i位为一

那么暴力每个数字a[x],按照dp[x][i]的大小排序贪心求当前最大值就行了

看代码很好懂

 

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define LL long long
#define mod 1000000007
LL sum[100005];
int a[100005], dp[100005][22];
typedef struct Res
{
	int val, l;
	bool operator < (const Res &b) const
	{
		if(l

 

你可能感兴趣的:(#,推理,游戏与技巧)