题解:AT_abc395_f [ABC395F] Smooth Occlusion
AT_abc395_f [ABC395F] Smooth Occlusion 题解
by cwd2023
思路:
其实本题有多种做法,例如二分,差分约束等,这里介绍一种十分简洁的且只有十行代码的
首先,我们想让磨掉的牙最少,就等于保留尽可能多的牙,所以设
先考虑题目中的第二个条件,我们可以设
那么,为了保证题目中的第一个条件,我们再设
最后,记得将
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,u,d,sum,h=2e18,miu=1e18,mid=1e18,x;
int main() {
ios::sync_with_stdio(0),cin.tie(0);
cin>>n>>x;
for(ll i=1;i<=n;i++){
cin>>u>>d;
sum+=(u+d);
miu=min(miu+x,u);
mid=min(mid+x,d);
h=min(h,miu+mid);
}
cout<<sum-n*h<<"\n";
return 0;
}
最后,希望本篇题解对你有所帮助,感谢观看。
望管理员通过!