-
个人简介
十年OI一场空 不开long long见祖宗
#include <bits/stdc++.h> using namespace std; int n,m,a[30],b[30][30],t[30],len=1,sum[30],cnt; bool vis[1000005]; vector <int> v; bool cmp(vector <int> a,vector <int> b){ return a.size()<b.size() || a.size()==b.size()&&a<b; } void dfs(int x,int step){ t[step]=x; vis[x]=1; bool flag=0; for(int i=1;i<=n;i++){ if(sum[i]<a[i]){ flag=1; } } if(flag==0){ cnt++; vector <int> tmp(t+1,t+step+1); if(cnt==1||(tmp.size()<v.size()||tmp.size()==v.size()&&tmp<v)){ v=tmp; } } for(int i=x+1;i<=m;i++){ for(int j=1;j<=n;j++){ sum[j]+=b[i][j]; } dfs(i,step+1); vis[i]=0; for(int j=1;j<=n;j++){ sum[j]-=b[i][j]; } } } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } cin>>m; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>b[i][j]; } } dfs(0,0); cout<<v.size()<<" "; for(auto i:v){ cout<<i<<" "; } return 0; }
binary_search
//这玩意儿怎么自己写
对了,Alt+f4加好友
-
最近活动
-
Stat
-
Rating