klion26
klion26's blog
C++博客
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
|
聚合
|
管理
隨筆:71 文章:0 評論:17 引用:0
POJ 2453 瘋狂的位運算
這題是寧波區(qū)域賽的熱省賽中的一題……
后來偶然發(fā)現(xiàn)時POJ上的,而且有人用位運算搞過了,于是就去學(xué)位運算,通過Matrix67大牛的三篇文章學(xué)的,第四篇還沒看,(想看的可以去搜下Matrix67或者去我前面的文章找下,應(yīng)該是sgu那篇,可以找到鏈接)
這題可以這么想,比如原數(shù)x=0101110的下一個是01100011,你可以這樣想,以要比原數(shù)大,必須把原數(shù)的最右邊的一段1(連續(xù)的,如果只有一個的,就是一個)變成0,把這段1的右邊的第一個0變成1,然后再在所得的數(shù)的最右邊補1,知道1的位數(shù)一樣。
這樣的話,我們就可以這樣做了
設(shè)原數(shù)為x
然后t = x + (x & -x);//(x & -x) 取x的最右邊的一個1,因為"把原數(shù)的最右邊的一段1變成0"可以加上最右邊一個1
接下來就是補1的過程了,當(dāng)然可能不用補
好吧我們用一個函數(shù)得到x(10進制)在2進制表示下的1的個數(shù)(如果有看不懂的,建議先看下Matrix67大牛的位運算在看,當(dāng)然到那個時候基本你自己也可以寫了,不必要看我的了,呵呵)
函數(shù)如下
get
1
int
get
(
int
n)
2
{
3
n
=
(n
&
0x55555555
)
+
((n
>>
1
)
&
0x55555555
);
4
n
=
(n
&
0x33333333
)
+
((n
>>
2
)
&
0x33333333
);
5
n
=
(n
&
0x0F0F0F0F
)
+
((n
>>
4
)
&
0x0F0F0F0F
);
6
n
=
(n
&
0x00FF00FF
)
+
((n
>>
8
)
&
0x00FF00FF
);
7
n
=
(n
&
0x0000FFFF
)
+
((n
>>
16
)
&
0x0000FFFF
);
8
return
n;
9
}
這樣我們就基本是完成了。具體代碼如下,個人建議先自己想,實在想不出來之后再看我的代碼
CODE
1
/**/
/*
2
ID:Klion
3
PROG:POJ_2453
4
LANG:C++
5
*/
6
#include
<
iostream
>
7
using
namespace
std;
8
int
get
(
int
n)
9
{
10
/**/
/*
11
這里是錯的,因為這樣的話,會錯位,具體可以自己
12
手動算一下,可以用這個數(shù)11010011(211)
13
n = (n & 0xAAAAAAAA) + ((n >> 1) & 0xAAAAAAAA);
14
n = (n & 0xCCCCCCCC) + ((n >> 2) & 0xCCCCCCCC);
15
n = (n & 0xF0F0F0F0) + ((n >> 4) & 0xF0F0F0F0);
16
n = (n & 0xFF00FF00) + ((n >> 8) & 0xFF00FF00);
17
n = (n & 0xFFFF0000) + ((n >> 16) & 0xFFFF0000);
18
*/
19
n
=
(n
&
0x55555555
)
+
((n
>>
1
)
&
0x55555555
);
20
n
=
(n
&
0x33333333
)
+
((n
>>
2
)
&
0x33333333
);
21
n
=
(n
&
0x0F0F0F0F
)
+
((n
>>
4
)
&
0x0F0F0F0F
);
22
n
=
(n
&
0x00FF00FF
)
+
((n
>>
8
)
&
0x00FF00FF
);
23
n
=
(n
&
0x0000FFFF
)
+
((n
>>
16
)
&
0x0000FFFF
);
24
return
n;
25
}
26
int
main(
void
)
27
{
28
int
x;
29
int
t,b,c;
30
while
(scanf(
"
%d
"
,
&
x),x)
31
{
32
c
=
x
&
-
x;
33
t
=
x
+
c;
34
b
=
get
(x)
-
get
(t);
35
t
=
t
|
((
1
<<
b)
-
1
);
36
printf(
"
%d\n
"
,t);
37
}
38
return
0
;
39
}
40
發(fā)表于 2010-05-24 19:31
Klion
閱讀(336)
評論(0)
編輯
收藏
引用
所屬分類:
POJ
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
頂嵌杯--D 序列
頂嵌杯--C 字符串替換
頂嵌杯--B 取模
頂嵌杯--A 分數(shù)加減法
POJ 1273 網(wǎng)絡(luò)流入門題 ---EK算法
POJ 1014 && 1742 多重背包的O(VN)解法
POJ 3070
POJ 1661 Help Jimmy
POJ_3321 樹狀數(shù)組
POJ 3067 樹狀數(shù)組
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2010年4月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
(99)
DP(7)
(rss)
Linux學(xué)習(xí)之路(11)
(rss)
POJ(18)
(rss)
USACO(27)
(rss)
計算機專業(yè)(3)
(rss)
計算幾何
(rss)
數(shù)據(jù)結(jié)構(gòu)&字符串(14)
(rss)
數(shù)學(xué)(8)
(rss)
搜索(4)
(rss)
貪心(1)
(rss)
圖論(4)
(rss)
雜(2)
(rss)
隨筆檔案
(71)
2010年12月 (7)
2010年11月 (11)
2010年9月 (6)
2010年8月 (12)
2010年7月 (12)
2010年6月 (6)
2010年5月 (15)
2010年4月 (2)
好友鏈接
我的獨立域名
我的獨立域名
搜索
最新評論
1.?re: SQL Server 2005端口號設(shè)置
在程序中的數(shù)據(jù)庫連接字符串也應(yīng)該做相應(yīng)的更改,怎么操作啊?
--peijian
2.?re: SQL Server 2005端口號設(shè)置
如果是在本機,客戶端IP還是寫localhost嗎?
--的
3.?re: VMware 安裝RedHat9時光盤無法掛載的問題[未登錄]
嗯 收獲了 謝謝
--jz
4.?re: Ubuntu死機那點事
確實有用,我用到第3點,就可以了。
謝謝!
--Annie
5.?re: POJ_1195 二維樹狀數(shù)組
@yp
能有這效果,我表示非常高興
--klion26
閱讀排行榜
1.?Ubuntu死機那點事(4796)
2.?SQL Server 2005端口號設(shè)置(4713)
3.?POJ 1014 && 1742 多重背包的O(VN)解法(2940)
4.?三種簡單博弈問題的簡單介紹(2879)
5.?HDU_1907&2509 博弈(2293)
評論排行榜
1.?SQL Server 2005端口號設(shè)置(6)
2.?三種簡單博弈問題的簡單介紹(2)
3.?回歸CPP Blog(2)
4.?POJ_1195 二維樹狀數(shù)組(2)
5.?《自己動手寫操作系統(tǒng)》第一步(2)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 Klion
国产精品久久久久久久久软件
|
久久无码av三级
|
婷婷久久久亚洲欧洲日产国码AV
|
久久精品国产亚洲AV电影
|
精品国产一区二区三区久久久狼
|
亚洲午夜精品久久久久久人妖
|
久久久精品国产亚洲成人满18免费网站
|
少妇人妻综合久久中文字幕
|
久久精品国产亚洲av影院
|
久久精品国产精品亚洲人人
|
一本一本久久aa综合精品
|
99久久夜色精品国产网站
|
久久久久亚洲AV成人网人人网站
|
久久有码中文字幕
|
囯产极品美女高潮无套久久久
|
国产精品日韩深夜福利久久
|
久久久久久久97
|
亚洲综合伊人久久综合
|
热久久国产欧美一区二区精品
|
国产精品99精品久久免费
|
思思久久精品在热线热
|
国产精品内射久久久久欢欢
|
国内精品久久久久影院老司
|
久久99热国产这有精品
|
亚洲国产小视频精品久久久三级
|
久久超乳爆乳中文字幕
|
四虎影视久久久免费
|
久久精品中文字幕大胸
|
久久久久成人精品无码
|
久久精品国产亚洲AV麻豆网站
|
久久久精品国产Sm最大网站
|
精品免费久久久久久久
|
精品久久久久久久久免费影院
|
精品九九久久国内精品
|
免费久久人人爽人人爽av
|
国产精品成人精品久久久
|
久久久久亚洲AV成人片
|
精品久久久久久久国产潘金莲
|
9999国产精品欧美久久久久久
|
亚洲AV无码1区2区久久
|
色婷婷噜噜久久国产精品12p
|