这题很暴力的一个DP,d[i][j]表示前i个数对选择一些Ai的和为j的最大Bi和。

状态转移方程:

dp[i][j]=max(dp[i][j],dp[i-1][j-sc[i].a]+sc[i].b);

AC代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=1<<28;
const int maxn=200002;
int dp[101][maxn];
struct node{
    int a,b;
}sc[101];
int main(){
    int n;
    while(scanf("%d",&n)==1){
        for(int i=1;i<=n;++i){
            scanf("%d%d",&sc[i].a,&sc[i].b);
        }
        for(int i=0;i<=n;++i)
            for(int j=0;j<maxn;++j)
            dp[i][j]=-inf;
        int ab=100000;
        for(int i=1;i<=n;++i){
                dp[i][ab+sc[i].a]=sc[i].b;
            for(int j=0;j<maxn;++j){
                dp[i][j]=max(dp[i-1][j],dp[i][j]);
                if(j-sc[i].a<=200000&&j-sc[i].a>=0)
                    dp[i][j]=max(dp[i][j],dp[i-1][j-sc[i].a]+sc[i].b);
            }

        }
        int ans=0;
        int ind;
        for(int i=ab;i<maxn;++i){
            if(dp[n][i]>=0&&dp[n][i]+i-ab>ans) {
                ans=dp[n][i]+i-ab;
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

这个代码有两个可以优化的地方,第一个就是每次可以先把Ai和算出来,避免太多次的运算,空间上能够用滚动数组优化。

如有不当之处欢迎指出!

蓝桥杯 求最大值 dp的更多相关文章

  1. 梳理一下最近准备蓝桥杯时学习DP问题的想法

    学习时间不长,记录的只是学习过程的思路和想法,不能保证正确,代码可以在acwing上AC. 01背包问题: 1.首先是简单的01背包问题 2.先确定状态,f[i][j]表示有第i件物品,时间为j的最大 ...

  2. 计蒜客 蓝桥杯模拟 瞬间移动 dp

      在一个 n \times mn×m 中的方格中,每个格子上都有一个分数,现在蒜头君从 (1,1)(1,1) 的格子开始往 (n, m)(n,m) 的格子走.要求从 (x_1,y_1)(x1​,y1 ...

  3. Java实现 蓝桥杯 算式最大值

    算式最大值 [问题描述] 给定: 1)N个正整数A1, A2, - AN; 2)P个加号+和Q个减号-; (P+Q=N-1) 3)K对括号() 请你使用全部整数.加减号和括号,组成一个合法的算式(A1 ...

  4. 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负 ...

  5. Java实现 蓝桥杯算法提高 求最大值

    算法提高 求最大值 时间限制:1.0s 内存限制:256.0MB 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负 ...

  6. 树形dp|无根树转有根树|2015年蓝桥杯生命之树

    2015年蓝桥杯第十题--生命之树(无根树dfs) ①暴力解法:枚举子集(选点) + dfs判断连通性(题目要求连通)满足上面两个条件下找出最大值权值和 ②dfs无根树转有根树,递归找最优 先学习无根 ...

  7. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  8. 日期求星期(java)-蓝桥杯

    日期求星期问题(java)-蓝桥杯 1:基姆拉尔森计算公式(计算星期) 公式: int week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 此处y,m,d指代年 ...

  9. 蓝桥杯历届试题 危险系数(dfs或者并查集求无向图关于两点的割点个数)

    Description 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个 ...

随机推荐

  1. JavaScript数组的22种方法

    原文:http://www.cnblogs.com/xiaohuochai/p/5682621.html javascript中数组的22种方法   前面的话 数组总共有22种方法,本文将其分为对象继 ...

  2. springMVC中@RequestParam和@RequestBody注解的用法

    springMVC中@RequestParam注解用在Controller层获解析.提取参数,当然你也可以用request.getParameter("name")来获取参数,而@ ...

  3. jQuery的标签选择器$('p')、类选择器$('.myClass')、id选择器$('#myId')

    $()可以是$(expresion),即css选择器 $("a")构造的这个对象,是用CSS选择器构建了一个jQuery对象——它选择了所有的<a/>这个标签 $(&q ...

  4. 【转】国外几款GPS卫星历预报软件

    以下是几款著名GPS厂商的星历软件: Trimble星历软件: http://www.trimble.com/planningsoftware.shtml Topcon星历软件: http://www ...

  5. fopen fclose feof fgets fetl

    fopen :Open file, or obtain information about open files 例如 fid = fopen(filename, permission)%许可包括: ...

  6. 探索ArrayList自动改变size真相

    探索ArrayList自动改变size真相 ArrayList的列表对象实质上是存储在一个引用型数组里的,有人认为该数组有“自动增长机制”可以自动改变size大小.正式地说,该数组是无法改变 大小的, ...

  7. 在UITableView顶部制作简单的UISegmentControl实例方法

    // http://www.tuicool.com/articles/yUfURj 使用方法 如上图: 分两步: 一.创建320长度背景,高不超过40最好 //segment背景图 UIImageVi ...

  8. Exchanger

    Exchanger可以在两个线程之间交换数据,只能是2个线程,不支持更多的线程之间互换数据. 当线程A调用Exchange对象的exchange()方法后,他会进入阻塞状态,直到线程B也调用了exch ...

  9. 《Thinking in Java》学习笔记(三)

    1>Java中的常量 使用final和static来修饰的变量称为常量,常量用大写字母表示,字母间用下划线连接. Java中定义常量有以下几种方式: interface ConstantInte ...

  10. POJ [P3020] Antenna Placement

    二分图匹配求最小边覆盖 建图方法中的黑白染色法,题目中说信号可以覆盖相邻两个块,那么我们可以将给定的地图染成国际象棋棋盘的样子,一个黑格可以与周围的四个白格共用信号,对于城市,从每一个黑格出发,向其周 ...