标签:小猫 int 爬山 ret 20 CH2201 ans return getchar
一道很基础的深搜题,数据范围不大,稍加剪枝即可通过。
将重量降序排列,对于已经选了的车,尝试当前的猫能不能坐,如果全部尝试失败,则另用一辆车。
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 typedef long long ll; 5 inline int read() { 6 int ret=0,f=1; 7 char c=getchar(); 8 while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();} 9 while(c<='9'&&c>='0') ret=ret*10+c-'0',c=getchar(); 10 return ret*f; 11 } 12 using namespace std; 13 int n,a[20],use[20],w; 14 int ans; 15 int cmp(int x,int y) { 16 return x>y; 17 } 18 void dfs(int now,int sum) { 19 if(sum>ans) return ; 20 if(now==n+1) { 21 ans=min(ans,sum); 22 return ; 23 } 24 for(int i=1;i<=sum;i++) 25 if(a[now]+use[i]<=w) { 26 use[i]+=a[now]; 27 dfs(now+1,sum); 28 use[i]-=a[now]; 29 } 30 use[sum+1]=a[now]; 31 dfs(now+1,sum+1); 32 use[sum+1]=0; 33 } 34 int main() { 35 n=read(); w=read(); 36 for(int i=1;i<=n;i++) a[i]=read(); 37 sort(a+1,a+n+1,cmp); 38 ans=n; 39 dfs(1,0); 40 printf("%d\n",ans); 41 return 0; 42 }AC Code
标签:小猫,int,爬山,ret,20,CH2201,ans,return,getchar 来源: https://www.cnblogs.com/shl-blog/p/10581741.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。