【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 ...
随机推荐
- 【转】Java并发编程:如何创建线程?
一.Java中关于应用程序和进程相关的概念 在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认是java.exe或者javaw.exe(windows下可以通过 ...
- 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 ...
- NodeJS+Express+MySQL开发小记(2):服务器部署
http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/ NodeJS+Express+MySQL开发小记(1)里讲过 ...
- ASP.NET提供三种主要形式的缓存
ASP.NET提供三种主要形式的缓存:页面级输出缓存.用户控件级输出缓存(或称为片段缓存)和缓存API.
- Vuex与axios介绍
Vuex集中式状态管理里架构 axios (Ajax) Vuex集中式状态管理架构 -简单介绍: vuex是一个专门为Vue.js设计的集中式状态管理架构. 我们把它理解为在data中需要共享给其他组 ...
- tcp和udp协议的聊天 和udp协议的时间同步机制-----编码
tcp协议聊天 服务端:: 客户端 udp协议的聊天 ############ udp协议 ########### 服务器 import socket sk = socket.socket(type ...
- [PHP]curl上传多文件
码一下curl上传多文件的行 5.5之前版本的写法 $file = array( 'pic[0]'=>"@E:\\wwwroot\\10003\\temp_56.ini;type=te ...
- 用sitemap做主页的菜单栏
首先打开vs--> 新建项-->选择站点地图. 站点地图建好了 其中具体的节点根据自己情况配好就行. 接下来是两个非常重要的类: using System.Collections.Gen ...
- mysql优化——show processlist命令详解
SHOW PROCESSLIST显示哪些线程正在运行 不在mysql提示符下使用时用mysql -uroot -e 'Show processlist' 或者 mysqladmin pro ...
- Nginx(./configure --help)
# ./configure --help --help print this message --prefix=PATH set installation prefix --sbin-path=PAT ...