解題思路:一開始感覺是圖論最大流題,但是有些細節感覺沒法處理。後來再仔細一想,可以用線段樹+貪心來做。但是又有點想偏了,想成優先區間最小的部分,其實應該是優先右邊界最小的
#include#define n 100001
using namespace std;
typedef long long ll;
struct node
s[n*3];
struct node2
p[n];
int x[n];
void build(int l,int r,int rt)
build(l,(l+r)/2,2*rt);
build((l+r)/2+1,r,2*rt+1);
s[rt].w=min(s[2*rt].w,s[2*rt+1].w);
}int query(int l,int r,int rt)
int mid=(s[rt].l+s[rt].r)/2;
if(s[rt].c>0)
if(r<=mid)
return query(l,r,2*rt);
else
if(l>mid)
return query(l,r,2*rt+1);
else }
void update(int l,int r,int rt,int c)
if(s[rt].c>0)
int mid=(s[rt].l+s[rt].r)/2;
if(r<=mid)
update(l,r,2*rt,c);
else
if(l>mid)
update(l,r,2*rt+1,c);
else
s[rt].w=min(s[2*rt].w,s[2*rt+1].w);
}bool cmp(node2 a,node2 b)
sort(p,p+q,cmp);
ll ans=0,tp;
for(int i=0;iprintf("%lld\n",ans);
return 0;
}
L3 017 森森快遞 (30 分
森森開了一家快遞公司,叫森森快遞。因為公司剛剛開張,所以業務路線很簡單,可以認為是一條直線上的n個城市,這些城市從左到右依次從0到 n 1 編號。由於道路限制,第i號城市 i 0,n 2 與第 i 1 號城市中間往返的運輸貨物重量在同一時刻不能超過c i 公斤。公司開張後很快接到了q張訂單,其中j張...