金中欢乐赛 A题

题目传送门

这道题就贪心.... 正的一坨和负的一坨间隔

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
#include<cstdlib>
#define LL long long
using namespace std;
const int M=500007;
LL read(){
    LL ans=0,f=1,c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
    while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
    return ans*f;
}
LL lx[M],rx[M],w[M];
LL n,k,tot;
LL cnt=1;
LL sum[M],ans;
bool f[M];
struct node{
    LL w,pos;
    bool operator<(const node &x) const{return w>x.w;}
};
priority_queue<node>q;
LL pd(LL x){return x>=0?x:-x;}
int main()
{
    //freopen("input.in","r",stdin);
    LL v;
    n=read(); k=read();
    for(int i=1;i<=n;i++){
        v=read();
        if(v*sum[cnt]>=0) sum[cnt]+=v;
        else sum[++cnt]=v;
    }
    if(sum[1]*sum[cnt]>=0) sum[1]=sum[cnt]+sum[1],cnt--;
    for(int i=1;i<=cnt;i++) 
        if(sum[i]>0) ans+=sum[i],tot++; 
    //printf("%lld\n",ans);
    if(tot<=k){printf("%lld\n",ans); return 0;}
    LL now=tot-k; //printf("[%lld]\n",ans);
    q.push((node){pd(sum[1]),1}); 
    lx[1]=cnt; rx[1]=2; w[1]=pd(sum[1]);
    q.push((node){pd(sum[cnt]),cnt});
    lx[cnt]=cnt-1; rx[cnt]=1; w[cnt]=pd(sum[cnt]);
    for(int i=2;i<cnt;i++)  
        q.push((node){pd(sum[i]),i}),lx[i]=i-1,rx[i]=i+1,w[i]=pd(sum[i]);//printf("%d\n",pd(sum[i])); 
    //printf("[%d]\n",now);
    while(now){
        node x=q.top(); q.pop();
        LL k=x.pos;
        if(f[k]) continue;
        //printf("%lld\n",w[k]);
        ans-=w[k]; now--;
        LL l=lx[k],r=rx[k];
        f[l]=1; f[r]=1;
        cnt++;
        sum[cnt]=sum[k]+sum[l]+sum[r];
        w[cnt]=pd(sum[cnt]);
        q.push((node){w[cnt],cnt});
        lx[cnt]=lx[l]; rx[cnt]=rx[r];
        rx[lx[l]]=cnt; lx[rx[r]]=cnt;  
    }
    //printf("%lld\n",cnt);
    printf("%lld\n",ans);
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/lyzuikeai/p/7082312.html

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值