比赛 |
国庆欢乐赛2 |
评测结果 |
TAWWWWTTTTTTTTTTTTTT |
题目名称 |
毛一琛 |
最终得分 |
5 |
用户昵称 |
梦那边的美好CE |
运行时间 |
46.633 s |
代码语言 |
C++ |
内存使用 |
3.43 MiB |
提交时间 |
2025-10-04 11:54:36 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m[30],ans,idx,siz,vis[30];
vector<int>v(30);
int dfs(int l,int r){
// cout<<"dfs: "<<l<<" "<<r<<endl;
// cout<<"idx: "<<idx<<endl;
int suml=0,sumr=0;
if(l==r)return v[l];
if(r==l+1){
if(v[l]==v[r]){
ans++;
// cout<<"相邻!"<<l<<" "<<r<<endl;
}
return v[l]+v[r];
}
//一个断点
for(int i=l;i<r;i++){
suml=dfs(l,i);sumr=dfs(i+1,r);
if(suml==sumr){
// cout<<l<<" "<<r<<" "<<endl;
for(int p=l;p<=r;p++){
// cout<<v[p]<<" ";
}
ans++;
return suml+sumr;
}
}
//2
for(int i=l;i<r-1;i++){
for(int j=i+1;j<r;j++){
suml=dfs(l,i)+dfs(j+1,r);sumr=dfs(i+1,j);
if(suml==sumr){
// cout<<l<<" "<<r<<" "<<endl;
// for(int p=l;p<=r;p++){
// cout<<v[p]<<" ";
// }
// cout<<endl;
ans++;
return suml+sumr;
}
}
}
int sum=0;
for(int i=l;i<=r;i++)sum+=v[i];
return sum;
}
void solve(int sizs,int l){
if(sizs>=n)return;
for(int i=l;i<=n;i++){
if(!vis[i]){
v[++idx]=m[i],vis[i]=1;
dfs(1,idx);
solve(sizs+1,l+1);
}
}
}
signed main(){
freopen("subsets.in","r",stdin);freopen("subsets.out","w",stdout);
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
// v[1]=1;v[2]=2;v[3]=3;
// dfs(1,3);
// cout<<ans;
cin>>n;
bool lll=1;
for(int i=1;i<=n;i++){
cin>>m[i];
if(m[1]!=m[i])lll=0;
}
if(lll){
cout<<pow(2,n-1)-1;
return 0;
}
if(n==1){
cout<<0;
return 0;
}
if(n==2){
int ans=0;
if(m[1]==m[2])ans++;
cout<<ans;
return 0;
}
sort(m+1,m+n+1);v.clear();
solve(2,1);
cout<<ans;
return 0;
}