hdu6447 YJJ's Salesman
这个题意和数据范围一看就是离散化之后树状数组优化DP.给的"从左下方走上去才能拿到收益"的性质其实可以当成"必须从横纵坐标严格比某个点小的地方转移过来".1A了.咸鱼产生了能翻身的错觉
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100005;
int f[maxn];
int x[maxn],y[maxn],v[maxn];
int seq[maxn];
int newx[maxn],newy[maxn];
bool cmpx(const int &a,const int &b){
return x[a]<x[b];
}
bool cmpy(const int &a,const int &b){
if(y[a]!=y[b])return y[a]<y[b];
return x[a]>x[b];
}
int c[maxn];
int gmax(int x){
int ans=0;
for(;x;x-=x&(-x))ans=max(ans,c[x]);
return ans;
}
int add(int x,int y){
for(;x<maxn;x+=x&(-x))c[x]=max(c[x],y);
}
int main(){
int t;scanf("%d",&t);
while(t--){
memset(c,0,sizeof(c));
int n;scanf("%d",&n);
for(int i=1;i<=n;++i)scanf("%d%d%d",x+i,y+i,v+i);
for(int i=1;i<=n;++i)seq[i]=i;
sort(seq+1,seq+n+1,cmpx);
newx[seq[1]]=1;
for(int i=2;i<=n;++i){
if(x[seq[i]]!=x[seq[i-1]])newx[seq[i]]=newx[seq[i-1]]+1;
else newx[seq[i]]=newx[seq[i-1]];
}
sort(seq+1,seq+n+1,cmpy);
for(int i=1;i<=n;++i){
add(newx[seq[i]],gmax(newx[seq[i]]-1)+v[seq[i]]);
}
printf("%d\n",gmax(maxn-1));
}
return 0;
}
hdu6447 YJJ's Salesman的更多相关文章
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...
- YJJ's Salesman
YJJ's Salesman YJJ is a salesman who has traveled through western country. YJJ is always on journey. ...
- HDU6447 网络赛 YJJ's Salesman(DP + 线段树)题解
思路:若用dp[i][j]表示走到(i,j)的最大值,那么dp[i][j] = max(dp[i - 1][j],dp[i][j - 1],dp[i - 1][j - 1] + v),显然O(n^2) ...
- HDU 6447 - YJJ's Salesman - [树状数组优化DP][2018CCPC网络选拔赛第10题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 Problem DescriptionYJJ is a salesman who has tra ...
- HDU 6447 YJJ’s Salesman (树状数组 + DP + 离散)
题意: 二维平面上N个点,从(0,0)出发到(1e9,1e9),每次只能往右,上,右上三个方向移动, 该N个点只有从它的左下方格点可达,此时可获得收益.求该过程最大收益. 分析:我们很容易就可以想到用 ...
- HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. 1e5个点,问 ...
- hdu6447
YJJ's Salesman Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 2018 CCPC网络赛
2018 CCPC网络赛 Buy and Resell 题目描述:有一种物品,在\(n\)个地点的价格为\(a_i\),现在一次经过这\(n\)个地点,在每个地点可以买一个这样的物品,也可以卖出一个物 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 Solution
A - Buy and Resell 题意:给出n个交易点,每次能够选择买或者卖,求获得最大利润 思路:维护两个优先队列,一个是卖,一个是替换,当价格差相同时,优先替换,因为次数要最少 #includ ...
随机推荐
- 阿超的烦恼 javaScript篇
幼儿园级1-100随机数运算 实现目标 1.点击随机生成两个数并进项随机的四则运算. 2.答案暂时隐藏,等孩子做完题后点击答案处显示答案. 3.背景设置的卡通些,激发孩子阅读兴趣........... ...
- SpringBoot日记——登录与拦截器篇
之前的文章我们把登录页写了出来,但是想要让登录现实他的基本功能,要如何做呢?本篇文章就来帮你实现第一步,让登录页对账号密码做校验,并且完成登录跳转. LoginController 1. 要实现登录, ...
- Idea for Mac 快捷键(快捷键选择:Mac OS X 10.5+)
删除一行 command + delete 查找 command + f 查找替换 command + r 复制一行 comma ...
- 将exe依赖运行的dll,合并入exe中,整个程序仅存在一个exe文件
方法一: 使用ILMerge合并winform生成的exe和引用的dll文件 参考:https://blog.csdn.net/u010108836/article/details/76782375 ...
- SpringBoot实现监听redis key失效事件
需求: 处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态 解决方案1: 可以利用redis天然的key自动过期机制,下单时将订单id写入redis,过期时间30分钟,30分钟后检查订单状态 ...
- WebGL之sprite精灵效果显式数字贴图
接着前一篇<WebGL实现sprite精灵效果的GUI控件>,我们继续开发我们的数字系统GUI控件,因为这套数字系统是基于sprite效果的,所以数字随相机转动而旋转(永远面对相机),随场 ...
- linux 开机报错,error grub_efi_find_mmap_size not find
开机报错,差点以为要重装系统了 搜到了官方的重建引导的教程 修复了错误 https://wiki.manjaro.org/index.php/Restore_the_GRUB_Bootloader#F ...
- Hyperledger Fabric CA User’s Guide——配置设置(四)
配置设置 Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,优先顺序是: CLI flags(标识) 环境变量 配置文件 在本文档的其余部分中,我们将对配置文件进行更改.但是,可 ...
- linux 安装配置kafka脚本
安装脚本 #!/bin/bash # auto install kafka echo "========= Start to install kafka ==============&quo ...
- resize2fs命令详解
基础命令学习目录首页 原文链接:http://blog.51cto.com/woyaoxuelinux/1870299 resize2fs:调整ext文件系统的空间大小 搭配逻辑卷lv使用方法: ...