luo
gu
luogu
luogup
4144
p4144
p414
4大河有一些襪子,但經常十分散亂的堆放著。
有一天龍兒忍不住了,於是將襪子放到了乙個序列上(稱作襪子序列)。
在序列裡,找一段連續子串行,使得所有數字的按位與加上按位或最大。
第一行三個整數 n,b
,p
n,b,p
n,b,
p ,分別表示數列長度和輸出相關的東西
第二行有 n
nn 個整數,表示這個數列的初始數值
設答案為 x
xx ,你需要輸出 (x+
233)
b(x+233)^b
(x+233
)bm od
modmodpp
p
10 1 10000000
7 9 9 4 0 0 8 8 4 7
251
1
<=n
,p
<=1
05
1 <= n,p <= 10^5
1<=n
,p<=1
050
<=b
,dir
ty[i
]<=1
07
0 <= b,dirty[i] <= 10^7
0<=b
,dir
ty[i
]<=1
07對於測試點 1
11 和測試點 2
22 的資料,保證 1≤n
≤100
1≤n≤100
1≤n≤10
0其實這道題可以通過推到得出結論:
設x
xx當前已找到最優序列,現在找到乙個新的數y
yy,若將y
yy插入序列,運算到dir
ty[x
]dirty[x]
dirty[
x]的第i
ii位與dir
ty[y
]dirty[y]
dirty[
y]的對應位時,可分以下情況
1.d ir
ty[x
][i]
==
1dirty[x][i] == 1
dirty[
x][i
]==1
,此時,若dir
ty[y
][i]
dirty[y][i]
dirty[
y][i
]為11
1,則沒有變化,若dir
ty[y
][i]
dirty[y][i]
dirty[
y][i
]為00
0,則會更差(與運算變為0,或運算不變)
2.d ir
ty[x
][i]
==
0dirty[x][i] == 0
dirty[
x][i
]==0
,此時,若dir
ty[y
][i]
dirty[y][i]
dirty[
y][i
]為11
1,則會加到1
11,若dir
ty[y
][i]
dirty[y][i]
dirty[
y][i
]為00
0,則不變
四種情況中,只有一種能加到,而且加了之後,只對x
xx有好處,對y
yy則毫無益處(不會使得值更優)
因此,我們只選擇乙個數。
要選擇乙個數,那麼肯定選擇最大的數,進行運算後,就是這個數的2倍,最後再按題意進行處理
所以,題目最終解法就是:
a ns
=max
(dir
ty[i
])∗2
ans = max(dirty[i]) * 2
ans=ma
x(di
rty[
i])∗
2 加上題目要求的輸出處理
#include
#include
using
namespace std;
int n, b, p, maxn;
int a[
100005];
intcounting
(int x,
int y,
int p)
return ans;
}//快速冪
intmain()
maxn *=2
;if(p ==1)
printf
("0");
else
printf
("%d"
,counting
(maxn +
233, b, p));
}
大河的序列
大河有一些襪子,但經常十分散亂的堆放著。有一天龍兒忍不住了,於是將襪子放到了乙個序列上 稱作襪子序列 每個襪子都有乙個dirtydirty值,定義襪子序列的dirtydirty值為max dir tylb itan ddir tyl 1bit and bita nddi rtyr d irty lb...
大河奔流的精神 俞敏洪
大河奔流的精神是什麼 一開始讀這本書的時候,我並沒有留意,沒有思考,思考書名給我什麼提示,只是簡簡單單想讀這本書。把書的第一章讀了,放下了一段時間,後來把書放在教室裡,之後便重新開始一次暢快的讀書之旅,最終終於把書讀完。回到最初的話題,大河奔流的精神是什麼 是堅持,是堅持不懈,是一天又一天的永不停息...
大河奔流的精神 俞敏洪
大河奔流的精神是什麼 一開始讀這本書的時候,我並沒有留意,沒有思考,思考書名給我什麼提示,只是簡簡單單想讀這本書。把書的第一章讀了,放下了一段時間,後來把書放在教室裡,之後便重新開始一次暢快的讀書之旅,最終終於把書讀完。回到最初的話題,大河奔流的精神是什麼 是堅持,是堅持不懈,是一天又一天的永不停息...