輸入輸出
輸入樣例複製
input 1:
6 31 1 1 0 0 0
input 2:
6 31 1 0 1 0 0
input 3:
6 311 8 2 1 3 9
輸出樣例複製
output 1
1 1output 2
1 0output 3
11 1
說明題解:認真審題 連續子串行
對於or,顯然or的數越多越大,所以整個序列or在一起就是答案
對於and,將每個數字轉為二進位制,對於每一位,若前面包括自己有》=k個連續的1,則該位可為1
例子,當k=2
110010
011101
101110
最終 110010 110010
011101 011101
101110 101110 16 12
選前兩個
const
inf='1230.in';
ouf='1230_2.out';
maxn=1000000;
var a,f:array[0..maxn,0..33]of longint;
val:array[0..33]of longint;
n,k,ymw,ans1,ans2,sum:longint;
i,j:longint;
function max(a,b:int64):longint;
begin
if a>b then exit(a) else exit(b);
end;
procedure init;
var i,j:longint;
x:int64;
begin
readln(n,k);val[1]:=1;
for i:=2 to 33 do
val[i]:=val[i-1]*2;
for i:=1 to n do
begin
read(x);
ans1:=ans1 or x;
while x>0 do
begin
inc(f[i,0]);
f[i,f[i,0]]:=x mod 2;
x:=x div 2;
end;
ymw:=max(ymw,f[i,0]);
end;
for i:=1 to n do
for j:=1 to ymw do
if f[i,j]<>0 then f[i,j]:=f[i-1,j]+1;
end;
begin
// assign(input,inf);reset(input);
// assign(output,ouf);rewrite(output);
init;
for i:=k to n do
begin
sum:=0;
for j:=1 to ymw do
if f[i,j]>=k then sum:=sum+val[j];
ans2:=max(ans2,sum);
end;
writeln(ans1,' ',ans2);
//close(input);close(output);
end.
NOIP2018複習 A(樹形DP)
時間限制 1000ms記憶體限制 256000kb 題目描述 lyh童鞋的手辦非常多,以至於他專門種了一棵樹來放置手辦 為了展現自己的收藏lyh決定從收藏樹上選取一些手辦展示 已知lyh的每個手辦都有不同的美麗值,第i個節點上有乙個美麗值為ai的手辦。lyh認為一種選取手辦的方案是合法的當且僅當選出...
Noip2018 填數遊戲
耳熟能詳,就不多說了 對於乙個不會推式子的蒟蒻,如何在考場優雅地通過此題 手玩樣例,發現對於 n 1 ans 2 m 對於 n 2 ans 4 times 3 或者乾脆打出 n,m le 3 的表 肉眼觀察法,發現似乎有 f n,m 1 3f n,m 但這並不是正確的,但如果你僅僅是這麼認為了,你仍...
NOIP2018複習 射擊(堆 貪心)
時間限制 2000ms 記憶體限制 65536kb 題目描述 有問題,找副連,無聊的時候當然也可以找他啦。小w找到了他的叔叔 東廠廠長 宇宙超級無敵老ws yy。他們叔侄兩個商量之後決定用彈弓打破社群裡的一些窗戶,但是彈弓每秒只能徹底打破一扇窗戶。而且如果某戶窗戶的主人回來了的話,他們就不能進行破壞...