洛谷 P4932 瀏覽器 思維題

2022-03-25 22:57:56 字數 1029 閱讀 9378

題目大意:給你乙個序列,求滿足$x_\: xor\; x_$在二進位制下1的數量為奇數的數對數量

打月賽的時候真沒想出來,還是我太弱..

xor意義下,對於兩個數,假設它們兩個每一位都是2個0,或者乙個1乙個0,那麼xor之後的數中1的數量是直接相加

如果有同一位有2個1,兩個1xor會變成0,1的總數量-2,也不會影響1數量的奇偶性

那麼我們只需要統計二進位制下,奇數個1的數的個數,和偶數個1的數的個數即可

統計的過程要用到乙個套路,預處理出0~(2^16)裡每個數中1的數量

乙個數中1的數量就是高16位和低16位中1的數量相加嘛

注意,詢問的序列是從1開始的!因為這個我調了半天!

1

//luogu-judger-enable-o2

2 #include 3 #include 4 #include 5 #include 6

#define n 10000010

7#define ll long long

8#define ui unsigned int

9#define maxn (1<<16)

10#define rint register int

11using

namespace

std;

12//

re13

14int

gint()

1518

while(c>='

0'&&c<='9')

19return ret*fh;20}

21int

n;22

ll a,b,c,d;

23ui x[n];

24int cnt[(1

<<17)+100

];25

26int

main()

2737

else 38}

39 printf("

%lld\n

",odd*eve);

40return0;

41 }

P4932 瀏覽器(統計二進位制1的個數)

p4932 瀏覽器 有 n 個數,x 1,x 2,cdots,x n 問你有多少對 u,v 使得 x u operatornamex v 的二進位制表示中有奇數個 1 輸入六個整數,n,a,b,c,d,x 0 每個點的權值需要用如下的方式生成。x i ax 2 bx c bmod d n le 10...

思維題 排隊接水(洛谷 P1223)

題目描述 有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。純思維題,這道題最重要的就是,每個人的等待時間為不是ti,而是每個人前面的人等待時間之和,換個思維就是每個人的等待時間 這個人之後的人數。接水順序就是接水時間從小...

洛谷p1338末日的傳說(思維好題,數學)

題目暴力全排列是肯定不行的。比較難想啊,關鍵抓住字典序小也就是小的數盡量往前排,找剩餘的逆序對數!思考逆序對數需要用到數學排列組合的知識,長度為n的序列最多有n n 1 2個逆序對,組合數知識一算就知道。還需要long long才過 1 include 2 using namespace std 3...