【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 ...
随机推荐
- C++著名程序库的比较和学习经验
内容目录:1.C++各大有名库的介绍——C++标准库2.C++各大有名库的介绍——准标准库Boost3.C++各大有名库的介绍——GUI4.C++各大有名库的介绍——网络通信5.C++各大有名库的介绍 ...
- 021_supervise进行管理利器
一.公司的类似ansible的工具也是用supervise管理的 [admin@mjyall-test-1 /service/ansible-oc-agent]$ ps -ef|grep 19070 ...
- zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程
zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程 因为Zabbix自带的MySQL监控没有提供可以直接使用的Key,所以一般不采用 ...
- Java中instanceof与getClass的区别
在比较一个类和另一个类是否属于同一个类实例的时候,通常可以采用instanceof和getClass两种方法比较两者是否相等来判断,但是两者在判断上面是有差别的,下面通过代码说明: public cl ...
- Appium+Java(三)搭建环境之踩过的坑
一.原因 有最少两年多没写手机自动化测试了,正巧公司有需求搞TOC端自动化测试调研,先入为主,因为之前写过appium所以先用它埋点试水了 二.现象: 1.我早期的appium版本是v1.4.16 2 ...
- layui 常见的表单元素
第一步:引用文件 效果图(日期.文件上传在下面): <form class="layui-form" action=""> <div clas ...
- 在XIB 或者 SB 上面 实现 半透明的背景上添加UILabel是文字不透明
设透明背景的时候直接设置RGB值 然后设置Opacity即可
- js调用ajax案例
js调用ajax案例 测试地址:http://www.w3school.com.cn/tiy/t.asp?f=ajax_get 嵌入下面代码,点击提交,再点击请求数据.就可以看到结果了. <ht ...
- 《精通Oracle SQL(第2版)》PDF
一:下载途径 二:图书图样 三:目录 第1章 SQL核心 1.1 SQL语言 1.2 数据库的接口 1.3 SQL*Plus回顾 1.3.1 连接到数据库 1.3.2 配置SQL*Plus环境 1.3 ...
- dubbo源码之Directory与LoadBalance
Directory: 集群目录服务Directory, 代表多个Invoker, 可以看成List<Invoker>,它的值可能是动态变化的比如注册中心推送变更.集群选择调用服务时通过目录 ...