CF234C 1300
题意
最后要形成形如前面从1k范围内全为负数,从k+1n范围内全为正数,没有0的存在,
那此时最少应该改变几个值。
解析
ca[i]统计前面到i一共有多少个>=0的,cb[i]代表后面到i一共有多少个<=0的
划分分界点k,求最小的ca[k] + cb[k+1]。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10,M = 1e6 + 10;
int n;
int a[N],ca[N],cb[N];
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++){
ca[i] = ca[i-1] + (a[i] >= 0);
}
for(int i=n;i;i--){
cb[i] = cb[i+1] + (a[i] <= 0);
}
int res = 1 << 30;
for(int i=1;i<n;i++){
res = min(res,ca[i] + cb[i+1]);
}
printf("%d",res);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】