定義一種數,當他的二進位制中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....