將每個球按輸入順序編號,建立 它第幾個被扔掉->編號 的對映關係。
記錄當前在手裡的球的編號,按扔掉的順序查詢這個球的編號,看看這個球是逆時針轉到手裡更近還是順時針轉到手裡更近,即當前扔掉球的編號與當前手裡球的編號之間有幾個球。
樹狀陣列c[i]記錄編號i的球是否還在。
球是環形排列的,特殊處理一下。
對於扔掉乙個球之後下乙個落在手裡的球的編號,二分判定,找順時針方向第乙個有球的位置
#include #include#include
#include
#define ll long long int
using
namespace
std;
const
int maxn = 100100
;int
c[maxn];
intn;
intpostoid[maxn];
intidtopos[maxn];
int lowbit( int
x )int query( int
x )
return
res;
}void update( int x, int
val )
return;}
int bisearch( int l, int
r )
int ans = 0
;
while ( l <=r )
else l = mid + 1
; }
return
ans;
}int
main()
int cur = 1; //
當前手裡的
ll ans = 0
;
for ( int i = 1; i <= n; ++i )
else
if ( id >cur )
update( id, -1
); ++ans;
cur =bisearch( id, n );
}printf(
"%i64d\n
", ans );
}return0;
}
模擬 線段樹 hdu4262 Juggler
juggler 題目 題意 有個數字圓環。三種操作 逆時針轉乙個,順時針轉乙個,丟掉手中的那個的同時順時針的數字到你的手裡。每個操作都花費一秒。告訴你要求的出圈順序,求最小花費時間。注 開始在手中的球為1.題解 假設當前要移除的珠子為i,我們會發現無論左移還是右移都會得到同乙個序列,即移去某個數字對...
hdu 4262 線段樹優化
include include include includeusing namespace std define lson u 1 define rson u 1 1 define maxn 100005 int map maxn struct nodet maxn 2 void pushup i...
Trie樹(字典樹)HDU 1251
又稱單詞查詢樹,trie樹 是一種 樹形結構 是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的 字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比 雜湊樹高。根節點不包含字元,除根節點外每乙個節...