1 条题解
-
0赵青海 (huhe) LV 7 SU @ 2021-8-7 20:49:57
C++ :
#include <iostream> #include <algorithm> #include <set> using namespace std; typedef long long LL; typedef pair<LL,int> PLI; const int N=1e5+5; int n,k; int l[N],r[N]; LL d[N]; void delete_node(int x){ r[l[x]]=r[x]; l[r[x]]=l[x]; } int main() { ios::sync_with_stdio(false); cin>>n>>k; for(int i=0;i<n;i++) cin>>d[i]; for(int i=n-1;i;i--) d[i]-=d[i-1]; set<PLI> s; d[0] = d[n] = 1e15; for(int i=0;i<=n;i++) { s.insert({d[i],i}); l[i]=i-1; r[i]=i+1; } LL ans=0; while(k--){ auto x=s.begin(); LL v=x->first; int p=x->second,left=l[p],right=r[p]; ans+=v; s.erase(x); s.erase({d[left],left}); s.erase({d[right],right}); delete_node(left); delete_node(right); d[p]=d[left]+d[right]-d[p]; s.insert({d[p],p}); } cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 58
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 49
- 已通过
- 42
- 上传者