博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P1705 爱与愁过火
阅读量:4942 次
发布时间:2019-06-11

本文共 1687 字,大约阅读时间需要 5 分钟。

题目背景

(本道题目隐藏了两首歌名,找找看哪~~~)

《爱与愁的故事第一弹·heartache》第三章。

爱与愁大神说这是ta的伤心指数,只不过现在好很多了,翻译只是看你无聊让你动动脑筋罢了(shit~~~)。虽然月落乌啼嘴上骂着:“我去年买了个表……纽曼表……”,但是结果还是请爱与愁大神去Pizza Hut吃了一顿。

题目描述

到了Pizza Hut,爱与愁大神由于不爽,所以存心想坑月落乌啼的钱,ta点了m样菜,每样菜ai元。月落乌啼预计只用n元,于是他让爱与愁大神重新从这m样菜中选r样。爱与愁大神还是想坑钱,于是ta打电话给你,让你编一个程序告诉ta有几种方案可以从m样菜中点取r样菜但是还能超过月落乌啼的预计n元。

输入输出格式

输入格式:

 

第1行:三个数 m,r,n。

第2行:m个数,每道菜需要的钱ai,两个数之间有空格。

 

输出格式:

 

只有一个整数,表示方案总数。

 

输入输出样例

输入样例#1: 
5 2 81 7 2 5 4
输出样例#1: 
4

说明

100%数据:m<=30,r<=m,m<=ai<=90 n<=2700

时限:前两个点1秒,中间两个点3秒,最后一个点6秒。

思路:动规

#include
#include
#include
#include
using namespace std;int n,m,T,sum;int num[40],vis[40];void dfs(int tot,int s,int pre){ if(tot==m){ if(s>T) sum++; return ; } for(int i=pre+1;i<=n;i++) if(!vis[i]){ vis[i]=1; dfs(tot+1,s+num[i],i); vis[i]=0; }}int main(){ scanf("%d%d%d",&n,&m,&T); for(int i=1;i<=n;i++) scanf("%d",&num[i]); dfs(0,0,0); cout<
40分暴力
#include
#include
#include
#include
using namespace std;int n,m,T;int sum,ans;int num[40];int f[40][3000];int main(){ scanf("%d%d%d",&n,&m,&T); for(int i=1;i<=n;i++) scanf("%d",&num[i]),sum+=num[i]; f[0][0]=1; for(int i=1;i<=n;i++) for(int j=m;j>=1;j--) for(int k=num[i];k<=sum;k++) f[j][k]+=f[j-1][k-num[i]]; for(int i=T+1;i<=sum;i++) ans+=f[m][i]; cout<

 

转载于:https://www.cnblogs.com/cangT-Tlan/p/7966174.html

你可能感兴趣的文章
mysql优化——show processlist命令详解
查看>>
Solr服务器搭建
查看>>
画世界怎么用光影_世界绘画经典教程:水彩光影魔法教程
查看>>
win+rsync+php,跨平台的fswatch+rsync同步备份
查看>>
vue2 cdn 加载html,vue项目中使用CDN加载
查看>>
数组转集合踩坑
查看>>
node.js的异步I/O、事件驱动、单线程
查看>>
vue cli3 子目录问题
查看>>
github.com访问慢解决
查看>>
微服务架构最强详解
查看>>
转:哈夫曼树详解
查看>>
.Net Core Identity外面使用Cookie中间件
查看>>
【坐在马桶上看算法】算法1:最快最简单的排序——桶排序
查看>>
C#中泛型之Dictionary
查看>>
强连通分量
查看>>
使用Code First模式开发如何更新数据库(转载)
查看>>
sqoop导出工具
查看>>
Codeforces Round #376 (Div. 2)
查看>>
Codeforces 607D Power Tree 线段树 (看题解)
查看>>
写在人生的路上——2016年上半年总结
查看>>