障礙點數和詢問點數都是1e5 座標範圍為1e9(實際資料既然有大於1e9的)
乙個點的下方或左邊存在必敗點,則為必勝點,否則為必敗點
同一行的障礙會把這一行分成很多段,段與段之間是互不影響的。
考慮同一段的點,若其中乙個點為必敗點,則之後的點一定是必勝點,也就是說要找到第乙個必敗點
但是有很多行,直接列舉會t
乙個空行會把第乙個沒有必敗點的位置變成有必敗點
如果有
x x
行連續的空行,則就是把前
x' role="presentation">x
x個沒有必敗點的位置變成有必敗點
#include
#include
#include
#include
#include
#include
#include
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
using
namespace
std;
typedef pair pii;
const
int n=600010,max=1e9+5e7;
inline
char nc()
inline
void read(int &x)
int t,n,q;
vector
sb,za[n];
vector
qy[n];
pii b[n],q[n];
int tag[n*50],tot[n*50],ls[n*50],rs[n*50],cnt,rt,ans[n],ll[n*50],rr[n*50];
void cl(int &g,int l,int r)
void push(int g)
}void up(int g)
void set0(int &g,int x,int l,int r)
void set1(int &g,int l,int r,int l,int r)
int query(int g,int l,int r,int l,int r)
if(r<=mid) return query(ls[g],l,r,l,mid);
else
if(l>mid) return query(rs[g],l,r,mid+1,r);
int ret=query(ls[g],l,mid,l,mid);
if(~ret) return ret;
return query(rs[g],mid+1,r,mid+1,r);
}int find(int x)
}int main()
read(q);
for(int i=1;i<=q;i++)
read(q[i].fi),read(q[i].se),sb.push_back(q[i].fi);
sort(all(sb)); sb.erase(unique(all(sb)),sb.end());
for(int i=1;i<=n;i++)
for(int i=1;i<=q;i++)
for(int x=0;x1); za[x].push_back(max+1);
sort(all(za[x])); sort(all(qy[x]));
vector
fail;
for(int i=0;i1;i++)
if(za[x][i]+1
1]) }
for(int i=0;iif(!fail.size() || qy[x][i].fi>*fail.rbegin())
ans[qy[x][i].se]=1;
else
ans[qy[x][i].se]=*lower_bound(all(fail),qy[x][i].fi)!=qy[x][i].fi;
}for(int i=1;i1;i++) set0(rt,za[x][i],0,max);
if(x+1
int pos=find(sb[x+1]-sb[x]-1);
if(~pos) set1(rt,0,pos,0,max);}}
for(int i=1;i<=q;i++)
for(int i=0;ifor(int i=1;i<=cnt;i++) ls[i]=rs[i]=tag[i]=0; cnt=rt=0;
sb.clear();
} return
0;}
再來一道線段樹的題。
b 單點更新2 time limit 3000msmemory limit 32768kb64bit io format i64d i64u submit status description 很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。這讓很多學生很反感。不管...
一天一道演算法題 線段樹
題目 模板 線段樹1 rmq問題 range minimum maximum query 和求區間和的問題可以用暴力法做,時間複雜度為o n 2 用在本題會超時,所以我們選擇線段樹做。線段樹是一種用於區間操作的資料結構,用二叉樹構造。如圖。線段樹的每個節點代表了乙個區間。防止超時,用了lazy標記。...
每週一道資料結構(四)A 演算法 博弈樹 剪枝
前陣子考試學了a 演算法 博弈樹和回溯,自己真是愚蠢至極,根本沒就搞明白這些,所以對於這些演算法問道的話就不能說清楚,也記不住,所以才有了這篇筆記。在這裡感謝面試我的那位工程師 啟發式資訊 用於幫助減少搜尋量的與問題有關的資訊或知識。啟發式搜尋 使用啟發資訊指導的搜尋過程叫做啟發式搜尋。估價函式 定...