凸包好題
我一開始想的是線段樹或平衡樹維護最大字首和,但是區間修改很噁心,後來想分塊,發現貌似可以做,修改的話,中間的塊打標記,兩邊的暴力重構,查詢的話就是整塊二分斜率為零的地方,邊上的暴力查詢。$o(nsqrt(n)log(n))$
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7view code#define n 100050
8#define inf 0x7fffffffffffffff
9#define int long long
10using
namespace
std;
11struct
point
14 point(int a,int b)
15int
operator * (point a)
16 point operator + (point a)
17 point operator - (point a)
18bool
operator
< (const point & a)const
22}p[n],k;
23 vector v[1005
];24
intbe[n],en[n],n,nn,m;
25int
s[n],r[n];
26void
init()33}
34}35void work(int
x)42}43
void update(int x,int l,int r,int
val)
50 s[x]=::r[x]=0;51
work(x);52}
53int query(int
x)63
return p[v[x][ans]].x[1]+s[x]+::r[x]*(v[x][ans]-en[x-1]-1
);64}65
signed main()
74for(int i=1;i<=be[n];i++)en[i]=min(i*nn,n);
75init();
76 scanf("
%lld
",&m);
77int
o,x,y,z,ans;
78while(m--)
88for(int i=be[y]+1;i<=be[n];i++)
89 s[i]+=(y-x+1)*z;90}
91else
103}
104return0;
105 }
BZOJ2388 旅行規劃
分塊,每一塊維護字首和,觀察發現,一次區間加操作對於 l 前,r後的區間裡相對的大小關係沒有影響,對於 l r 裡,將每個位置放在平面內作為乙個點 i si 那麼相當於給區間裡加了乙個斜率。每個塊維護乙個凸包 上凸下凸應該都可以,下文以上凸為例 如果這個塊被完整覆蓋,就打個斜率的標記,否則暴力重構凸...
BZOJ2388 旅行規劃
bzoj2388 旅行規劃 又是一道氪金題。bzoj 氪金無極限。附上大美洛谷的題面 洛谷p4192 旅行規劃 oivillage是乙個風景秀美的鄉村,為了更好的利用當地的旅遊資源,吸引遊客,推動經濟發展,xkszltl決定修建了一條鐵路將當地n個最著名的經典連線起來,讓遊客可以通過火車從鐵路起點 ...
BZOJ2388 旅行規劃
bzoj2388 旅行規劃 試題描述 oivillage是乙個風景秀美的鄉村,為了更好的利用當地的旅遊資源,吸引遊客,推動經濟發展,xkszltl決定修建了一條鐵路將當地n個最著名的經典連線起來,讓遊客可以通過火車從鐵路起點 1號景點 出發,依次遊覽每個景區。為了更好的評價這條鐵路,xkszltl為...