1. 程式人生 > >往者不可諫,來者猶可追

往者不可諫,來者猶可追

問題

給定整數m以及n各數字A1,A2,..An,將數列A中所有元素兩兩異或,共能得到n(n-1)/2個結果,請求出這些結果中大於m的有多少個。

輸入描述:

第一行包含兩個整數n,m.

第二行給出n個整數A1,A2,…,An。

資料範圍

對於30%的資料,1 <= n, m <= 1000

對於100%的資料,1 <= n, m, Ai <= 10^5

輸出描述:

輸出僅包括一行,即所求的答案

思路

使用字典樹(TrieTree)從高位到低位建立字典,

再使用每個元素依次去字典中查對應高位異或結果。

若m對應位置為1, 則當前元素在該位的異或也必須為1;

若m對應位置為0,則加上與當前元素異或結果為1的元素個數;

將所有元素查詢後的結果相加,然後再除以2,就是最終的結果。

程式碼

#include<iostream>

using namespace std;
const int N = 1e6 + 10;
int a[N];

struct TrieNode{
    int count;
    TrieNode* next[2];
    TrieNode(){
        count = 0;
        next[0] = NULL;
        next[1] = NULL;
    }
};

void
Insert(TrieNode* root, int value){ TrieNode* p = root; for(int i=31; i>=0; i--) { int temp = (value >> i) & 1; if (p->next[temp] == NULL){ p->next[temp] = new TrieNode(); } p = p->next[temp]; p->count++; } } long
long Find(TrieNode* root, int value, int m) { TrieNode *p = root; long long result = 0; for(int i=31; i>=0; i--) { int val = (value>>i) & 1; int mval = (m>>i) & 1; if(mval == 1) { p = p->next[val^1]; } else { if (p->next[val^1] != NULL) { result += p->next[val^1]->count; } p = p->next[val]; } if (p == NULL) break; } return result; } int main(){ int m,n; long long result = 0; cin>>n>>m; TrieNode* root = new TrieNode(); for(int i=0; i<n; i++) { cin>>a[i]; Insert(root, a[i]); } for(int i=0; i<n; i++) { result += Find(root, a[i], m); } cout<<(result>>1)<<endl; return 0; }

相關推薦

不可來者

問題 給定整數m以及n各數字A1,A2,..An,將數列A中所有元素兩兩異或,共能得到n(n-1)/2個結果,請求出這些結果中大於m的有多少個。 輸入描述: 第一行包含兩個整數n,m. 第二行給出n個整數A1,A2,…,An。 資料範圍 對於30

來者

JSP本質上是一個Servlet,Jav服務端網頁,可以在HTML頁面寫Java程式碼。 JSP指令碼片段 <% %>:所有的Java程式碼都在這個裡面寫,儘量少在JSP中寫Java程式碼 <%-- --%>:JSP註釋 <!--

悟已往之不來者

/************************************************************************************ 程式名稱:串列埠傳送程式下載指令(晶振頻率18.432MHz) 功能說明: 收到使用者

悟已往之不來者

程序和執行緒的區別:首先程序和執行緒都是一個時間段的描述,是CPU工作時間段的描述。一般來說,程序是資源的分配單位,執行緒是CPU在程序內切換的單位,執行緒屬於程序。程序更傾向於記憶體管理的概念,他在

【程式人生】2018與2019年終總結——悟已往之不來者

       春秋代序、寒暑易節,眨眼間就到了年終了。而年終又是一個總結的時節,也是給來年做計劃的時節。這裡,我也趁這個時機,給過往做一個總結吧。        實際上我本應該在元旦前夕來做總結的,這樣似乎更有儀式感些,元旦那幾天

來者如臨高山以觀逝水--天貓品牌推薦演算法比賽總結

四個月的比賽總算是落下帷幕了,作為單執行緒的動物,沒有辦法邊寫總結報告(其實就是拖延症)。比賽結束,總算可以靜下心來想一些東西。 我是從年級的群裡知道阿里的這個比賽的,一直都推薦挺感興趣的,那段時間又剛好看了一些推薦方面的書籍,就拿準備拿這個機會練練手,在第一賽季的時候比賽

之不 來者

符蓉珊 符海瑛 符海英 符海瑛 符何瑛 符小菲 符睿智 符語嫣 符天翔 符天翔 符芮嘉 符文 符程 符自然 符李顏 符海瑛 符虹清 符天恩 符斌 符運波 符浩 符立 符若兮 符司晨 符爾嵐 符若萱 符詩嘉 符思嘉 符斯嘉 符穎欣 符詩嘉 符思晨 符詩晴 符詩雨 符雨桐 符素敏

Oracle編輯數據時提示:這些查詢結果不可更新請使用ROWI或者SELECT……FOR UPDATE獲得更新結果

對數 date 一個 更新 bsp ron 我們 pda from 我們在對Oracle數據庫進行操作時,有時會在查詢完結果後想要對其中的某些數據進行操作,當我們點擊編輯(一個鎖標誌)是,會提示我們上述問題中的錯誤:這些查詢結果不可更新,請使用ROWI或者SELECT……F

實現不同vlan間PC不可互訪而不同vlan的PC均訪問服務器的特殊效果(華為)

服務器 屬於 color 數據 .com 不可 server1 col 效果 實現不同vlan間PC不可互訪,而不同vlan的PC均可訪問服務器的特殊效果,具體要求如下; 1.在交換機中創建相關vlan;2.修改端口模式與pvid;3.修改端口允許通過的數據幀;4.結果驗證

【小菜鳥】本人部落格沒有任何侵權的想法僅僅是總結了一些前輩們的經驗做了一些小筆記發表。 在以往學習過程中遇到太多太多的小問題網上都有答案只不過太多太雜解決問題的答案也是不可 總是事倍功半。特此總結出一些自己的小經驗希望能夠幫助大家。

小菜鳥 本人部落格,沒有任何侵權的想法,僅僅是總結了一些前輩們的經驗,做了一些小筆記發表。 在以往學習過程中,遇到太多太多的小問題,網上都有答案,只不過太多太雜,解決問題的答案也是可遇不可求, 總是事倍功半。特...

字串常量不可修改陣列修改的原因

一般情況下,想要獲得字串str=”kuai lai xiu gai wo”中的某個字元可以通過類似陣列方式獲得,str[i],但是卻不可以通過str[i] = ‘xx’來修改。除非切割字串或者轉換為陣列。 var str = "beijing"; str[

設定select只讀不可編輯傳遞

一、設定disabled屬性 <select name="selectname" id="selectid" disabled="true"> 效果為只讀,沒有點選和下拉,字型變為灰色 在

共享一個目錄任何人都訪問不用輸入密碼即可訪問要求只讀

目錄 eve lob host etc server 工作組 ini main 1、服務端配置 [[email protected]/* */ ~]# yum install -y samba samba-client # 安裝 Samba [[e

PLSQL 打開時出現"動態執行表不可訪問本會話的自動統計被禁止"

訪問權限 app 對話 導航 如果 name 局限 方式 點擊 這個報錯信息在不同的PL/SQL Developer版本都會出現,從上面詳細的報錯提示信息中我們可以判斷得到,報錯原因不在工具本身。在此,詳細記錄一下這個小問題的三種處理方法。1.第一種處理方法(不推薦)就是在

HDU 1312 Red and Black(bfsdfs均個人傾向bfs)

spec int ger time scrip follow stdio.h stack line 題目代號:HDU 1312 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Li

【原創】IE11驚現無厘頭Crash BUG(三招搞死你的IE11並提供重現代碼)!

解決問題 html 窗口 前言 stat 錯誤 ont spa 環境 前言 很多人都知道我們在做FineUI控件庫,而且我們也做了超過 9 年的時間,在和瀏覽器無數次的交往中,也發現了多個瀏覽器自身的BUG,並公開出來方便大家查閱: 分享IE7一個神奇的BUG(不是

阿裏雲宣布開放開源AliSQL數據庫性能提升70%

cau ss5 music uav 阿裏雲 vts 提升 m60 lis %E8%8B%B9%E6%9E%9C%E6%8E%A8%E5%87%BA%E6%96%B0%E5%8D%9A%E5%AE%A2%EF%BC%8C%E5%AE%A3%E4%BC%A0%E5%85%A8%

使用php寫出一個驗證碼圖片由於寬度被定死了所以操作起來不太方便之後盡量寫靈活成為一個調用的函數。

新手 put 由於 -type draw cat 驗證 font 寬度 <?php // Due to the height and width of the captcha image is fixed, not so easy to use, change

overflow妙用--去除默認滾動條內容仍滾動

parent wid 文本 borde 去除 -- blog border 溢出 在開發中我們往往要去除默認滾動條,但是其在豎直方向的滾動效果仍然需要。 <div id="parent"> <div id="child">

讓我為你介紹一個神器:Chimee一套擴展的 H5 視頻播放器解決方案

包括 api 人員 保持 打包 需求 解耦 日常 開發 Chimee(讀“奇米”, [t??‘m?:])是由奇舞團開源的一套 H5 視頻播放器解決方案,由奇舞團視頻雲前端團隊結合在業務和視頻編解碼方向的沈澱積累傾心打造。 Chimee 支持 MP4、M3U8、FLV 等