Java实现 蓝桥杯算法提高 求最大值
算法提高 求最大值
时间限制:1.0s 内存限制:256.0MB
问题描述
给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大。并且要求你选定的数对的ai之和非负,bi之和非负。
输入格式
输入的第一行为n,数对的个数
以下n行每行两个整数 ai bi
输出格式
输出你选定的数对的ai+bi之和
样例输入
5
-403 -625
-847 901
-624 -708
-293 413
886 709
样例输出
1715
数据规模和约定
1<=n<=100
-1000<=ai,bi<=1000
import java.util.Scanner;
/*求最大值(0-1背包+负值处理)
* dp[i]表示前i个有序整数对的最大和
* ai看作重量,bi看作价值
* 重量负值可采取坐标滚动,将原点向右平移最大范围即1e5个单位
* 我们先将除“原点”外都设为-INF,然后做0-1背包
* dp[i] = Math.max(dp[i],dp[i-x]+y)
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] dp = new int[222222];
for (int i = 0; i <= 200000; i++) dp[i] = -Integer.MAX_VALUE;
dp[100000] = 0;
int ans=0;
int i,j;
for(i=0;i<n;i++) {
int x,y;
x = sc.nextInt();
y = sc.nextInt();
if(x>=0) {//背包重量为非负时
for(j=200000;j>=x;j--) {
if(dp[j-x] > -Integer.MAX_VALUE) {
dp[j] = Math.max(dp[j], dp[j-x]+y);
}
}
}
else {//背包重量为负时
for(j=0;j<=200000+x;j++) {
if(dp[j-x]>-Integer.MAX_VALUE) {
dp[j] = Math.max(dp[j], dp[j-x]+y);
}
}
}
}
for(i=100000;i<=200000;i++) {
if(dp[i]>=0) {
ans = Math.max(ans, i-100000+dp[i]);
}
}
System.out.print(ans);
}
}
Java实现 蓝桥杯算法提高 求最大值的更多相关文章
- Java实现 蓝桥杯 算法提高 求arccos值
算法提高 7-2求arccos值 时间限制:10.0s 内存限制:256.0MB 提交此题 问题描述 利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,x取值范围是[-1, 1 ...
- Java实现 蓝桥杯 算法提高 最大值路径
试题 算法提高 最大值路径 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 刷微博,编程序.如下图所示,@北京发布 提出了如下"头脑震荡"问题.对此问题做一般化描 ...
- Java实现 蓝桥杯 算法提高 递推求值
算法提高 递推求值 时间限制:1.0s 内存限制:256.0MB 问题描述 已知递推公式: F(n, 1)=F(n-1, 2) + 2F(n-3, 1) + 5, F(n, 2)=F(n-1, 1) ...
- Java实现 蓝桥杯 算法提高 7-1用宏求球的体积
算法提高 7-1用宏求球的体积 时间限制:1.0s 内存限制:256.0MB 问题描述 使用宏实现计算球体体积的功能.用户输入半径,系统输出体积.不能使用函数,pi=3.1415926,结果精确到小数 ...
- Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)
试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ...
- Java实现 蓝桥杯 算法提高 小X的购物计划
试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...
- Java实现 蓝桥杯 算法提高 数组求和
试题 算法提高 数组求和 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入n个数,围成一圈,求连续m(m<n)个数的和最大为多少? 输入格式 输入的第一行包含两个整数n, ...
- Java实现 蓝桥杯 算法提高 天天向上(DP)
试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...
- Java实现蓝桥杯 算法提高 线段和点
算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...
随机推荐
- HBase Filter 过滤器之FamilyFilter详解
前言:本文详细介绍了 HBase FamilyFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.FamilyFilter 基于列族进行过滤,在工作中涉及 ...
- c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind
一.符号修饰与函数签名 1.符号修饰 编译器将c++源代码编译成目标文件时,用函数签名的信息对函数名进行改编,形成修饰名.GCC的C++符号修饰方法如下: 1)所有符号都以_z开头 2)名字空间的名字 ...
- 《C程序设计语言》 练习2-6 及 位运算总结
问题描述 2.6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变. Wr ...
- 出现Please make sure you have the correct access rights and the repository exists.问题解决
问题: 有一段时间没有用码云了,当输入 git push -u origin master命令出现Please make sure you have the correct access rights ...
- uCOS2014.1.11
typedef unsigned char BOOLEAN;typedef unsigned char INT8U; /* Unsigned 8 bit quantity */ty ...
- Mysql 常用函数(6)- replace 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html replace 的作用 将某些字符串替换成新的字符 ...
- sqli-labs之Page-1
搭建与安装 参考:https://www.fujieace.com/penetration-test/sqli-labs-ec.html 下载:sqli-labs下载 第一关:单引号报错注入 ?id= ...
- iOS事件的响应和传递机制
跟二狗子哥哥交流的时候,他总说我,说的过程太业余.故 好好学习整理一下.努力不那么业余. 一.事件的产生.传递.响应: 1.事件从父控件依次传递到子控件,寻找最合适的子控件View. 2.寻找最合适的 ...
- 【Effective Java】第二章-创建和销毁对象——1.考虑用静态工厂方法代替构造器
静态工厂方法的优点: 可以赋予一个具有明确含义的名称 可以复用唯一实例,不必每次新建 可以返回原实例类型的子类对象 可以在返回泛型实例时更加简洁 缺点: 类如果不含有共有的或者受保护的构造器,就不能被 ...
- 搞懂:前端跨域问题JS解决跨域问题VUE代理解决跨域问题原理
什么是跨域 跨域:一个域下的文档或脚本试图去请求另一个域下的资源 广义的跨域包含一下内容: 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源请求(内部的引用,脚本script,图片img,fr ...