解题报告
时间:2019-06-12
本文章向大家介绍解题报告,主要包括解题报告使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
author:sdgzy
6.12日
T1总感觉是一个假题,T3推推式子看出单调性就没了。
T2比较有意思:
题目大意:n个物品,属性为w,r,选择第i件物品后,之后每选择一个物品都会减去r的价值。
求按顺序选择物品的最大价值。
solution:
考虑对于一个必须选择的物品集合(大小为n)
答案是:\(\sum w_i - \sum r_i * (n - i)\)
价值总和是\(\sum w_i\),是一个不变的值。
让后面那个最小
即r从小到大排序即可。
这样就把顺序问题解决了。
那我们可以按照r从小到大的顺序排序(这只是思路,写法有待考虑)
没有顺序问题,只是单纯的选择物品就是一个背包问题了。
结束上面的思考后。
让r从小到大排序。
然后依次选择:
转移方程
dp[i][j]=max{dp[i-1][j],dp[i-1][j-1]+W[i]-R[i]*(j-1)}
现在码力下降的很厉害。
#include <bits/stdc++.h>
#define gc getchar()
using namespace std;
const int maxN = 3000 + 7;
inline int gi() {
int x = 0,f = 1;char c = gc;
while(c < '0' || c > '9') {if(c == '-')f = -1;c = gc;}
while(c >= '0' && c <= '9') {x = x * 10 + c - '0';c = gc;}
return x * f;
}
int f[maxN][maxN];
struct Node {
int w , r;
}a[maxN];
bool cmp(Node a , Node b) {return a.r > b.r;}
int main() {
int n = gi();
for(int i = 1;i <= n;++ i) a[i].w = gi(),a[i].r = gi();
sort(a + 1,a + n + 1,cmp);
for(int i = 1;i <= n;++ i)
for(int j = 1;j <= i;++ j)
f[i][j] = max(f[i - 1][j] , f[i - 1][j - 1] + a[i].w - a[i].r * (j - 1));
int ans = 0;
for(int i = 1;i <= n;++ i) ans = max(ans , f[n][i]);
printf("%d",ans);
return 0;
}
原文地址:https://www.cnblogs.com/lykkk/p/11009689.html
- Java中ArrayList remove会遇到的坑
- Dagger2 入门解析
- Git 工作流的正确打开方式
- 如何从两个List中筛选出相同的值
- 【Windows编程】系列第八篇:创建通用对话框
- 使用dropwizard(3)-加入DI-dagger2
- 巧用shell生成数据库检查脚本 (74天)
- 【专业技术】OPENGL与EGL
- 在dropwizard中使用feign,使用hystrix
- 用python抓取淘宝评论
- 使用Dropwizard(2)-配置分类ConfiguredBundle
- Upgrade with the Gradle Wrapper, gradlew升级
- 使用swagger作为restful api的doc文档生成
- 面试机器学习、大数据岗位时遇到的各种问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 3分钟短文 | MySQL备份和迁移sql文件,这个指令基础又关键
- 如何用ant给Java项目生成文档
- ant build里如何指定classpath
- Tomcat服务器java.lang.IllegalArgumentException异常
- 动态控制SAP CRM附件的可编辑性
- 关于node.js:ExpressJS、Websocket中的session会话共享
- 【STM32F429开发板用户手册】第23章 STM32F429的USART串口基础知识和HAL库API
- 【STM32F407开发板用户手册】第23章 STM32F407的USART串口基础知识和HAL库API
- 小姐姐提灯给你讲讲动态规划(万字长文)
- 解决fedora启动时显示cannot open font file true的办法 By HKL,
- 盘点 6 个被淘汰的 Java 技术,它们都曾经风光过!
- Unlock a VBA password protected Excel file By HKL,
- kde安装gtk主题(kde-gtk-theme)KDE4下gtk程序美化 By HKL,
- Monkey's Audio vs. WavPack vs. FLAC By HKL,
- 彻底屏蔽优酷广告 By HKL, Monday 12 Au