有乙個外星人控制了你的大腦。一開始你處於原點(0,0)。外星人有乙個由(r,u,d,l)組成的長度為m 的操作序列,分別代表(右,上,下,左)。
平面上有n 個關鍵點,每當外星人給出乙個操作,你需要在這個方向上找到最近的乙個關鍵點,並走到那個點上。保證輸入資料合法。
100%的資料,n,m≤100000,xi,yi≤200000。
這樣,我們搞2個權值線段樹,乙個存橫座標乙個存縱座標,每次查詢當前座標的前繼或者後續即可
複雜度o(mlgn)
#include
#include
#include
#define m 200010
#define ls s[x].l
#define rs s[x].r
using
namespace
std;
struct nod;
struct tree;
memset(rt,0,sizeof rt);
} inline
int newnode()
void ps(int x)
void insert(int l,int r,int& x,int p)
int m=l+r>>1;
if(p<=m) insert(l,m,ls,p);
else insert(m+1,r,rs,p);
ps(x);
} int getmax(int l,int r,int x)
else
} return l;
} int getmin(int l,int r,int x)
else
} return l;
} int getpre(int l,int r,int x,int p)
int getsuc(int l,int r,int x,int p)
void insert(int x,int y)
int pre(int x,int y)
int suc(int x,int y)
} rot,lin;
int n,m,x,y; char s[100010];
int main()
x=y=m; scanf("%s",s);
for(int i=0;iif(s[i]=='u') y=rot.suc(x,y);
if(s[i]=='d') y=rot.pre(x,y);
if(s[i]=='l') x=lin.pre(y,x);
if(s[i]=='r') x=lin.suc(y,x);
} printf("%d %d\n",x-m,y-m);
}
外星人的供給站
外星人指的是地球以外的智慧型生命。外星人長的是不是 與地球上的人一樣 並不重要,但起碼應該符合我們目前對生命基本形式的認識。比如,我們所知的任何生命都離不開液態水,並且都是基於化學元素碳 c 的有機分子組合成的複雜有機體。42 歲的天文學家 dr.kong 已經執著地觀測 zdm 777 星球十多年...
外星人的語言(進製轉換)
時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 nowcoder費了很大勁,終於和地外文明聯絡上。我們地球人通常有10根手指,因此我們習慣用10進製的數,而外星人的手指有16跟 8根等不等的數目,因此他們使用與我們不同的進製。為...
NYOJ 題目710 外星人的供給站
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 外星人指的是地球以外的智慧型生命。外星人長的是不是與地球上的人一樣並不重要,但起碼應該符合我們目前對生命基本形式的認識。比如,我們所知的任何生命都離不開液態水,並且都是基於化學元素碳 c 的有機分子組合成的複雜有機體。42歲的天...