竞赛讨论区 > C题具体应该怎么想才是正确的?感觉怎么想都会被hack
头像
悲伤与快乐
编辑于 02-08 18:36 山东
+ 关注

C题具体应该怎么想才是正确的?感觉怎么想都会被hack

同上

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,y;
int ggg(vector<pair<char,char>>d)
{
    int i;
    int co1=0,co2=0;
    for(auto v:d)
    {
        if(v.first=='1')
        co1++;
        else
        co2++;
    }
    int minn=min(co1,co2);
    int ans=minn*y;
    int co11=0,co00=0;
    for(i=2*minn;i<d.size();i++)
    {
        if(d[i].second=='1')
        co11++;
        else
        co00++;
    }
    ans+=min(co11,co00)*y;
    int dd=d.size()-2*min(co11,co00)-2*minn;
    ans+=dd*x;
    return ans;
}
signed main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    
    cin>>n>>x>>y;
    string a,b,c;
    cin>>a>>b>>c;
    a=" "+a;
    b=" "+b;
    c=" "+c;
    int i;
    vector<pair<char,char>>d,f;
    for(i=1;i<=n;i++)
    {
        if(c[i]=='1')
        {
            if(b[i]==a[i])
            {
                d.push_back({a[i],b[i]});
                f.push_back({b[i],a[i]});
            }
        }
        else
        {
            if(a[i]!=b[i])
            {
                d.push_back({a[i],b[i]});
                f.push_back({b[i],a[i]});
            }
        }
    }
    if(2*x<y)
    {
        cout<<d.size()*x;
        return 0;
    }
    sort(d.begin(),d.end());
    sort(f.begin(),f.end());
    cout<<min(ggg(d),ggg(f));
    return 0;
}

全部评论

(3) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐