bzoj2131: 免费的馅饼(树状数组)
Description
Input
第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5)。 接下来n行,每一行给出了一块馅饼的信息。由三个正整数组成,分别表示了每个馅饼落到舞台上的时刻t[i](1到10^8秒),掉到舞台上的格子的编号p[i](1和w之间),以及分值v[i](1到1000之间)。游戏开始时刻为0。输入文件中同一行相邻两项之间用一个空格隔开。输入数据中可能存在两个馅饼的t[i]和p[i]都一样。
Output
一个数,表示游戏者获得的最大总得分。
Sample Input
1 2 3
5 2 3
6 3 4
1 1 5
Sample Output
【数据规模】
对于100%的数据,1<=w,t[i]<=10^8,1<=n<=100000。
首先不难得到转移方程$dp[i]=max\{dp[j]\}+val[i](|p_i-p_j|\leq 2t_i-2t_j)$
考虑怎么转换限制条件,$p_i-p_j\leq 2t_i-2t_j$且$p_j-p_i\leq 2t_i-2t_j$,则有$2t_i-p_i\geq 2t_j-p_j$且$2t_i+p_i\geq 2t_j+p_j$
那么就是一个二维偏序问题了,先排序消除第一维的影响,然后用树状数组维护第二维就好了
//minamoto
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,:;}
ll read(){
#define num ch-'0'
char ch;bool flag=;ll res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
const int N=5e5+;
int n,w;ll c[N];
inline void add(int x,ll y){
for(;x<=n+;x+=x&-x) cmax(c[x],y);
}
ll query(int x){
ll res=;for(;x;x-=x&-x) cmax(res,c[x]);return res;
}
struct node{
int x,y;ll v;
inline bool operator <(const node &b)const
{return x==b.x?y<b.y:x<b.x;}
}a[N];int b[N];
int main(){
// freopen("testdata.in","r",stdin);
w=read(),n=read();
for(int i=;i<=n;++i){
int t=read(),p=read();a[i].v=read();
a[i].x=*t+p,a[i].y=*t-p,b[i]=a[i].y;
}
sort(a+,a++n),sort(b+,b+n+);
for(int i=;i<=n;++i){
ll res=;int pos=lower_bound(b+,b++n,a[i].y)-b;
res=query(pos)+a[i].v,add(pos,res);
}
printf("%lld\n",query(n+));
return ;
}
bzoj2131: 免费的馅饼(树状数组)的更多相关文章
- [bzoj2131]免费的馅饼 树状数组优化dp
2131: 免费的馅饼 Time Limit: 10 Sec Memory Limit: 259 MB[Submit][Status][Discuss] Description Input 第一行是 ...
- bzoj2131 免费的馅饼——树状数组优化dp
中文题目,问你最后能最多够得到多少价值的馅饼.因为宽度10^8且个数为10^5.所以不可以用dp[x][y]表示某时间某地点的最大权值. 假设你在x点处接到饼后想去y点接饼.那么需要满足的条件是t[y ...
- bzoj 2131 : 免费的馅饼 (树状数组优化dp)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2131 思路: 题目给出了每个馅饼的下落时间t,和位置p,以及价值v,我们可以得到如下状态 ...
- [bzoj2131]免费的馅饼_树状数组
免费的馅饼 bzoj-2131 题目大意: 注释:$1\le n \le 10^5$,$1\le w \le 10^8$. 想法:首先,想到dp 状态:dp[i][j]表示i分钟在位置j的最大收益 优 ...
- 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 ...
- [noip科普]关于LIS和一类可以用树状数组优化的DP
预备知识 DP(Dynamic Programming):一种以无后效性的状态转移为基础的算法,我们可以将其不严谨地先理解为递推.例如斐波那契数列的递推求法可以不严谨地认为是DP.当然DP的状态也可以 ...
- 【转】关于LIS和一类可以用树状数组优化的DP 预备知识
原文链接 http://www.cnblogs.com/liu-runda/p/6193690.html 预备知识 DP(Dynamic Programming):一种以无后效性的状态转移为基础的算法 ...
- CF1556E-Equilibrium【栈,树状数组】
正题 题目连接:https://codeforces.com/contest/1556/problem/E 题目大意 两个长度为\(n\)的序列\(a,b\),\(q\)次询问一个区间\([l,r]\ ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
随机推荐
- Linux中的进程与线程
介绍了Linux下fork()创建进程以及使用pthread_create()创建线程的方法 1. 基于进程的斐波那契数列 在下面的代码中,由子进程进行斐波那契数列的输出,父进程要等待子进程输出完毕, ...
- hdu6109(并查集+set/倍增)
题目 http://acm.hdu.edu.cn/showproblem.php?pid=6109 分析 对于相同的条件,明显直接并查集 对于不同的条件,可以用set来保存,并查集合并的时候也要对se ...
- 分析Linux文件rwx属性的含义
Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来. ls -l(这个参数是字母L的小写,不是数字1) 这个命 ...
- 实时更新数据的jQuery图表插件DEMO演示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Markdown 语法和代码高亮
安装 Python Markdown 安装命令 pip install markdown 视图中渲染 Markdown blog/views.py import markdown from djang ...
- [Javascript] Use JavaScript's for-in Loop on Objects with Prototypes
Loops can behave differently when objects have chained prototype objects. Let's see the difference w ...
- Office EXCEL 如何设置最大行高
对于单个单元格行来说,行高必须在0-409之间 但是如果合并了两个单元格,则行高就扩展了一倍,不止409,而是两倍的409.
- OpenCV---在图片上加入文字
/****************************************** func:cvText desc:put text on an image @param img The ima ...
- Java基础实例
打印等腰三角形代码 public class ForForTest{ public static void main(String []args){ for(int x=0;x<5;x++){ ...
- 自动填充输入框 Asp .Net Mvc
1 效果 当在一个文本框中输入时,可以自动查找相关选项,然后加载出来以供参考 2 前台代码 <link href="~/Content/themes/base/jquery-u ...