神仙构造

分成x个1和一堆>=w-x的大物品 (x<=20 w>=50)

则拼成w的方案中有且仅有一个大物品

若最终序列中有x个1,有一个大物品为w-k,可以提供C(x,k)种方案

F[i][j]表示最终序列有i个1,方案数为j的最少大物品数

我也没算过为什么20就够了

但是20就是够了

模数这个神奇的东西没有用场

#include<cstdio>
using namespace std;
int C[25][25],F[25][20005],Pre[25][20005];
void Pre_C(){
for (int i=0; i<=20; i++) C[i][0]=1;
for (int i=0; i<=20; i++)
for (int j=1; j<=i; j++)
C[i][j]=C[i-1][j]+C[i-1][j-1];
}
int main(){
Pre_C();
for (int i=0; i<=20; i++){
for (int j=1; j<=20000; j++) F[i][j]=1e9;
for (int j=0; j<=20000; j++)
for (int k=0; k<=i; k++)
if (j+C[i][k]<=20000 && F[i][j+C[i][k]]>F[i][j]+1){
F[i][j+C[i][k]]=F[i][j]+1;
Pre[i][j+C[i][k]]=k;
}
}
int T;
scanf("%d",&T);
while (T--){
int w,P,k;
scanf("%d%d%d",&w,&P,&k);
for (int i=1; i<=20; i++)
if (F[i][k]+i<=40){
printf("%d\n",F[i][k]+i);
for (int j=1; j<=i; j++) printf("%d ",1);
while (k){
int K=Pre[i][k];
k-=C[i][K];
printf("%d ",w-K);
}
printf("\n");
break;
}
}
return 0;
}

  

最新文章

  1. Pro ASP.NET MVC 5 Framework.学习笔记.6.3.MVC的必备工具
  2. excel的常用公式
  3. 洛谷P1930 亚瑟王的宫殿 Camelot
  4. iOS 开发之粒子效果
  5. iOS使用技能 - 短信,语言验证码的获取与验证小结
  6. 邮件发送小demo
  7. Java---StringBuffer()方法的简单应用
  8. COCO-Android开发框架公布
  9. Ceph RBD CephFS 存储
  10. codefroces 55D Beautiful numbers
  11. java.util.ConcurrentModificationException 记一次坑
  12. SQL行转列与列转行(转)
  13. java_26 缓冲流
  14. nginx常用配置
  15. C++ 容器:顺序性容器、关联式容器和容器适配器
  16. mybatis JdbcTypeInterceptor - 运行时自动添加 jdbcType 属性
  17. mybatis 不整合spring 入门小例子
  18. 添加或删除 HTML dom元素
  19. MQTT的学习研究(三)moquette-mqtt 的使用之mqtt服务发布主题信息
  20. UVA-11090 Going in Cycle!! (平均值最大回路)

热门文章

  1. 【干货】JavaScript DOM编程艺术学习笔记4-6
  2. 【干货】JavaScript DOM编程艺术学习笔记1-3
  3. OpenCV之cvAddWeighted直接C语言实现版addWeighted,应对上下平滑融合拼接
  4. ElasticSearch 5学习(5)——第一个例子
  5. 阿里 EasyExcel 7 行代码优雅地实现 Excel 文件生成&amp;下载功能
  6. IOS 控件器的创建方式(ViewController)
  7. ORACLE的raw属性
  8. POJ2112 Optimal Milking---二分+Floyd+网络流
  9. mongodb索引 全文索引之相似度查询
  10. vuejs挂载点,模板与实例的关系