博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vijos p1198——最佳课题选择
阅读量:4947 次
发布时间:2019-06-11

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

描述

Matrix67要在下个月交给老师n篇论文,论文的内容可以从m个课题中选择。由于课题数有限,Matrix67不得不重复选择一些课题。完成不同课题的论文所花的时间不同。具体地说,对于某个课题i,若Matrix67计划一共写x篇论文,则完成该课题的论文总共需要花费Ai*x^Bi个单位时间(系数Ai和指数Bi均为正整数)。给定与每一个课题相对应的Ai和Bi的值,请帮助Matrix67计算出如何选择论文的课题使得他可以花费最少的时间完成这n篇论文。

格式

输入格式

第一行有两个用空格隔开的正整数n和m,分别代表需要完成的论文数和可供选择的课题数。

以下m行每行有两个用空格隔开的正整数。其中,第i行的两个数分别代表与第i个课题相对应的时间系数Ai和指数Bi。

对于30%的数据,n<=10,m<=5;

对于100%的数据,n<=200,m<=20,Ai<=100,Bi<=5。

输出格式

输出完成n篇论文所需要耗费的最少时间。

样例1

样例输入1

10 32 11 22 1

样例输出1

19

限制

各个测试点1s

提示

样例说明:

4篇论文选择课题一,5篇论文选择课题三,剩下一篇论文选择课题二,总耗时为2*4^1+1*1^2+2*5^1=8+1+10=19。可以证明,不存在更优的方案使耗时小于19。

 

 

 

还是背包,先预处理出每一个课题选i个课题的花费,然后f[i][j]表示前i个课题选j篇论文的最小值。状态转移方程:

f[i][j]=min(f[i][j],f[i-1][j-k]+c[i][k]);
1 #include
2 using namespace std; 3 const int maxn=205; 4 const int maxm=25; 5 long long f[maxm][maxn];//前i个课题选j篇论文的最小值 6 long long a[maxm],b[maxm]; 7 long long c[maxm][maxn];//第i个课题选j篇论文的时间 8 int m,n; 9 long long min(long long a,long long b)10 {11 if(a

 

 

 

 

转载于:https://www.cnblogs.com/937337156Zhang/p/6044448.html

你可能感兴趣的文章
fegin 调用源码分析
查看>>
Linux的基本命令
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
sql 语法大全
查看>>
SQLite移植手记1
查看>>
Java AmericanFlagSort
查看>>
Mysql远程连接报错
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
sqlServer去除字段中的中文
查看>>
HashMap详解
查看>>
Adobe Scout 入门
查看>>
51nod 1247可能的路径
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
jq工具函数(九)使用$.extend()扩展Object对象
查看>>
如何监视性能和分析等待事件
查看>>
PAT 1058. 选择题(20)
查看>>
理解MapReduce计算构架
查看>>
python爬虫Day2:爬取豆瓣电影信息top250
查看>>
ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理
查看>>