hdu5491 位操作模擬

2021-08-02 17:12:05 字數 772 閱讀 8368

定義一種數,當他的二進位制中1的個數在s和t之間,就叫他 next數,給定乙個數,已經是next數了,問你下乙個next數是誰。

比賽的時候沒有想出來,用暴力列舉的方法肯定超時。以為是規律題,但是找不到,後來發現就是乙個模擬。

每次如果1的個數大了,就找右邊第乙個,1,加上他的數, 他就變成0了,

如果1的個數少了,就找第乙個0,變成1,

一次改變可能不會改變,慢慢的改,因為從最右找,肯定是最小的變化,所以就可以這樣了。

第乙個數的範圍在int,在下乙個的未必就在int,所以用long long

#include 

#include

#include

using

namespace

std;

/*比賽的時候沒有想到這道題。

*/const

int maxn=200000;

int main()

//if(ans>=s&&ans<=t) break;

if(ans>t)

}m+=(1ll<<(j-1));

}else

if(ansfor(int i=1;iif(b[i]==0)

}m+=(1ll<<(j-1));加上他,他就變了啊。哈哈

}else

break;

}printf("case #%d: ",tt);

printf("%lld\n",m);}}

return

0;}

hdu4630 hdu4638 線段樹離線操作

兩題都是樸素想法列舉兩個端點o n 2 超時,那麼列舉其中乙個端點用線段樹維護另乙個端點。關鍵在於沒插入乙個端點後都是成段更新,否則又會退化到o n 2 ps 兩題用c 交都比g 快500ms以上。include include include include include includeusin...

解決virtualBox 不能選擇64位作業系統

在window 10 64位的系統上安裝oracle vm virtualbox 之後準備在虛擬機器中裝系統,發現虛擬機器系統選項中只有32位選項沒有64位選項,通過查詢原因是由於cpu沒有開啟虛擬化。解決方案 開啟cpu虛擬化 重啟系統按f2進入bios設定cpu虛擬化。進入bios後 找到類似的...

centos7 32位minimal實操問題集

1.couldn t resolve host mirrorlist.centos.org 問題定位 看了一些資料,總結來說,網路原因。虛擬機器ping www.baidu.com,失敗 ping 14.215.177.39,失敗 虛擬機器使用的是橋接模式 直接連線物理網路。物理機ping www....