求助,最后一个点WA,80分,用vector乱搞
查看原帖
求助,最后一个点WA,80分,用vector乱搞
341049
xtracer楼主2021/2/13 20:48

RT

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
vector<ll> f,cundang;
ll v,n,tmp;
ll ans=2147483647,now;
bool flag=true;
void get_back(){
    ll x=f[0];
    f.erase(f.begin());
    f.push_back(x);
}
int main(){
    cin>>v>>n;
    for(ll i=0;i<n;i++){
        cin>>tmp;
        f.push_back(tmp);
    }
    sort(f.begin(),f.end());
    reverse(f.begin(),f.end());
    cundang=f;
    while(f!=cundang or flag){
        if(flag)flag=!flag;
        now=0;
        for(ll i=0;i<n;i++){
            now+=f[i];
            if(now>v){
                now-=f[i];
                break;
            }
        }
        now=v-now;
        ans=min(now,ans);
        get_back();
    }
    cout<<ans;
    return 0;
}

主要就是枚举所有情况,选最小值qwq

2021/2/13 20:48
加载中...