题意:求投资k年获得最大投资,每年都选最大利息的方案进行投资k年后就可以得到最多的人民币。

注意:每一年收到的利息都可以作为下一年的本金......其实从测试数据来看,是很好看出来的......

思路:将每一年的“体积”加上利息就好,当然,数据太大,可以除以100减少时间和空间复杂度......

反思:很想说,这些我都想到了,但是还是wa了两次,是因为数据溢出的原因......以前就遇到这样的原因,木有想到这次我注意了,但还是出问题了......

wa代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int dp[500000],s[100][2];
int main()
{
int text;
scanf("%d",&text);
while(text--)
{
int n,year;
scanf("%d%d",&n,&year);
int h,m=n/100;
scanf("%d",&h);
for(int i=1;i<=h;i++)
{
scanf("%d%d",&s[i][0],&s[i][1]);
s[i][0]/=100;
}
memset(dp,0,sizeof(dp));
int sum=0;
for(int i=1;i<=year;i++)
{ for(int j=1;j<=h;j++)
{
for(int k=s[j][0];k<=m;k++)
if(dp[k]<dp[k-s[j][0]]+s[j][1])
dp[k]=dp[k-s[j][0]]+s[j][1];
}
sum+=dp[m];
m=m+dp[m]/100; //这里数据溢出,要是上一次的m==100,dp[m]==250,这一次的dp[m]==350,那么计算出来的m==105,但是实际应该为106
}
printf("%d\n",sum+n);
}
return 0;
} ac代码: #include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int dp[600000],s[100][2];
int main()
{
int text;
scanf("%d",&text);
while(text--)
{
int n,year;
scanf("%d%d",&n,&year);
int h,m=n/100;
scanf("%d",&h);
for(int i=1;i<=h;i++)
{
scanf("%d%d",&s[i][0],&s[i][1]);
s[i][0]/=100;
}
memset(dp,0,sizeof(dp));
int sum=n;
for(int i=1;i<=year;i++)
{
m=sum/100;
for(int j=1;j<=h;j++)
{
for(int k=s[j][0];k<=m;k++)
if(dp[k]<dp[k-s[j][0]]+s[j][1])
dp[k]=dp[k-s[j][0]]+s[j][1];
}
sum+=dp[m]; //以后的代码要规范写,可以在前面处理了的值不要留在后面处理.......
}
printf("%d\n",sum);
}
return 0;
}

dp之完全背包poj2063的更多相关文章

  1. hdu1114 Piggy-Bank (DP基础 完全背包)

    链接:Piggy-Bank 大意:已知一只猪存钱罐空的时候的重量.现在的重量,已知若干种钱的重量和价值,猪里面装着若干钱若干份,求猪中的钱的价值最小值. 题解: DP,完全背包. g[j]表示组成重量 ...

  2. 单调队列优化DP,多重背包

    单调队列优化DP:http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列优化多重背包:http://blog.csdn ...

  3. Codevs1378选课[树形DP|两种做法(多叉转二叉|树形DP+分组背包)---(▼皿▼#)----^___^]

    题目描述 Description 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修 ...

  4. POJ3211 Washing Clothes[DP 分解 01背包可行性]

    Washing Clothes Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 9707   Accepted: 3114 ...

  5. HD1561The more, The Better(树形DP+有依赖背包)

    The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  6. [HDOJ5543]Pick The Sticks(DP,01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5543 题意:往长为L的线段上覆盖线段,要求:要么这些线段都在L的线段上,要么有不超过自身长度一半的部分 ...

  7. zoj3623 Battle Ships ——完全背包?简单DP!|| 泛化背包

    link:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3623 看起来像完全背包,但是物品价值是变化的,所以很多人搞的很复 ...

  8. poj 2184 Cow Exhibition(dp之01背包变形)

    Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - ...

  9. hdoj1010Starship Troopers (树dp,依赖背包)

    称号:hdoj1010Starship Troopers 题意:有一个军队n个人要占据m个城市,每一个城市有cap的驻扎兵力和val的珠宝,并且这m个城市的占率先后具有依赖关系,军队的每一个人能够打败 ...

随机推荐

  1. Linux下解决 id_rsa 权限不够

    问题 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @         WARNING: UNPROTECTED PRIVAT ...

  2. 利用kettle中的JS来完成ETL数据校验

    最近参与了一个信托行业的BI项目,由于信托业务系统设计的问题,很多都是用户手工录入的数据,也有一些是需要分析的但是用户没有录入的数据,针对这样的数据质量,我们就要在ETL抽取的过程中来对数据流进行校验 ...

  3. 全民Scheme(2):来自星星的你

    一门编程语言,假设不能对你思考编程的方式产生影响.就不值得去学习.--  Alan Perlis (define rember*   (lambda (a list)     (cond       ...

  4. iOS 真机调试多台mac电脑共用一个证书

    大致流程:在你的开发电脑上导出一个 p12文件,以及在 apple开发者中心下载一个profile文件,把这两个文件导出给你的mac开发友就行了 打开 mac  钥匙工具-----找到你的证书---- ...

  5. Unity3D 播放视频

    http://blog.csdn.net/jbjwpzyl3611421/article/details/12780625 导入: 影片纹理是通过Apple QuickTime导入的(支持.mov, ...

  6. CentOS6.5搭建MySQL5.1主从复制

    环境: mysql> select version(); +------------+ | version() | +------------+ | 5.1.73-log | +-------- ...

  7. ffmpeg Win8移植记(二)

    接着上回说,http://www.cnblogs.com/zjjcy/p/3384517.html 上回移植了ffmpeg在ARM上面,只是纯C的代码,没有做汇编的优化.因为ffmpeg的ARM汇编是 ...

  8. EL函数库

    一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...

  9. linux内核——PAE(物理地址扩展)

    引入PAE机制后,分页模式是怎样的呢? 首先,要搞明白几件事,2.6.11以上版本的linux内核中,存在4中页表(页全局目录,页上级目录,页中级目录,页表),这些页表结构是已经存在于硬盘中的,当进程 ...

  10. RedHat Enterprise Linux 6 配置Xmanager ,实现图形界面连接

    我们经常见到的几种最为常用的windows下远程管理Linux服务器的方法,基本上都是利用SecureCRT,或者是PUTTY等客户端工具通过ssh服务来实现Windows下管理Linux服务器的,这 ...