[PS] Latin America 2013 Problem C Counting ones
####acm archive
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4538
####backjoon online judge
https://www.acmicpc.net/problem/9527
####PDF file
pdfをダウンロード
魏永珍さんは本題ができないと言ったので、彼にやらせたが、難しい.
ソリューションを探してもソースコードが理解できないので、新しいソリューションを考え出して、私のような人のために解答を書きました.
本問題は,1で表されるビットの個数を最後尾とするアルゴリズムである.
整数の範囲は10^16であるため,繰り返しの文にTLEが現れるため,一般的なpopbitアルゴリズムでは本問題を解決できない.
そのため、私たちはルールを見つけて、すぐに危害を見つけなければなりません.
まず下の表を見てみましょう
まず、問題はAからBの位の和です.
Bへの積算ビット和からA−1の積算ビット和を減算すると正解となる.
上の表では積算ビット数に適切な点火方式を指定していないので、2^nの場合だけ別のものを選んでみます.
今では以下のような点火式が得られます.
ある数xのときxより小さい2^nの累積ビット和を求めることができるようになった.
例えば、
まず、
では今.
これをバイナリで表すと次のようになります.
彼らの一番左の1人の数は
さらに12から右端位の
次は、このソリューションのソースコードです.
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4538
####backjoon online judge
https://www.acmicpc.net/problem/9527
####PDF file
pdfをダウンロード
魏永珍さんは本題ができないと言ったので、彼にやらせたが、難しい.
ソリューションを探してもソースコードが理解できないので、新しいソリューションを考え出して、私のような人のために解答を書きました.
本問題は,1で表されるビットの個数を最後尾とするアルゴリズムである.
整数の範囲は10^16であるため,繰り返しの文にTLEが現れるため,一般的なpopbitアルゴリズムでは本問題を解決できない.
そのため、私たちはルールを見つけて、すぐに危害を見つけなければなりません.
まず下の表を見てみましょう
まず、問題はAからBの位の和です.
Bへの積算ビット和からA−1の積算ビット和を減算すると正解となる.
上の表では積算ビット数に適切な点火方式を指定していないので、2^nの場合だけ別のものを選んでみます.
今では以下のような点火式が得られます.
ある数xのときxより小さい2^nの累積ビット和を求めることができるようになった.
例えば、
12
の累積ビット和を求めようとするとまず、
8
の累積ビットと13
を求める.では今.
9 ,10 ,11 ,12
のビット数を要求するだけです.これをバイナリで表すと次のようになります.
彼らの一番左の1人の数は
12-8
人4
人です.この4つのサンプルを加えるとさらに12から右端位の
100
である4
の累積位和を減算すると計算は終了する.次は、このソリューションのソースコードです.
long long pop_accumulation_bit(long long x) {
if (x == 0)return 0;
long long r = 1;
int i;
for (i = 0; x >> (i + 1); i++){
r = r * 2 + (1LL << i) - 1;
}
return r + proc(~(1LL << i)&x) + (x - (1LL << i));
}
Copyright (C) 2016 (KimBom) all rights reserved.
Reference
この問題について([PS] Latin America 2013 Problem C Counting ones), 我々は、より多くの情報をここで見つけました https://velog.io/@springkim/PS-Latin-America-2013-Problem-C-Counting-onesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol