会超时的dfs01背包+快一点的一维DP01背包

( ⊙ o ⊙ ) 题目:

(⊙v⊙),代码:

1.dfs

//会超时!!!!
#include<iostream>
#include<cstdio>
using namespace std;

int n,t,ans;
int w[1003],v[1003];

void dfs(int x,int val,int left) {
    if(x == n+1){
        ans = max(ans,val);
        return ;
    }
    dfs(x+1,val,left);
    if(left >= w[x]) dfs(x+1,val + v[x],left - w[x]);
}

int main() {
    cin>>n>>t;
    for(int i=1; i<=n; i++) cin>>w[i]>>v[i];
    dfs(1,0,t);
    cout<<ans<<endl;
    return 0;
}

2.dp

#include<iostream>
#include<cstdio>
using namespace std;

int n,V;
int val[1333],wight[1333],f[1333];

int main() {
    cin>>V>>n;
    for(int i=1; i<=n; i++) {
        cin>>wight[i]>>val[i];
    }
    for(int i=1; i<=n; i++) {
        for(int j=V; j>=0; j--) {
            if(j >= wight[i])
            f[j] = max(f[j],f[j-wight[i]]+val[i]);
        }
    }
    cout<<f[V]<<endl;
    return 0;
}
时间: 2024-08-15 00:08:47

会超时的dfs01背包+快一点的一维DP01背包的相关文章

走快点,再快一点

最近的小目标有点多,一个人走得更快,趁着还是一个人走快点,再快一点. 1.设计模式要尽快,看完设计模式后找一些例子来巩固设计模式. 2.JDK“不常用”的API,反射.类加载器.动态代理.RMI等等. //做完以上两步后,开始研读开源框架源代码,从MyBatis3.4.1着手. 3.翻译MyBatis3.4.1官方用户手册. 4.着手研究Java多线程,多方面深入了解,不仅从Java本身,从操作系统以及计算机组成原理等底层方面来理解和运用.

php5-memcached比php5-memcache速度略快一点

?? php5-memcached比php5-memcache速度略快一点 php5-memcached和php5-memcache是两个php操作memcached的组件,他们是不同人开发的. php官网都列出了他们各自的使用方法: http://www.php.net/manual/en/book.memcache.php (安装使用:sudo apt-get install php5-memcache) http://www.php.net/manual/en/book.memcached

0-1背包的动态规划算法,部分背包的贪心算法和DP算法------算法导论

一.问题描述 0-1背包问题,部分背包问题.分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法. 二.算法原理 (1)0-1背包的DP算法 0-1背包问题:有n件物品和一个容量为W的背包.第i件物品的重量是w[i],价值是v[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大.其中每种物品只有一件,可以选择放或者不放. 最优子结构性质:对于0-1问题,考虑重量至多W的最值钱的一包东西.如果去掉其中一个物品j,余下的必是除j以外的n-1件物品中,可以带走的重量

让我们更快一点Visual Studio的技巧们

它们只是不起眼的小技巧.日积月累,它们让我们的工作.学习更有效率,让我们更加专注于逻辑本身,它们是.NET程序员的好朋友,它们是Visual Studio的小技巧……我们,真的认识它们吗?  如果想尽快掌握这些技巧,请打开Visual Studio亲自试一下这些技巧,希望找到你喜欢的技巧的. (图片来自Bing) 让代码写得再快一些 怎么快速的创建一个类?创建一个应用程序,找个能建类的空地,试试这个:class<Tab><Tab>. 别急,这个技巧还没有完.直接输入想要的类名,然后

让QT编译快一点(增加基础头文件)

姚冬,中老年程序员 进藤光.杨个毛.欧阳修 等人赞同 我是来反对楼上某些答案的.我曾经用MFC写了金山词霸(大约20多万行),又用Qt写了YY语音(大约100多万行),算是对两种框架都比较有经验.纠正几个错误的认识. 1. “用Qt写的程序编译比MFC慢”的说法是错误的绝对错误,单位代码行数编译Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎所有类都使用了公有类和私有类的设计,把没必要公开的声明放到私有头文件里,避免了编译时引入过多代码.而MFC没

代码与算法集锦-归并排序+树状数组+快排+深度优先搜索+01背包(动态规划)

归并排序 求逆序数 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用. 首先考虑下如何将将二个有序数列合并.这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数.然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可. //将有序数组a[]和b[]合并到c[]中 void MemeryArray(int a[], int n, int b[], int m, int c

[No00001F]阅读速度如何快一点、再快一点?-不知道读啥?试试这些电影剧本!

少侠萌好,还记得包大人给大家推荐过的语感培养大法——“电影剧本阅读法”吗?最近,包大人陆陆续续收到了好几位少侠的实践报告,他们中不少人抱怨:“大人,你明明说过电影剧本篇幅短.用词简单的,可为什么我还是读得很慢?” 慢?今天你Chunk了吗? “单词都认识,文章读起来却很慢”——上次我们说了,一嘛,是因为我们的单词联结强度不够,具体请少侠们参见<到底如何培养语感?(一)>).二来则是由于我们过度关注每一个单词,而没有注意到阅读理解的关键点——Chunk. 插图:包大人你等等,单词我们都知道,但C

DP-01背包 (题)

nyoj 325   http://acm.nyist.net/JudgeOnline/problem.php?pid=325 zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜.当他准备把西瓜送给C小加和never的时候,遇到了一个难题,

超大背包(挑战编程之01背包)

先来温习01背包: 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2--Wn,与之相对应的价值为P1,P2--Pn. 求出获得最大价值的方案. 注意:在本题中,所有的体积值均为整数. 思路: 考虑用动态规划的方法来解决,这里的:阶段是:在前N件物品中,选取若干件物品放入背包中:状态是:在前N件物品中,选取若干件物品放入所剩空间为W的背包中的所能获得的最大价值:决策是:第N件物品放或者不放:由此可以写出动态转移方程:我们用f[i,j]表示在前 i 件物品中选择若干件放