题解:

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

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

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

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

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

代码非常好写

代码:

#include <bits/stdc++.h>
using namespace std;
#define rint register ll
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define ll long long
#define mid ((h+t)>>1)
const ll N=2e5;
const ll N2=6e6;
const ll INF=1e9;
struct re{
ll a,b,p,v,t;
}a[N];
bool cmp(re x,re y)
{
return x.a<y.a;
}
ll cnt;
struct sgt{
ll ls[N2],rs[N2],data[N2];
void insert(ll &x,ll h,ll t,ll pos,ll k)
{
if (!x) x=++cnt;
data[x]=max(data[x],k);
if (h==t) return;
if (pos<=mid) insert(ls[x],h,mid,pos,k);
else insert(rs[x],mid+,t,pos,k);
}
ll find(ll x,ll h,ll t,ll h1,ll t1)
{
if (h1<=h&&t<=t1) return(data[x]);
ll ans=;
if (h1<=mid) ans=max(ans,find(ls[x],h,mid,h1,t1));
if (mid<t1) ans=max(ans,find(rs[x],mid+,t,h1,t1));
return(ans);
}
}S;
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
ll w,n;
cin>>w>>n;
rep(i,,n)
{
cin>>a[i].t>>a[i].p>>a[i].v;
a[i].a=*a[i].t-a[i].p;
a[i].b=*a[i].t+a[i].p;
}
sort(a+,a+n+,cmp);
ll ans=;
ll rt=;
rep(i,,n)
{
ll tmp=S.find(,,INF,,a[i].b)+a[i].v;
ans=max(ans,tmp);
S.insert(rt,,INF,a[i].b,tmp);
}
cout<<ans<<endl;
return ;
}

【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. Flash芯片你都认识吗?

    [导读]Flash存储器,简称Flash,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程的性能,还不会因断电而丢失数据,具有快速读取数据的特点;在现在琳琅满目的电子市场上,Flash总类可谓繁 ...

  2. LaTeX公式中的空格

    两个quad空格 a \qquad b 两个m的宽度 quad空格 a \quad b 一个m的宽度 大空格 a\ b 1/3m宽度 中等空格 a\;b 2/7m宽度 小空格 a\,b 1/6m宽度 ...

  3. CTex+WinEdt10.2安装详细教程与破解

    原文地址:https://www.cnblogs.com/xiachongkun/p/8176390.html Latex作为目前最好用的文档编排工具,以前只是简单会一点,现在也已经忘得差不多了.因为 ...

  4. 032_nginx配置文件安全下载

    一. server { listen 8866; server_name _; access_log /usr/local/etc/nginx/log/download.access.log main ...

  5. matlab求导数

    clc; %清屏 clear; %清除变量 close all; %关闭 syms x; %定义变量,多个变量间用空格分离 f(x) = x^3; %原函数 res = diff(f(x),x,1); ...

  6. js调用Webservice接口案例

    第一步:新建Webservice接口 主文件方法 using System;using System.Collections.Generic;using System.Web;using System ...

  7. Confluence 6 查看你的许可证细节

    希望查看你的 Confluence 许可证: 进入  > 基本配置(General Configuration). 在左侧的面板中选择 许可证详细(License Details). 你的许可证 ...

  8. 洛谷P2014 选课

    首先分析题目,这是一道树形dp的题目,是树形背包类的问题,以为每门课的先修课只有一门,所以这一定可以 构成一个森林结构,于是我们可以设计一个虚拟的根节点作为森林的根. 状态转移方程如下 dp[v][k ...

  9. 关于npm 淘宝镜像 以及package.json里包的更新

    1.淘宝镜像的设置 npm config set registry https://registry.npm.taobao.org npm config set disturl https://npm ...

  10. ionic3 点击输入 框弹出白色遮罩 并把 界面顶到上面

    这个蛋疼 问题 ,在android 上面遇到这种情况 ,键盘弹出的时候 总有一个白色的遮罩在后面出现,网上查了很久都没发现原因. 偶然发现一个方法 ,试下了下 问题解决了. 代码如下: IonicMo ...