題目描述
用線段樹維護三個值:區間最長空位長度,從左端點可以延伸的最長空位長度,從右端點可以延伸的最長空位長度。
#include#includeusing
namespace
std;
const
int n=2e6+7
;int
n,m;
intlen[n],max[n],maxl[n],maxr[n],lazy[n];
intqread()
returnx;}
void pushup(int
rt)void pushdown(int
rt)
else
lazy[rt]=0;}
void build(int l,int r,int
rt)void modify(int l,int r,int rt,int nowl,int nowr,int
v) pushdown(rt);
int mid=l+r>>1
;
if(nowl<=mid)modify(l,mid,rt<<1
,nowl,nowr,v);
if(mid1,r,rt<<1|1
,nowl,nowr,v);
pushup(rt);
}int query(int l,int r,int rt,int
p)int
main()
int tot=query(1,n,1
,x);
printf(
"%d\n
",tot);
modify(
1,n,1,tot,tot+x-1,1
); }
else
}return0;
}
洛谷 P1605 迷宮 USACO
1.problem description 迷宮 問題描述 給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和 終點座標,問 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮 中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。輸入樣例 輸...
洛谷 P1339 USACO09OCT 熱浪
有乙個 n 個點 m 條邊的無向圖,請求出從 s 到 t 的最短路長度 簡單的無向圖最短路問題,採用堆優化的dijkstra dijkstra 初始到所有點的距離標記為很大很大,兩個集合 已發現和未發現。將起點距離標記為0。之後,每次從未發現的節點集合中挑選距離起點最近的 單源最短路 放入已發現的節...
洛谷 P1134 USACO3 2 階乘問題
也就是字面上的意思,求出n!階乘的最右邊的非零位的值。用模擬加數論的方法,因為想要在末尾出現乙個0,那麼就一定會是10的倍數,而10 2 5,所以只要看1 n 現5的次數即可,因為2的倍數的數量一定是比5的倍數的數量多的。然後在循換中每次mod10求個位數,因為任何正整數相乘的個位數只與它們的個位數...