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 ...