首先我们很容易看出是一个DP

然后容易看出是数据结构优化DP

但是这个限制条件有点鬼畜:

abs(p[i]-p[j])/2<=(t[i]-t[j])

p[i]>p[j] -> t[i]*2-p[i]>=t[j]*2-p[j]

p[i]<p[j] -> t[i]*2+p[i]>=t[j]*2+p[j]

这样的话我只会树套树(后来想想带修主席树应该也行?)。。。。。信仰不够去%题解

结果发现这两个东西是可以放在一起的,也就是说如果满足p[i]>p[j]和t[i]*2-p[i]>=t[j]*2-p[j]那t[i]*2+p[i]>=t[j]*2+p[j]也满足(好像很显然啊是我柿子画得太丑看不出来吗)

就成了水水的二维偏序了。。。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; int s[];
int lowbit(int x){return x&-x;}
void change(int x,int k)
{
while(x<=)
{
s[x]=max(s[x],k);
x+=lowbit(x);
}
}
int getmax(int x)
{
int ret=;
while(x>)
{
ret=max(ret,s[x]);
x-=lowbit(x);
}
return ret;
} struct node{int w1,w2,v;}a[];
bool cmp(node n1,node n2){return n1.w1==n2.w1?n1.w2<n2.w2:n1.w1<n2.w1;}
int lslen,ls[];
int main()
{
int W,n,t,p;
scanf("%d%d",&W,&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&t,&p,&a[i].v);
a[i].w1=t*-p;
a[i].w2=t*+p;
ls[++lslen]=a[i].w2;
}
sort(a+,a+n+,cmp);
sort(ls+,ls+lslen+);
lslen=unique(ls+,ls+lslen+)-ls-;
for(int i=;i<=n;i++)
a[i].w2=lower_bound(ls+,ls+lslen+,a[i].w2)-ls; for(int i=;i<=n;i++)change(a[i].w2,getmax(a[i].w2)+a[i].v);
printf("%d\n",getmax(lslen));
return ;
}

bzoj2131: 免费的馅饼的更多相关文章

  1. [bzoj2131]免费的馅饼_树状数组

    免费的馅饼 bzoj-2131 题目大意: 注释:$1\le n \le 10^5$,$1\le w \le 10^8$. 想法:首先,想到dp 状态:dp[i][j]表示i分钟在位置j的最大收益 优 ...

  2. [bzoj2131]免费的馅饼 树状数组优化dp

    2131: 免费的馅饼 Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description Input 第一行是 ...

  3. bzoj2131 免费的馅饼——树状数组优化dp

    中文题目,问你最后能最多够得到多少价值的馅饼.因为宽度10^8且个数为10^5.所以不可以用dp[x][y]表示某时间某地点的最大权值. 假设你在x点处接到饼后想去y点接饼.那么需要满足的条件是t[y ...

  4. BZOJ2131 免费的馅饼【线段树优化DP】

    Input 第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5). 接下来n行,每一行给出了一块馅饼的信息.由三个正整数组成,分别表示了每个馅饼落到 ...

  5. bzoj2131: 免费的馅饼(树状数组)

    Description Input 第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5). 接下来n行,每一行给出了一块馅饼的信息.由三个正整数组成 ...

  6. 【BZOJ】2131: 免费的馅饼

    2131: 免费的馅饼 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 508  Solved: 310[Submit][Status][Discuss ...

  7. 【bzoj2131】免费的馅饼 dp+树状数组

    题解: 昨天好像做了个几乎一模一样的题目 按照ti排序 |p[i]-p[j]|<=2*(t[i]-t[j]) 然后去绝对值变为三维偏序 发现后两个式子可以推出ti<tj 所以就变成二维偏序 ...

  8. bzoj 2131 : 免费的馅饼 (树状数组优化dp)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2131 思路: 题目给出了每个馅饼的下落时间t,和位置p,以及价值v,我们可以得到如下状态 ...

  9. bzoj 2131 免费的馅饼

    Written with StackEdit. Description Input 第一行是用空格隔开的二个正整数,分别给出了舞台的宽度\(W\)(\(1\)到\(10^8\)之间)和馅饼的个数\(n ...

随机推荐

  1. NSAllowsArbitraryLoadsInWebContent NSAllowsArbitraryLoads

    By specifying NSAllowsArbitraryLoadsInWebContent, you are overriding NSAllowsArbitraryLoads on iOS 1 ...

  2. unittest自定义运行全量case or 运行指定的单个或多个case

    import unittest import os from case.zufang.test_api_area_rentProlist import Zf1 case_path = os.path. ...

  3. jquery 时间戳转日期

    搜了一下发现这个时间戳转时间的代码很好用,附上实践的代码 结果如下 / * * 时间戳转日期 * @param timestamp * @returns {*} */ function timesta ...

  4. MySQL数据导入sql文件过程中出错

    错误类型: ERROR 1231 (42000): Variable 'time_zone' can't be set to the value of 'NULL' ERROR 1231 (42000 ...

  5. Django DTL模板语法中的过滤器

    template_filter_demo 过滤器相关: 一.形式:小写{{ name | lower }} 二.串联:先转义文本到HTML,再转换每行到 <p> 标签{{ my_text| ...

  6. graph.h

    #ifndef _GRAPH_#define _GRAPH_#include<stdio.h>#include<stdlib.h>#include<string.h> ...

  7. JavaSE 学习笔记之IO流(二十二)

    IO流:用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不同,分为字节 ...

  8. python写第一个网页

    1>安装django见别的博客http://djangobook.py3k.cn/2.0/chapter03/ 2>运行开发服务器 在命令提示符里进入目录mytest:cd: mytest ...

  9. Scala解析Json格式

    Scala解析Json格式 代码块 Scala原生包 导入包 import scala.util.parsing.json._ def main(args: Array[String]): Unit ...

  10. [COGS309] [USACO 3.2] 香甜的黄油

    ★★   输入文件:butter.in   输出文件:butter.out   简单对比 时间限制:1 s   内存限制:128 MB 描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖 ...