Yxy7952
2024-11-20 16:44:35
题目传送门
有两个序列
两个操作:
花费
花费
最后输出花费的最小时间。
取反:如果
我们可以把题目最后一句话:
你需要用若干次操作将
a 全变为b 。
理解成:
你需要用若干次操作将
b 全部变为0 。
看到操作
设编号为
如果在
之后我们还要让剩下的(
所以总结:我们假设在
最后将所有花费的时间取一个最小值就是答案了。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,a[200005],s[200005],ans=1e9,sum=0;
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i];
for(int i=0;i<=n;i++){
ans=min(ans,i-s[i]+s[n]-s[i]);
}
cout<<ans;
return 0;
}