【bzoj2131】免费的馅饼 dp+树状数组
题解:
昨天好像做了个几乎一模一样的题目
按照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+树状数组的更多相关文章
- [bzoj2131]免费的馅饼_树状数组
免费的馅饼 bzoj-2131 题目大意: 注释:$1\le n \le 10^5$,$1\le w \le 10^8$. 想法:首先,想到dp 状态:dp[i][j]表示i分钟在位置j的最大收益 优 ...
- bzoj2131: 免费的馅饼(树状数组)
Description Input 第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5). 接下来n行,每一行给出了一块馅饼的信息.由三个正整数组成 ...
- 树形DP+树状数组 HDU 5877 Weak Pair
//树形DP+树状数组 HDU 5877 Weak Pair // 思路:用树状数组每次加k/a[i],每个节点ans+=Sum(a[i]) 表示每次加大于等于a[i]的值 // 这道题要离散化 #i ...
- bzoj 1264 [AHOI2006]基因匹配Match(DP+树状数组)
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 793 Solved: 503[Submit][S ...
- 【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 ...
- 奶牛抗议 DP 树状数组
奶牛抗议 DP 树状数组 USACO的题太猛了 容易想到\(DP\),设\(f[i]\)表示为在第\(i\)位时方案数,转移方程: \[ f[i]=\sum f[j]\;(j< i,sum[i] ...
- 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 ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- HDU 2227 Find the nondecreasing subsequences (DP+树状数组+离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2227 Find the nondecreasing subsequences ...
随机推荐
- Unity3D动态生成多边形
来自https://blog.csdn.net/qq_14903317/article/details/69668521 自由绘制多边形 https://blog.csdn.net/lei_710 ...
- 题解-bzoj2560 串珠子
刚被教练数落了一通,心情不好,来写篇题解 Problem bzoj2560 题目简述:给定\(n\)个点的,每两个点\(i,j\)之间有\(c_{i,j}\)条直接相连的路(其中只能选一条或不选),问 ...
- 关于nginx服务器上传限制
nginx的上传参数问题,需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中,在php中无法log到访问的.修改了php.ini文件如下:参数 设置 说明fi ...
- GetCheckProxy
@echo off setlocal enabledelayedexpansion set infile=free.txt set url=https://www.google.com/?gws_rd ...
- 43)django-用户认证,授权,自定义用户认证
##用户认证 django自带用户认证系统,包括认证和授权.用户认证系统由用户,权限,用户组,密码,cookie和session给组成. ###用户认证系统设置 #settings.py INSTAL ...
- python-re模块和subprocess模块
一.re模块 re中文为正则表达式,是字符串处理的常用工具,通常用来检索和替换符合某个模式的文本. 注:要搜索的模式和字符串都可以是unicode字符串(str)和8位字符串(bytes),但是不能将 ...
- python-模块入门
一.模块介绍 模块:模块就是一系列功能的集合体 模块有三种来源: 1.内置模块 2.第三方的模块 3.自定义模块 模块的格式: 1使用python编写的.py文件 2.已被编译为共享库或D ...
- hive学习04-员工部门表综合案例
知识点: 格式转换:cast(xxx as int) 按某列分桶某列排序,排序后打标机:例如:求每个地区工资最高的那个人的信息: ROW_NUMBER() OVER(PARTITION BY COLU ...
- 大数据mapreduce二分法ip定位之Python实现
ip定位数据大约12M,采用-chacheFile 分发 文件来源https://pan.baidu.com/s/1J0pwTafHgt4T0k3vV_gC-A 格式大致格式如下: 0.0.0.0 0 ...
- Vue-tab选项卡
<div id='test'> <ul class="nav" > <li v-for='(item,index) in dataNav' @clic ...