51nod1496最小異或和 亂搞

2021-08-28 07:59:23 字數 866 閱讀 3397

description

乙個集合包含一組相互不同的數字。現在我們要去尋找乙個集合,他要滿足如下性質:

對於所有 x(x∈s) ,要滿足l ≤ x ≤ r;

1 ≤ |s| ≤ k;

設s中第i個元素是 si ;那麼 f(s)=s1 ⨁ s2 ⨁ … ⨁ s|s| 的值要盡可能小。

sample input

8 15 3

sample output

1這道題k=1,2,4的情況比較顯然,k=3,你設r的從左往右第二個進製為z,t=(1<<(z+1))-1,若l<=t,則可用三個數合成:r,t,r^t

#include

#include

using

namespace std;

typedef

long

long ll;

ll _min

(ll x, ll y)

ll bin[41]

;int

main()

}else

if(k >=4)

else

if(r - l ==2)

else

if(r - l ==3)

}else

printf

("0\n");

}else

else

if(u ==1)

p -=1

;if(bin[p]-1

>= l)

printf

("0\n");

else

printf

("1\n");

}else}}

return0;

}

51nod 最小正字段和

1065 最小正子段和 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 收藏 關注 n個整數組成的序列a 1 a 2 a 3 a n 從中選出乙個子串行 a i a i 1 a j 使這個子串行的和 0,並且這個和是所有和 0的子串行中最小的。例如 4,1,5,2...

51nod 1312 最大異或和

很顯然我們求出一組線性基來,如果有m個基,那麼可以構造n m 1個最大異或值 而對於線性基中的元素,除了最大的元素,我們用最大異或值異或掉每個元素累加進答案 而不是把線性基中的元素處理成乙個下三角矩陣 include include include include include include d...

51nod1312 最大異或和

基準時間限制 1 秒 空間限制 131072 kb 分值 320 有乙個正整數陣列s,s中有n個元素,這些元素分別是s 0 s 1 s 2 s n 1 現在你可以通過乙個操作來更新陣列。操作方法如下 選擇兩個不同的數i j 0 i,j 你可以進行任意多次操作,問最後生成的陣列s的元素和 sum s ...