BZOJ1171 大sz的遊戲

2021-09-07 01:28:35 字數 761 閱讀 5088

f[i]=min(f[j])+1,線段j與線段i有交,且l[i]-l[j]<=l。

線段j與線段i有交等價於y[j]>=x[i],x[j]<=y[i]。

因為l[i]遞增,所以可以維護乙個單調遞增的j,表示[j,i-1]範圍內都可以更新f[i]。

用k-d樹動態維護即可,時間複雜度$o(n\sqrt)$。

#include#includeconst int n=250010,inf=2000000000;

int n,l,i,j,k,root,cmp_d,x,y;

struct pa[n];

inline void read(int&a)

struct nodet[n];

inline bool cmp(node a,node b)

inline void up(int x)

if(t[x].r)

}inline void up2(int x)

int build(int l,int r,int d,int f)

inline void change(int x,int p)

void ask(int x)

if(t[x].d[0]<=x&&t[x].d[1]>=y&&t[x].vall)change(a[j++].p,inf);

k=inf,x=a[i].y,y=a[i].x,ask(root);

if(kprintf("%d\n",a[i].f} return 0;

}

1171 大整數的因子

1171 大整數的因子 時間限制 1000 ms 記憶體限制 65536 kb 提交數 5166 通過數 2992 題目描述 已知正整數k滿足2 k 9,現給出長度最大為30位的十進位製非負整數c,求所有能整除c的k。輸入 乙個非負整數c,c的位數 30。輸出 若存在滿足 c k 0 的k,從小到大...

一本通1171 大整數的因子

題目描述 已知正整數k滿足2 k 9,現給出長度最大為30位的十進位製非負整數c,求所有能整除c的k。輸入 乙個非負整數c,c的位數 30。輸出 若存在滿足 c k 0 的k,從小到大輸出所有這樣的k,相鄰兩個數之間用單個空格隔開 若沒有這樣的k,則輸出 none 輸入樣例 30 輸出樣例 2 3 ...

BZOJ 2464 小明的遊戲

time limit 10 sec memory limit 128 mb submit 829 solved 338 submit status discuss 小明最近喜歡玩乙個遊戲。給定乙個n m的棋盤,上面有兩種格仔 和 遊戲的規則很簡單 給定乙個起始位置和乙個目標位置,小明每一步能向上,下...