zoukankan      html  css  js  c++  java
  • DP Review 2

    劲歌金曲

    洛谷链接

    Analysis

    这一道题真的好坑啊。时间他给的数据范围是十的九次方,但是你看了别的条件又会发现实际上是超过不了一万的,所以呢,直接就选择用0/1背包做就可以了。值得一提是初始化不可以初始化为0,你会惊喜的发现,自己的唱歌时间是过不了的。所以我们选择不做这道题。所以我们选择初始化为-1,然后f[0]=0来做就可以了

    Code

    #include<bits/stdc++.h>
    #define Mod 1000007
    #define maxn 55
    #define maxt 100003
    #define jgjq 678
    using namespace std;
    int n,t,T;
    int t_cost[maxn];
    int f[maxt];
    int main(){
    	scanf("%d",&T);
    	while(T--){
    		scanf("%d%d",&n,&t);
    		for(int i=1;i<=n;i++)scanf("%d",&t_cost[i]);
    		memset(f,-1,sizeof(f));
    		f[0]=0;
    		for(int i=1;i<=n;i++){
    			for(int j=t-1;j>=t_cost[i];j--){
    				f[j]=max(f[j],f[j-t_cost[i]]+1);
    			}
    		}
    		int ans=t-1;
    		for(int i=t-1;i>=0;i--){
    			if(f[i]>f[ans])ans=i;
    		}
    		printf("%d %d
    ",f[ans]+1,ans+jgjq);
    	}
    	return 0;
    }
    

    最后按照要求输出啊,我是在别的地方提交的,所以就没有按照洛谷的格式来

    没别的了,因为自己比较懒,所以就给这么多了

  • 相关阅读:
    mysql 优化
    对象的特征
    对象的回收机制
    对象产生的过程
    python 内容查询小助手
    python笔记
    python安装MySQLdb模块
    python笔记
    python笔记
    定期删除备份文件,节省磁盘空间脚本
  • 原文地址:https://www.cnblogs.com/perisino/p/10408058.html
Copyright © 2011-2022 走看看