codeforces 455A(dp)
题意描述
Alex doesn’t like boredom. That’s why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.
Given a sequence a consisting of n integers. The player can make several steps. In a single step he can choose an element of the sequence (let’s denote it ak) and delete it, at that all elements equal to ak + 1 and ak - 1 also must be deleted from the sequence. That step brings ak points to the player.
Alex is a perfectionist, so he decided to get as many points as possible. Help him.
Alex每次可以选择一个数字 k k k,得到 k k k分,并且消去 k + 1 k+1 k+1和 k − 1 k-1 k−1,询问能够得到分数的最大值
思路
如果选择消除 i − 1 i-1 i−1,那么i会被消除,所以 f [ i ] = f [ i − 1 ] f[i]=f[i-1] f[i]=f[i−1],如果选择消除i,那么分数为 m a x ( f [ i − 1 ] , f [ i − 2 ] + c n t [ i ] ∗ i ) max(f[i-1],f[i-2]+cnt[i]*i) max(f[i−1],f[i−2]+cnt[i]∗i)。所以得到方程 f [ i ] = m a x ( f [ i − 1 ] , f [ i − 2 ] + c n t [ i ] ∗ i ) f[i]=max(f[i-1],f[i-2]+cnt[i]*i) f[i]=max(f[i−1],f[i−2]+cnt[i]∗i)。
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<long,long> PLL;
typedef pair<char,char> PCC;
typedef long long ll;
const int N=1e5+10;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
int cnt[N],a[N];
ll f[N];
void solve(){
int n;cin>>n;
ll minn=INF,maxn=-1;
rep(i,1,n+1){
ll x;cin>>x;
cnt[x]++;
minn=min(minn,x);
maxn=max(maxn,x);
}
rep(i,minn,maxn+1){
f[i]=max(f[i-1],f[i-2]+cnt[i]*i);
}
cout<<f[maxn]<<endl;
}
int main(){
IOS;
//int t;cin>>t;
//while(t--){
solve();
//}
return 0;
}
- Leetcode 274. H-Index
- 值得 .NET 开发者了解的15个特性
- Angular和Vue.js 深度对比
- 前端开发者常用的9个JavaScript图表库
- 1000多个项目中的十大JavaScript错误以及如何避免
- SoapUI实践:自动化测试、压力测试、持续集成
- 如何把kotlin+spring boot开发的项目部署在tomcat上
- 使用开源项目Alipay.AopSdk.Core完成支付宝网页登录
- vhost-user 简介
- 把玩爬虫框架Gecco
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(75)-微信公众平台开发-用户管理
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程
- GitHub上大热的Deep Photo终于有TensorFlow版了!
- 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 数组属性和方法