题目

自己菜的不行,一开始就想到离散化,然后脑抽去从离散后的坐标进行背包,然后告诉队友自己的思路会超时,然后都没从这个方面下手,结果赛后看题解心态就炸了,于是随手做了一发离散+线段树优化dp就·······wa了,没考虑离散后的y轴不是原来的y轴,但y=1时不为0。改了一下就a了。

这题很多人都是用树状数组,但是我不会树状数组求最大值呀,虽然有模板,但是不理解所以还是没有用,用了比较熟悉的线段树。

果然自己还是太菜了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;const int N = 1e5+10;int hx[N],hy[N];
struct node{int x,y,v;void getin(){scanf("%d%d%d",&x,&y,&v);}bool operator<(const node&a)const{if(x==a.x)return y>a.y;return x<a.x;}
}map[N];int tree[N<<4];void add(int l,int r,int id,int val,int pos)
{tree[pos]=max(tree[pos],val);if(l==r)return;int m=l+r>>1;if(id<=m)add(l,m,id,val,pos<<1);else add(m+1,r,id,val,pos<<1|1);
}int qry(int l,int r,int L,int R,int pos)
{if(L<=l&&R>=r)return tree[pos];int m=l+r>>1;int nmp=0;if(L<=m)nmp=max(qry(l,m,L,R,pos<<1),nmp);if(m<R)nmp=max(qry(m+1,r,L,R,pos<<1|1),nmp);return nmp;
}int main()
{int T;scanf("%d",&T);while(T--){memset(hx,0,sizeof(hx));memset(hy,0,sizeof(hy));memset(tree,0,sizeof(tree));int d;scanf("%d",&d);for(int i=1;i<=d;i++){map[i].getin();hx[i]=map[i].x;hy[i]=map[i].y;}sort(hx+1,hx+d+1);sort(hy+1,hy+d+1);int cx=unique(hx+1,hx+1+d)-hx;int cy=unique(hy+1,hy+1+d)-hy;for(int i=1;i<=d;i++){map[i].x=lower_bound(hx+1,hx+1+cx,map[i].x)-hx;map[i].y=lower_bound(hy+1,hy+1+cy,map[i].y)-hy;}sort(map+1,map+1+d);for(int i=1;i<=d;i++){int val;if(map[i].y==1)val=map[i].v;elseval=qry(1,d,1,map[i].y-1,1)+map[i].v;add(1,d,map[i].y,val,1); }printf("%d\n",qry(1,d,1,d,1));}return 0;
}

CCPC 1010 YJJ's Salesman相关推荐

  1. HDU 6447 YJJ's Salesman(线段树+DP)

    YJJ's Salesman Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) T ...

  2. YJJ's Salesman HDU - 6447(线段树 单点更新+DP思想)

    YJJ's Salesman 题目链接:HDU - 6447 题意:一个1e9*1e9的地图,要求由(0, 0) -> (1e9, 1e9):只能向下,向右, 向右下移动:地图中有n个点,有宝藏 ...

  3. HDU 6447 YJJ's Salesman(树状数组优化DP + 离散化)

    HDU 6447 YJJ's Salesman 题目 给一个二维数组,从(0,0)走到(1e9, 1e9).每次只能走右,下,右下,三个方向.其中只有通过右下走到特定给出的点(村庄)时才会获得分值.问 ...

  4. 2018ccpc网络赛1010 J - YJJ's Salesman

    又是一道没a的题... YJJ is a salesman who has traveled through western country. YJJ is always on journey. Ei ...

  5. CCPC 2018网络预赛 hdu 6447 YJJ's Salesman

    [题目链接] 题目意思 T组案例,给一个n,下面n行,每行三个数字(x,y,v)表示点(x,y)处的值为v,只有当从(x-1,y-1)走到(x,y)时,才能获得点(x,y)的v值,求从(0,0)走到( ...

  6. 【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)

    题干: YJJ is a salesman who has traveled through western country. YJJ is always on journey. Either is ...

  7. HDU 6447 YJJ's Salesman (dp+树状数组+莫干山算法)

    题意:一个 1e9*1e9的方格,从(0,0)走到(1e9,1e9),有个方格有价值,特殊的经过方格可获得价值,每次只能向右.下.右下走,只有右下走到方格的才能获得价值,问最大获得的价值是多少 官方题 ...

  8. HDU 6447 YJJ's Salesman

    题目传送门 代码: #include<bits/stdc++.h> using namespace std;#define lson rt<<1,l,mid #define r ...

  9. 2018中国大学生程序设计竞赛-网络选拔赛题解

    以下所有AC题解程序来自"仙客传奇"团队. A. Buy and Resell AC的C++语言程序: #include<iostream> #include<c ...

最新文章

  1. python 异常分类_python的异常处理
  2. Struts2里的Action返回Json数据
  3. Got minus one from a read call异常
  4. php中的$_server,细说PHP中的$_SERVER
  5. (转)NSIS使用心得
  6. flutter 国际化_Flutter 开发实战资源推荐
  7. Base64编码解码原理
  8. c mysql 工具类_Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类
  9. C# 连接SQL Server数据库的几种方式--server+data source等方式
  10. try...catch...finally的陷阱——加锁的线程开发经验分享
  11. 带你彻底明白 Android Studio 打包混淆
  12. Google浏览器代理设置
  13. 宝塔控制面板配置Nginx 安全证书
  14. No package ‘libmatekbd‘ found
  15. 新出的计算机语言,新编程语言是鸡肋?听听创始人们怎么说
  16. 关于 Win32/Conficker.B 蠕虫的病毒警报
  17. 感觉c语言入门经典看不懂,c语言入门经典怎么样_学c语言看什么书_c语言入门自学(3)...
  18. http中get和post详解
  19. springboot社区再生资源上门回收平台毕业设计-附源码072049
  20. 来自雨林木风的Linux发行版: Ylmf Linux

热门文章

  1. matlab的peer啥意思,科学网—Matlab读取PEER地震动记录数据库加速度数据函数 - 王德才的博文...
  2. 为快捷方式文件(lnk文件)右键菜单添加“打开所在文件夹”
  3. Zabbix监控系统搭建
  4. CommandLineRunner
  5. 狄克斯特拉算法(Dijkstra)——算法思想及代码实现
  6. ABUMN 公司内资产批量转移
  7. 使用AVPlayer遇到的那些坑
  8. An internal error occurred during: Validating SYYH. Java heap space
  9. EXCEL多页打印保留表头
  10. 计算机老师新年贺卡祝福语,2015献给老师的新年贺卡祝福语