1 条题解

  • 0
    @ 2026-10-18 23:39:01

    评分

    思路与复杂度

    扫描提交串,用布尔数组判断每题是否第一次出现,首次出现累加基础分。最后检查 l 到 r 是否全部出现,满足时再累加这些题的基础分。时间 O(m+n),空间 O(n),总分使用64位整数。

    正确性与边界

    首次出现标记恰好对应一次基础得分;额外得分只由最终覆盖条件决定。

    参考代码

    #include<bits/stdc++.h>
    using namespace std;int main(){ios::sync_with_stdio(0);cin.tie(0);int n,m,l,r;cin>>n>>m>>l>>r;vector<long long>a(n);for(auto&x:a)cin>>x;string s;cin>>s;vector<int>v(n);long long z=0;for(char c:s){int x=c-'0';if(!v[x])v[x]=1,z+=a[x];}bool ok=1;for(int i=l;i<=r;i++)ok&=v[i];if(ok)for(int i=l;i<=r;i++)z+=a[i];cout<<z<<"\n";}
    
    • 1

    信息

    ID
    843
    时间
    1000ms
    内存
    512MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者