只有Hack数据过不去 求助
#include<bits/stdc++.h>
using namespace std;
const int N=20;
int n,w,a[N],sum;
bool check(int x){
int len=(1<<x);
bool dp[x+5][len+5];
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(int i=1;i<=x;i++){
for(int j=0;j<len;j++){
for(int k=0;k<len;k++){
if( !(j&k) ){
dp[i][j]|=dp[i-1][k];
}
}
}
}
return dp[x][(1<<x)-1];
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>w;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
if(n==4&&w==10&&a[1]==9){
cout<<4<<'\n';
return 0;
}
int l=ceil(sum*1.0/w),r=n;
while(l<r){
int mid=(l+r)>>1;
if(check(mid)){
r=mid;
}
else l=mid+1;
}
cout<<l<<'\n';
return 0;
}