题目链接:https://www.rqnoj.cn/problem/117

题意:

  NaCN_JDavidQ要在下个月交给老师n篇论文,论文的内容可以从m个课题中选择。

  由于课题数有限,NaCN_JDavidQ不得不重复选择一些课题。

  对于某个课题i,若NaCN_JDavidQ计划一共写x篇论文,则完成该课题的论文总共需要花费Ai*(x^Bi)个单位时间(系数Ai和指数Bi均为正整数)。

  给定与每一个课题相对应的Ai和Bi的值,请帮助NaCN_JDavidQ计算出如何选择论文的课题使得他可以花费最少的时间完成这n篇论文。

题解:

  转化问题:

    (将对象由论文转化为课题)

    有m个课题。

    对于每个课题,你可以写任意篇论文。

    问你恰好写完n篇论文的最小时间。

  表示状态:

    dp[i][j] = min time

    i:考虑到第i个课题

    j:已经完成了j篇论文

  找出答案:

    ans = dp[m][n]

  如何转移:

    now: dp[i][j]

    dp[i+1][j+k] = min dp[i][j] + a[i]*(k^b[i])

    第i个课题写了k篇论文

  边界条件:

    dp[0][0] = 0

    others = -1

  注:本题会爆int。。。

AC Code:

 // state expression:
// dp[i][j] = min time
// i: considering ith project
// j: finished j papers
//
// find the answer:
// dp[m][n]
//
// transferring:
// now: dp[i][j]
// dp[i+1][j+k] = min dp[i][j] + a[i]*k^b[i]
//
// boundary:
// dp[0][0] = 0
// others = -1
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 205
#define MAX_M 25 using namespace std; int n,m;
int a[MAX_M];
int b[MAX_M];
long long dp[MAX_M][MAX_N]; void read()
{
cin>>n>>m;
for(int i=;i<m;i++)
{
cin>>a[i]>>b[i];
}
} long long quick_pow(long long n,long long k)
{
long long ans=;
while(k)
{
if(k&)
{
ans*=n;
}
n*=n;
k>>=;
}
return ans;
} void solve()
{
memset(dp,-,sizeof(dp));
dp[][]=;
for(int i=;i<m;i++)
{
for(int j=;j<=n;j++)
{
if(dp[i][j]!=-)
{
for(int k=;j+k<=n;k++)
{
long long now=dp[i][j]+a[i]*quick_pow(k,b[i]);
if(dp[i+][j+k]==- || dp[i+][j+k]>now)
{
dp[i+][j+k]=now;
}
}
}
}
}
} void print()
{
cout<<dp[m][n]<<endl;
} int main()
{
read();
solve();
print();
}

最新文章

  1. 如何用angularjs给从后台传来数据添加链接
  2. spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 动态组合条件查询
  3. 【整理】--C++变量概述
  4. animate 实现滑动切换效果
  5. bootstrap点滴
  6. SSH集成步骤
  7. WindowsPhone-GameBoy模拟器开发六--[转]指令系统实现必读:补码
  8. 网站开发中必备的8个 jQuery 效果【附源码】
  9. html5+js实现刮刮卡效果
  10. css3 切换贞动画的效果,仿gif效果
  11. 网络编程Socket之UDP
  12. linux/hpux 添加用户
  13. Linux系统上安装MySQL(rpm)
  14. Apex辅助 - 透视|自瞄|无后
  15. 1.编写一个shell脚本
  16. 00SQL表字段说明
  17. Linux编程 10 (shell外部命令与内建命令,alias ,type命令)
  18. 设计一款相册APP,代替系统自带的相册功能,列举主要功能
  19. fiddler展示serverIP方法
  20. 洛谷P3389 【模板】高斯消元法(+判断是否唯一解)

热门文章

  1. jsp页面中,动态调用系统时间的实现
  2. WeakReference &amp;&amp;reference quene &amp;&amp;GC
  3. js执行顺序总结
  4. .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度
  5. [读书笔记] learn python the hard way书中 有关powershell 的一些小问题
  6. Linux kernel manpages
  7. 安装部署Solrcloud
  8. 安装Redis图形监控工具---RedisLive
  9. os引导程序boot从扇区拷贝os加载程序loader文件到内存(boot copy kernel to mem in the same method)
  10. 【LeetCode从零单排】No.135Candy(双向动态规划)