题解:

暴搜+二分+剪枝

二分答案,暴力判断是否有解

然后加上剪枝

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=;
int rest,c[N],sum[N],s,a[N],n,m,b[N];
int dfs(int x,int y)
{
if (x<=)return ;
if (rest+sum[x]>s)return ;
for (int i=y;i<=n;i++)
if (c[i]>=b[x])
{
c[i]-=b[x];
if (c[i]<b[])rest+=c[i];
if (b[x]==b[x-]){if (dfs(x-,i))return ;}
else {if (dfs(x-,))return ;}
if (c[i]<b[])rest-=c[i];
c[i]+=b[x];
}
return ;
}
int pd(int x)
{
for (int i=;i<=n;i++)c[i]=a[i];
rest=;
return dfs(x,);
}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++)scanf("%d",&a[i]),s+=a[i];
scanf("%d",&m);
for (int i=;i<=m;i++)scanf("%d",&b[i]);
sort(a+,a+n+);sort(b+,b+m+);
for (int i=;i<=m;i++)sum[i]=sum[i-]+b[i];
while (sum[m]>s)m--;
int l=,r=m;
while (l<r)
{
int mid=(l+r)/;
if (pd(mid+))l=mid+;
else r=mid;
}
printf("%d",l);
}

最新文章

  1. 在Eclipse中使用建立使用Gradle做依赖管理的Spring Boot工程
  2. 记录在linux下的wine生活
  3. 使用&quot;立即执行函数&quot;(Immediately-Invoked Function Expression,IIFE)
  4. Hibernate学习(一)
  5. 自定义NSLog无时间
  6. flot中文说明文档 简版
  7. android intent 隐式意图和显示意图(activity跳转)
  8. SOCKET,TCP/UDP,HTTP,FTP
  9. MAC OSX使用篇
  10. PHP判断是中文还是英文
  11. Spring中Quartz动态设置cronExpression
  12. 使用TypeScript开发ReactNative应用的简单示例
  13. See you~(二维树状数组)
  14. vxworks下的串口测试程序
  15. POJ3580 SuperMemo splay伸展树,区间操作
  16. django中操作cookie与session
  17. 20155312 2016-2017-2 《Java程序设计》第八周学习总结
  18. 第三百八十节,Django+Xadmin打造上线标准的在线教育平台—将所有app下的models数据库表注册到xadmin后台管理
  19. linux中使用mysql数据库
  20. linux下的时间

热门文章

  1. 字符串分割(C++)(转载)
  2. Bi-shoe and Phi-shoe(欧拉函数/素筛)题解
  3. triggerHandler不执行事件默认值
  4. 伪类:after的使用以及结合attr来添加属性的技巧
  5. jQuery object and DOM Element
  6. ASP.NET MVC之Bundle压缩JS和CSS
  7. Java filter中的chain.doFilter详解
  8. FOJ-1001-Duplicate Pair
  9. hdu 3579 Hello Kiki 不互质的中国剩余定理
  10. python 函数返回函数