有点贪心的思想 最后一个数据过不去

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
typedef long long ll;
ll lb(ll x){
    return x&(-x);
}
int cnt;
struct ac{
   ll v,lb,id;
}a[maxn];
bool all(){
    for(int i=2;i<=cnt;++i){
        if(a[i].lb!=a[i-1].lb) return false;
    }
    return true;
}
map<int,bool> mmp;
int main(){
    int n;
    cin>>n;
    int v,cnt0=0;
    cnt=0;
    for(int i=1;i<=n;++i){
        cin>>v;
        if(v==0) {
            cnt0++;
            continue;
        }
        if(mmp[v]==0){
            a[++cnt].v=v;
            a[cnt].lb=lb(a[cnt].v);
            mmp[v]=1;
        }
    }
    if((cnt0==0&&cnt==1)||(cnt0==n)){ //全部一样(或全为0)
        cout<<0<<"\n";
        return 0;
    }
    if(cnt==1&&cnt0!=1){//除0外全部一样,但有0
        int f;
        for(int i=1;i<=cnt;++i){
            if(a[i].v!=0){
                f=a[i].lb;
                break;
            }
        }
        long long t=1;
        for(int i=1;i<=f-1;++i){
            t*=2;
        }
        cout<<t<<"\n";
        return 0;
    }
    ll s=0;
    if(all()&&cnt0!=0){//lb全一样且有0
        int f;
        for(int i=1;i<=cnt;++i){
            if(a[i].v!=0){
                f=a[i].lb;
                break;
            }
        }
        cout<<cnt*f<<"\n";
        return 0;
    }
    while(all()&&cnt0==0){
        s++;
        for(int i=1;i<=cnt;++i){
            a[i].v/=2;
            a[i].lb=lb(a[i].v);
        }
    }
    ll Min=20000000000;
    for(int i=1;i<=cnt;++i){
        Min=min(Min,a[i].lb);
    }
    for(int i=1;i<=s;++i){
        Min*=2;
    }
    cout<<Min*(cnt+(cnt0==0?0:1)-1)<<"\n";
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
04-30 17:45
本人简历上&nbsp;1&nbsp;个&nbsp;RAG&nbsp;项目&nbsp;+&nbsp;1&nbsp;个&nbsp;Agent&nbsp;demo;这次面的是AI岗一面前我以为:背完八股&nbsp;+&nbsp;把项目讲清楚,应该能稳过。0-5&nbsp;min:自我介绍&nbsp;+&nbsp;项目背景-&nbsp;顺利。讲清楚了我的&nbsp;RAG&nbsp;是给法律咨询场景做的,痛点是大模型不懂行业术语。5-20&nbsp;min:项目深挖(开始崩)-&nbsp;Q1:你的法律文档总共多少?切了多少个&nbsp;chunk?-&nbsp;我:约&nbsp;500&nbsp;份&nbsp;PDF,5&nbsp;万个&nbsp;chunk-&nbsp;Q2:500&nbsp;份&nbsp;PDF&nbsp;加起来才&nbsp;5&nbsp;万&nbsp;chunk?平均每份&nbsp;100&nbsp;个&nbsp;chunk,你切片粒度是多少?-&nbsp;我:512&nbsp;token-&nbsp;Q3:法律文档里"第三条第二款"和"第三条之二"是不同含义,你的切片会不会把它切散?-&nbsp;我:(沉默&nbsp;5&nbsp;秒)……应该会-&nbsp;Q4:那你怎么解决?-&nbsp;我:我可以加一个&nbsp;metadata……(开始编)❌&nbsp;第一次崩:切片粒度没考虑业务语义。20-35&nbsp;min:评测体系(继续崩)-&nbsp;Q:你怎么知道你的&nbsp;RAG&nbsp;有效?-&nbsp;我:我用&nbsp;Recall@5……-&nbsp;Q:评测集多少条?怎么构造的?-&nbsp;我:100&nbsp;条,我手工标注的-&nbsp;Q:100&nbsp;条够吗?分布怎么样?-&nbsp;我:分布……我没分-&nbsp;Q:那你的&nbsp;Recall@5&nbsp;是&nbsp;0.81,你怎么知道这个数字是好是坏?baseline&nbsp;是什么?-&nbsp;我:(沉默&nbsp;10&nbsp;秒)❌&nbsp;第二次崩:没有&nbsp;baseline,没分布分析,纯靠"看起来还行"。35-55&nbsp;min:Agent&nbsp;部分(彻底崩)-&nbsp;Q:你的&nbsp;Agent&nbsp;demo&nbsp;用了几个工具?-&nbsp;我:3&nbsp;个,搜索、计算器、文档查询-&nbsp;Q:当用户问一个问题,你的&nbsp;Agent&nbsp;怎么决定调哪个工具?-&nbsp;我:用&nbsp;ReAct,让模型自己决定-&nbsp;Q:模型决策错了怎么办?-&nbsp;我:我加了个&nbsp;reflection……-&nbsp;Q:reflection&nbsp;失败&nbsp;3&nbsp;次后怎么处理?-&nbsp;我:(沉默&nbsp;15&nbsp;秒)……我没想过❌&nbsp;第三次崩:异常路径完全没设计。55-65&nbsp;min:业务理解&nbsp;+&nbsp;反问-&nbsp;Q:你觉得字节做&nbsp;AI&nbsp;应用最大的瓶颈是什么?-&nbsp;我:算力?数据?-&nbsp;Q:你看过哪些字节最近发的&nbsp;AI&nbsp;产品?-&nbsp;我:豆包、扣子……-&nbsp;Q:扣子是&nbsp;Agent&nbsp;平台还是工作流平台?-&nbsp;我:(再次沉默)❌&nbsp;第四次崩:对面试公司业务一无所知。
牛客41664080...:切片粒度问得好
面试官拷打AI项目都会问...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务