题解:

昨天好像做了个几乎一模一样的题目

按照ti排序 |p[i]-p[j]|<=2*(t[i]-t[j])

然后去绝对值变为三维偏序

发现后两个式子可以推出ti<tj

所以就变成二维偏序 按照一个排序套线段树就可以了

代码非常好写

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rint register ll
  4. #define IL inline
  5. #define rep(i,h,t) for (rint i=h;i<=t;i++)
  6. #define dep(i,t,h) for (rint i=t;i>=h;i--)
  7. #define ll long long
  8. #define mid ((h+t)>>1)
  9. const ll N=2e5;
  10. const ll N2=6e6;
  11. const ll INF=1e9;
  12. struct re{
  13. ll a,b,p,v,t;
  14. }a[N];
  15. bool cmp(re x,re y)
  16. {
  17. return x.a<y.a;
  18. }
  19. ll cnt;
  20. struct sgt{
  21. ll ls[N2],rs[N2],data[N2];
  22. void insert(ll &x,ll h,ll t,ll pos,ll k)
  23. {
  24. if (!x) x=++cnt;
  25. data[x]=max(data[x],k);
  26. if (h==t) return;
  27. if (pos<=mid) insert(ls[x],h,mid,pos,k);
  28. else insert(rs[x],mid+,t,pos,k);
  29. }
  30. ll find(ll x,ll h,ll t,ll h1,ll t1)
  31. {
  32. if (h1<=h&&t<=t1) return(data[x]);
  33. ll ans=;
  34. if (h1<=mid) ans=max(ans,find(ls[x],h,mid,h1,t1));
  35. if (mid<t1) ans=max(ans,find(rs[x],mid+,t,h1,t1));
  36. return(ans);
  37. }
  38. }S;
  39. int main()
  40. {
  41. freopen("1.in","r",stdin);
  42. freopen("1.out","w",stdout);
  43. ios::sync_with_stdio(false);
  44. ll w,n;
  45. cin>>w>>n;
  46. rep(i,,n)
  47. {
  48. cin>>a[i].t>>a[i].p>>a[i].v;
  49. a[i].a=*a[i].t-a[i].p;
  50. a[i].b=*a[i].t+a[i].p;
  51. }
  52. sort(a+,a+n+,cmp);
  53. ll ans=;
  54. ll rt=;
  55. rep(i,,n)
  56. {
  57. ll tmp=S.find(,,INF,,a[i].b)+a[i].v;
  58. ans=max(ans,tmp);
  59. S.insert(rt,,INF,a[i].b,tmp);
  60. }
  61. cout<<ans<<endl;
  62. return ;
  63. }

【bzoj2131】免费的馅饼 dp+树状数组的更多相关文章

  1. [bzoj2131]免费的馅饼_树状数组

    免费的馅饼 bzoj-2131 题目大意: 注释:$1\le n \le 10^5$,$1\le w \le 10^8$. 想法:首先,想到dp 状态:dp[i][j]表示i分钟在位置j的最大收益 优 ...

  2. bzoj2131: 免费的馅饼(树状数组)

    Description Input 第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5). 接下来n行,每一行给出了一块馅饼的信息.由三个正整数组成 ...

  3. 树形DP+树状数组 HDU 5877 Weak Pair

    //树形DP+树状数组 HDU 5877 Weak Pair // 思路:用树状数组每次加k/a[i],每个节点ans+=Sum(a[i]) 表示每次加大于等于a[i]的值 // 这道题要离散化 #i ...

  4. bzoj 1264 [AHOI2006]基因匹配Match(DP+树状数组)

    1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 793  Solved: 503[Submit][S ...

  5. 【bzoj2274】[Usaco2011 Feb]Generic Cow Protests dp+树状数组

    题目描述 Farmer John's N (1 <= N <= 100,000) cows are lined up in a row andnumbered 1..N. The cows ...

  6. 奶牛抗议 DP 树状数组

    奶牛抗议 DP 树状数组 USACO的题太猛了 容易想到\(DP\),设\(f[i]\)表示为在第\(i\)位时方案数,转移方程: \[ f[i]=\sum f[j]\;(j< i,sum[i] ...

  7. bzoj 2131: 免费的馅饼【dp+树状数组】

    简单粗暴的dp应该是把馅饼按时间排序然后设f[i]为i接到馅饼能获得的最大代价,转移是f[i]=max(f[j])+v[i],t[j]<=t[i],2t[i]-2t[j]>=abs(p[i ...

  8. codeforces 597C C. Subsequences(dp+树状数组)

    题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...

  9. HDU 2227 Find the nondecreasing subsequences (DP+树状数组+离散化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2227 Find the nondecreasing subsequences             ...

随机推荐

  1. 【转】Java并发编程:如何创建线程?

    一.Java中关于应用程序和进程相关的概念 在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认是java.exe或者javaw.exe(windows下可以通过 ...

  2. GNU Wget 1.19.1 static built on mingw32

    http://pan.baidu.com/s/1sluFAVj #wget --version GNU Wget 1.19.1 built on mingw32. -cares +digest -gp ...

  3. NodeJS+Express+MySQL开发小记(2):服务器部署

    http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/ NodeJS+Express+MySQL开发小记(1)里讲过 ...

  4. ASP.NET提供三种主要形式的缓存

    ASP.NET提供三种主要形式的缓存:页面级输出缓存.用户控件级输出缓存(或称为片段缓存)和缓存API.

  5. Vuex与axios介绍

    Vuex集中式状态管理里架构 axios (Ajax) Vuex集中式状态管理架构 -简单介绍: vuex是一个专门为Vue.js设计的集中式状态管理架构. 我们把它理解为在data中需要共享给其他组 ...

  6. tcp和udp协议的聊天 和udp协议的时间同步机制-----编码

    tcp协议聊天 服务端:: 客户端 udp协议的聊天 ############ udp协议 ########### 服务器 import socket sk = socket.socket(type ...

  7. [PHP]curl上传多文件

    码一下curl上传多文件的行 5.5之前版本的写法 $file = array( 'pic[0]'=>"@E:\\wwwroot\\10003\\temp_56.ini;type=te ...

  8. 用sitemap做主页的菜单栏

    首先打开vs--> 新建项-->选择站点地图. 站点地图建好了  其中具体的节点根据自己情况配好就行. 接下来是两个非常重要的类: using System.Collections.Gen ...

  9. mysql优化——show processlist命令详解

    SHOW PROCESSLIST显示哪些线程正在运行 不在mysql提示符下使用时用mysql -uroot  -e 'Show  processlist'   或者   mysqladmin pro ...

  10. Nginx(./configure --help)

    # ./configure --help --help print this message --prefix=PATH set installation prefix --sbin-path=PAT ...