Educational Codeforces Round 81 (Rated for Div. 2)F(线段树)
预处理把左集划分为大小为1~i-1时,把全部元素都移动到右集的代价,记作sum[i]。 然后枚举终态时左集的大小,更新把元素i 留在/移动到 左集的代价。 树状数组/线段树处理区间修改/区间查询 1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 #define ll long long 5 const int N=2e5+7; 6 struct Tree{ 7 ll minn,lazy; 8 }tree[N<<2]; 9 ll sum[N];//前缀和 10 inline void build(int root,int l,int r){ 11 if(l==r){ 12 tree[root].minn=sum[l];//1~l的a[i]之和 13 tree[root].lazy=0; 14 return; 15 } 16 int mid=(l+r)>>1; 17 build((root<<1),l,mid); 18 build((root<<1|1),mid+1,r); 19 tree[root].minn=min(tree[(root<<1)].minn,tree[(root<<1|1)].minn);//up 20 return; 21 } 22 inline