klion26
klion26's blog
C++博客
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
|
聚合
|
管理
隨筆:71 文章:0 評(píng)論:17 引用:0
POJ 2453 瘋狂的位運(yùn)算
這題是寧波區(qū)域賽的熱省賽中的一題……
后來偶然發(fā)現(xiàn)時(shí)POJ上的,而且有人用位運(yùn)算搞過了,于是就去學(xué)位運(yùn)算,通過Matrix67大牛的三篇文章學(xué)的,第四篇還沒看,(想看的可以去搜下Matrix67或者去我前面的文章找下,應(yīng)該是sgu那篇,可以找到鏈接)
這題可以這么想,比如原數(shù)x=0101110的下一個(gè)是01100011,你可以這樣想,以要比原數(shù)大,必須把原數(shù)的最右邊的一段1(連續(xù)的,如果只有一個(gè)的,就是一個(gè))變成0,把這段1的右邊的第一個(gè)0變成1,然后再在所得的數(shù)的最右邊補(bǔ)1,知道1的位數(shù)一樣。
這樣的話,我們就可以這樣做了
設(shè)原數(shù)為x
然后t = x + (x & -x);//(x & -x) 取x的最右邊的一個(gè)1,因?yàn)?把原數(shù)的最右邊的一段1變成0"可以加上最右邊一個(gè)1
接下來就是補(bǔ)1的過程了,當(dāng)然可能不用補(bǔ)
好吧我們用一個(gè)函數(shù)得到x(10進(jìn)制)在2進(jìn)制表示下的1的個(gè)數(shù)(如果有看不懂的,建議先看下Matrix67大牛的位運(yùn)算在看,當(dāng)然到那個(gè)時(shí)候基本你自己也可以寫了,不必要看我的了,呵呵)
函數(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
}
這樣我們就基本是完成了。具體代碼如下,個(gè)人建議先自己想,實(shí)在想不出來之后再看我的代碼
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
這里是錯(cuò)的,因?yàn)檫@樣的話,會(huì)錯(cuò)位,具體可以自己
12
手動(dòng)算一下,可以用這個(gè)數(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
閱讀(348)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
POJ
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
頂嵌杯--D 序列
頂嵌杯--C 字符串替換
頂嵌杯--B 取模
頂嵌杯--A 分?jǐn)?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年5月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
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
31
1
2
3
4
5
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
(99)
DP(7)
(rss)
Linux學(xué)習(xí)之路(11)
(rss)
POJ(18)
(rss)
USACO(27)
(rss)
計(jì)算機(jī)專業(yè)(3)
(rss)
計(jì)算幾何
(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)
好友鏈接
我的獨(dú)立域名
我的獨(dú)立域名
搜索
最新評(píng)論
1.?re: SQL Server 2005端口號(hào)設(shè)置
在程序中的數(shù)據(jù)庫(kù)連接字符串也應(yīng)該做相應(yīng)的更改,怎么操作啊?
--peijian
2.?re: SQL Server 2005端口號(hào)設(shè)置
如果是在本機(jī),客戶端IP還是寫localhost嗎?
--的
3.?re: VMware 安裝RedHat9時(shí)光盤無法掛載的問題[未登錄]
嗯 收獲了 謝謝
--jz
4.?re: Ubuntu死機(jī)那點(diǎn)事
確實(shí)有用,我用到第3點(diǎn),就可以了。
謝謝!
--Annie
5.?re: POJ_1195 二維樹狀數(shù)組
@yp
能有這效果,我表示非常高興
--klion26
閱讀排行榜
1.?Ubuntu死機(jī)那點(diǎn)事(4809)
2.?SQL Server 2005端口號(hào)設(shè)置(4736)
3.?POJ 1014 && 1742 多重背包的O(VN)解法(2958)
4.?三種簡(jiǎn)單博弈問題的簡(jiǎn)單介紹(2897)
5.?HDU_1907&2509 博弈(2316)
評(píng)論排行榜
1.?SQL Server 2005端口號(hào)設(shè)置(6)
2.?三種簡(jiǎn)單博弈問題的簡(jiǎn)單介紹(2)
3.?回歸CPP Blog(2)
4.?《自己動(dòng)手寫操作系統(tǒng)》第一步(2)
5.?POJ_1195 二維樹狀數(shù)組(2)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 Klion
麻豆久久久9性大片
|
久久香蕉国产线看观看精品yw
|
天天做夜夜做久久做狠狠
|
久久精品一本到99热免费
|
久久久青草久久久青草
|
久久久网中文字幕
|
久久精品国产第一区二区三区
|
久久久久久毛片免费看
|
国产亚洲美女精品久久久久狼
|
成人综合久久精品色婷婷
|
久久96国产精品久久久
|
77777亚洲午夜久久多人
|
国产成人久久精品麻豆一区
|
日产精品久久久一区二区
|
久久国产三级无码一区二区
|
国产∨亚洲V天堂无码久久久
|
久久综合偷偷噜噜噜色
|
久久伊人中文无码
|
999久久久国产精品
|
久久久久国产一级毛片高清版
|
亚洲AV日韩精品久久久久
|
久久综合视频网
|
亚洲精品无码久久不卡
|
亚洲国产精品久久66
|
99久久国语露脸精品国产
|
久久水蜜桃亚洲av无码精品麻豆
|
avtt天堂网久久精品
|
欧美亚洲国产精品久久高清
|
久久久久久一区国产精品
|
狠狠综合久久综合中文88
|
久久久中文字幕
|
91精品国产高清久久久久久91
|
久久久久18
|
久久91这里精品国产2020
|
久久99精品久久久久久不卡
|
草草久久久无码国产专区
|
久久本道综合久久伊人
|
久久亚洲欧洲国产综合
|
久久国产色av免费看
|
久久久久AV综合网成人
|
国产精品美女久久久m
|