時間限制: 1 sec 記憶體限制: 128 mb
提交: 729 解決: 145
[提交] [狀態] [討論版] [命題人:admin]
題目描述
作為白玉樓的庭師,妖夢雖然不會n刀流,但是卻領悟了生命二刀流。然而我也是個劍的收藏者,家裡屯著n把劍,每一把劍都有乙個靈魂值a[i],由於一些劍之間可能有共鳴,所以我需要兩把契合度最高的劍。據妖夢所說,兩把編號為i,j劍的契合度為a[i] and a[j]。如何深得劍的靈魂呢?(即求最大值)
輸入第一行乙個整數n,代表藏劍數。
第二行n個整數,第i個整數表示a[i]。
輸出輸出包含乙個正整數,最好的兩把劍的契合度。
樣例輸入
5樣例輸出12 5 6 3 1
4提示
對於40%的資料 n ≤ 1,000
對於100%的資料 n ≤ 1,000,000,0 ≤ a[i] < 2^31
思路:高位1越多與運算的結果越大,首先對所有數從大到小排序,如果有兩個或更多數在第i位都為1,那麼答案一定是從這些數里得到的,每次用vector記錄這些數,因為已經排過序了,所以記錄的數肯定是高位為1的排在前面,然後對vector裡的數重複篩選,最後得出結果。
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define m(a,b) memset(a,b,sizeof(a))
#define pb push_back
typedef long long ll;
const int maxn = 100005+5;
const ll mod = 1000000007;
int a[(maxn<<2)+(maxn<<3)];
bool cmp(const int &a,const int &b)
int main()
sort(a+1,a+1+n,cmp);
vectorans,tmp;
for (int i=30;~i;--i) }}
if (ans.size()<2)
else
return 0;
}
UPC6358 庭師的利刃
時間限制 1 sec 記憶體限制 128 mb 提交 651 解決 117 提交 狀態 討論版 命題人 admin 題目描述 作為白玉樓的庭師,妖夢雖然不會n刀流,但是卻領悟了生命二刀流。然而我也是個劍的收藏者,家裡屯著n把劍,每一把劍都有乙個靈魂值a i 由於一些劍之間可能有共鳴,所以我需要兩把契...
UPC 6358 庭師的利刃
時間限制 1 sec 記憶體限制 128 mb 題目描述 作為白玉樓的庭師,妖夢雖然不會n刀流,但是卻領悟了生命二刀流。然而我也是個劍的收藏者,家裡屯著n把劍,每一把劍都有乙個靈魂值a i 由於一些劍之間可能有共鳴,所以我需要兩把契合度最高的劍。據妖夢所說,兩把編號為i,j劍的契合度為a i and...
庭師的利刃(暴力)
意思很明白,就是給你一堆數字給你。讓你求出 ai aj 的最大值。提供兩種方法,或者說是想法吧。首先先排一下序。第一種網上方法 ans只要加上某一位1匹配數 2 不斷更新o 31 n 第二種自己方法 不斷更新上限和下限不斷壓縮來找出答案。o n log n 差不多吧 includeusing nam...