tle 54pts求条
  • 板块P1120 小木棍
  • 楼主wuyugu
  • 当前回复3
  • 已保存回复4
  • 发布时间2025/8/3 14:24
  • 上次更新2025/8/3 19:39:45
查看原帖
tle 54pts求条
1125456
wuyugu楼主2025/8/3 14:24
#include<bits/stdc++.h>
using namespace std;
int k[51],n,ma,sum;
bool dfs(int len,int clen,int i,int kkk){
    //cout<<sum<<" "<<len<<" "<<clen<<" "<<i<<endl;;
    if(sum==clen)return true;
    if(!clen)clen = len,i=ma;
    if(sum < clen)return false;
    if(i <= 0)return false;
    if(sum < 0)return false;
    for(int j=0;j<=k[i] && i*j<=clen;j++){
        k[i] -= j;clen -= i*j;sum -= i*j;
        //cout<<string(kkk,' ')<<"try "<<i<<"*"<<j<<"  :";
        bool ret = dfs(len,clen,i-1,kkk+1);
        k[i] += j;clen += i*j;sum += i*j;
        if(clen==i*j && !ret)return false;
        if(ret)return true;
    }
    return false;
}
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        int t;cin>>t;
        k[t]++;
        ma = max(ma,t);
        sum += t;
    }
    for(int i=ma;i<=sum;i++){
       // cout<<i<<endl;
        if(sum%i==0 && dfs(i,i,ma,0)){
            cout<<i;break;
        }
    }
}
2025/8/3 14:24
加载中...