题目背景

明天就是校园活动了,小明作为场地的负责人,将一切都布置好了。但是在活动的前几天,校园里的灯却都坏掉了,无奈之下,只好再去买一批灯。但是很遗憾的是,厂家看马上要过年了,就没有在进货了,现在只剩下n个发光值不同的灯,作为负责人,你需要,想办法配出合适的灯。

题目描述

厂家有n盏剩下的灯,小明需要m盏灯,因为活动举办在晚上,所以这些灯的光值和不能低于k,现在小明想知道,有多少种选灯的方案,以及每种方案选出的m盏灯。

输入输出格式

输入格式:

共n+1行,第一行有三个整数:n,m,k,表示厂家有n盏(灯),小明需要m盏,从n盏中选的m盏的光线和不能小于k。

接下来的1行,共n个整数,第i个数表示第i盏灯的发光值。

输出格式:

先输出一个整数,表示方案数,接下来的几行,每行m+1个数,前m个数表示每个方案选择的灯的序号,第m+1个数表示这个方案的光值和。

如果没有方案,第一行就输出-1,第二行输出最大的光亮值。

输入输出样例

输入样例#1:

3 2 5
1 3 2
输出样例#1:

1
2 3 5
输入样例#2:

4 2 7
2 5 3 1
输出样例#2:

2
1 2 7
2 3 8
输入样例#3:

5 2 5
2 2 2 2 2
输出样例#3:

-1
4

说明

  • 数据说明

3<=m<=n<=20;

1<=k<=a[1]+a[2]...+a[n];

样例就自己看哈~。

输出用序号排序

题目大意:有n个灯,选m个,要求选的m个灯的光值和大于k,求方案数及每个方案。

题解:搜索...

刚开始提交30分...思考人生.....

后来发现没有输出方案数...改了就A了...蠢哭....

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std; int n,m,k,flag,max_ans,bo[],ans[];
vector<int>res[]; void dfs(int now,int has,int sum){
if(has==m){
if(sum>=k){
flag++;
for(int i=;i<=m;i++)
res[flag].push_back(ans[i]);
res[flag].push_back(sum);
}else{
max_ans=max(max_ans,sum);
}
return;
}
if(now==n+)return;
ans[has+]=now;
dfs(now+,has+,sum+bo[now]);
ans[has+]=;
dfs(now+,has,sum);
} int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)scanf("%d",&bo[i]);
dfs(,,);
if(!flag){
printf("-1\n");
printf("%d\n",max_ans);
}else{
printf("%d\n",flag);
for(int i=;i<=flag;i++){
for(int j=;j<res[i].size();j++)
printf("%d ",res[i][j]);
printf("\n");
}
}
return ;
}

最新文章

  1. easyui的datagrid form(表单)提交到后台转对象的时候中文出现乱码
  2. Reporting Services 错误案例一则
  3. WPF下的仿QQ图片查看器
  4. Codeforces Round #352 (Div. 2) A Summer Camp
  5. Java中request请求之 - 带文件上传的form表单
  6. Magento架构分析,Magento MVC 设计分析
  7. PAT乙级 1025. 反转链表 (25)
  8. 【转】C# 中访问修饰符
  9. iOS 正则表达式小结
  10. 在.NET下学习Extjs(第三个案例 Array的过滤方法(filter))
  11. win7 64位下如何安装配置mysql-5.7.4-m14-winx64
  12. linux下编译.so 和.a 可能出现的问题 ?
  13. linux_无密登录
  14. oracle sql 知识小结
  15. stl_alloc.h分配器
  16. [leetcode-442-Find All Duplicates in an Array]
  17. java_eclipse添加DID实现自动提示
  18. UNIX网络编程——通过UNIX域套接字传递描述符和 sendmsg/recvmsg 函数
  19. vim模式下报错E37: No write since last change (add ! to override)
  20. 总结,为什么要重写hashset的hashcode()和equals()?

热门文章

  1. 用Putty连接Linux
  2. Delphi列表控件TListView定位到某一行。
  3. Centos内核版本升级
  4. Dynamic Resource – 动态资源
  5. Java 学习 day01
  6. protect,internal的区别
  7. 九度OJ 1167:数组排序 (排序)
  8. sed相关
  9. php xmlrpc使用示例
  10. Hadoop实战-Flume之Sink Failover(十六)