P7302 [NOI1998] 免费的馅饼

news/2024/12/25 21:54:59/文章来源:https://www.cnblogs.com/LG017/p/18631495

P7302 [NOI1998] 免费的馅饼

题目描述

SERKOI 最新推出了一种叫做“免费馅饼”的游戏:游戏在一个舞台上进行。舞台的宽度为 \(w\) 格(从左到右依次用 \(1\)\(w\) 编号),游戏者占一格。开始时游戏者可以站在舞台的任意位置,手里拿着一个托盘。下图为天幕的高度为 \(4\) 格时某一个时刻游戏者接馅饼的情景。

游戏开始后,从舞台天幕顶端的格子中不断出现馅饼并垂直下落。游戏者左右移动去接馅饼。游戏者每秒可以向左或向右移动一格或两格,也可以站在原地不动。

当馅饼在某一时刻恰好到达游戏者所在的格子中,游戏者就收集到了这块馅饼。当馅饼落在一个游戏者不在的格子里时该馅饼就消失。

写一个程序,帮助我们的游戏者收集馅饼,使得所收集馅饼的分数之和最大。

提示

对于 \(100\%\) 的数据,\(1 \leq w \leq 10^8\)\(1 \leq n \leq 10^5\)\(1\leq t_i \leq 10^8\)\(1\leq p_i \leq w\)\(1\leq v_i \leq 1000\)

Solution:

有趣 dp 题。

首先我们不难想到拆绝对值:
\(t_{j} \le t_{i}\) 对于 \(i\) 所有合法的 \(j\) 应该满足:

\[ \left\{ \begin{aligned} p_{i}-p_{j} \le 2*(t_{i}-t{j}) p_{i} \ge p_{j} \\p_{j}-p_{i} \le 2*(t_{i}-t{j}) p_{j} \ge p_{i}\end{aligned} \right. \]

然后我们整理一下:

\[ \left\{ \begin{aligned}p_{i}-2t_{i} \le p_{j}-2t_{j} p_{i} \ge p_{j} \\p_{j}+2t_{j} \le p_{i}+2t_{i} p_{j} \ge p_{i}\end{aligned} \right. \]

$     \Longrightarrow $

\[ \left\{ \begin{aligned}2t_{j}-p_{j} \le 2t_{i}-p_{i} p_{i} \ge p_{j} \\p_{j}+2t_{j} \le p_{i}+2t_{i} p_{j} \ge p_{i}\end{aligned} \right. \]

$     \Longrightarrow $

\[ \left\{ \begin{aligned}2t_{j}-p_{j} \le 2t_{i}-p_{i} p_{i} \ge p_{j} \\+       ..\\p_{j} \le p_{i}       .\\\\ p_{j}+2t_{j} \le p_{i}+2t_{i} p_{j} \ge p_{i}\\+       ..\\ -p_{j} \le -p_{i}      ..\\\end{aligned} \right. \]

$       \Longrightarrow $

\[ \left\{ \begin{aligned}2t_{j}\le 2t_{i} p_{i} \ge p_{j} \\2t_{j} \le 2t_{i} p_{j} \ge p_{i} \\\end{aligned} \right. \]

$         \Longrightarrow $

\[ \left\{ \begin{aligned}t_{j}\le t_{i} \\ \end{aligned} \right. \]

也就是说,如果上述两种情况都被满足了,那么这个 \(j\) 就一定合法

即只要满足

\[ \left\{ \begin{aligned}2t_{j}-p_{j} \le 2t_{i}-p_{i}  \\and     \\ p_{j}+2t_{j} \le p_{i}+2t_{i}  \\\end{aligned} \right. \]

然后怎么做?当然是线段树优化 dp 了,我们先对所有点以 \(2t_{i}-p_{i}\) 为关键字排序,然后开一颗线段树,在区间 \([1,2t_{i}+p_{i}]\) 上查询 \(f_{j}\) 的最大值。将当前答案 \(f_{i}=f_{j}+w_{i}\) 挂在线段树下标 \(2t_{i}+p_{i}\) 上。

然后这题就做完了

Code:

#include<bits/stdc++.h>
const int N=1e5+5;
const int inf=3e8;
using namespace std;
inline int Max(int x,int y){return x > y ? x : y;}
inline int Min(int x,int y){return x < y ? x : y;}
struct Node{int tim,dis,w;bool operator <(const Node &e)const{return 2*tim-dis < 2*e.tim-e.dis;}
}q[N];
int n,m,cnt;
struct Segment_Tree{int cnt,rt[N];struct Tree{int ls,rs,val;}t[N*32];void pushup(int x){t[x].val=Max(t[t[x].ls].val,t[t[x].rs].val);}void upd(int &x,int l,int r,int pos,int val){if(!x)x=++cnt;if(l==r){t[x].val=Max(t[x].val,val);return;}int mid=l+r>>1;if(pos<=mid)upd(t[x].ls,l,mid,pos,val);if(mid<pos) upd(t[x].rs,mid+1,r,pos,val);pushup(x);}int query(int x,int l,int r,int L,int R){if(L<=l&&r<=R){return t[x].val;}int mid=l+r>>1,res=0;if(L<=mid)res=Max(res,query(t[x].ls,l,mid,L,R));if(mid<R) res=Max(res,query(t[x].rs,mid+1,r,L,R));return res;}#undef ls#undef rs
}T;
int f[N];
void work()
{cin>>n>>m;for(int i=1;i<=m;i++){scanf("%d%d%d",&q[i].tim,&q[i].dis,&q[i].w);}sort(q+1,q+1+m);cnt=m;for(int i=1;i<m;i++){if(q[i].dis==q[i+1].dis&&q[i].tim==q[i+1].tim)q[i+1].w+=q[i].w,q[i]={inf,inf,inf},cnt--;}sort(q+1,q+1+cnt);for(int i=1;i<=cnt;i++){f[i]=q[i].w;f[i]=T.query(T.rt[0],-inf,inf,-inf,2*q[i].tim+q[i].dis)+q[i].w;T.upd(T.rt[0],-inf,inf,2*q[i].tim+q[i].dis,f[i]);//cout<<"pos:"<<2*q[i].tim-q[i].dis<<" "<<2*q[i].tim+q[i].dis<<"="<<f[i]<<"\n";}int ans=0;for(int i=1;i<=cnt;i++)ans=Max(ans,f[i]);printf("%d", ans);
}
int main()
{//freopen("P7302_3.in","r",stdin);freopen("P7302.out","w",stdout);work();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858861.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSRF跨站请求伪造攻击详解

本文为《白帽子Web讲安全(第2版)》——跨站请求伪造(CSRF)章节的阅读总结及摘录,详述了CSRF攻击的定义及防御方法等。一、CSRF攻击概述 1.1 CSRF攻击定义用户浏览器加载恶意网站时,浏览器中的恶意网站页面向另一目标网站自主发起一个恶意HTTP请求,该攻击方式即为CSRF攻击。…

R数据分析:工具变量回归的做法和解释,实例解析

前几天看了个视频,是2024年诺贝尔经济学奖得主在分享自己的研究,研究问题是“制度如何形成并影响经济繁荣”,在研究这个问题的时候他的PPT中提到研究的统计过程中用到了工具变量,想着再次大家介绍一下这个方法。说不定利用这个方法,哪天我的读者里面也出个诺贝尔奖得主呢,…

昆工25考研复试时间预测(信自院)

昆工昆明理工大学、计算机技术、人工智能、软件工程、网络空间安全、891计算机专业核心综合、计算机系统结构、计算机软件与理论、计算机应用技术、通信工程、817信号与系统、信号与信息处理、通信与信息系统、通信工程(含宽带网络、移动通信等)

WebP图片格式

WebP WebP 是一种图片文件格式,由 Google 开发,用于提供更好的图像压缩性能。支持有损压缩和无损压缩,同时支持透明度(类似 PNG 格式的 alpha 通道)和动画(类似 GIF 格式)。 WebP特点高效压缩 •有损压缩:与 JPEG 相比,WebP 的文件体积更小,同时保持类似的图像质量。…

谁让你创建两个对象的?

如果CLASSPATH下有两个不同版本的jar包,一个版本的jar包有@Component注解,另外一个版本没有,Spring到底会不会创建Bean?问题现象 之前遇到过一个问题,在一个微服务的目录下有相同功能 jar 包的两个不同的版本,其中一个版本里面的类有 @Component 注解,另外一个版本的类里…

打印三角形金字塔 、debug、java的方法、命令行传参、可变参数20241225

打印三角形金字塔 debug20241225package com.pangHuHuStudyJava.struct; public class Print_Tran {public static void main(String[] args) {for (int j = 0; j < 5; j++) {for (int r = 5; r > j; r--) {System.out.print( );}for (int s = 0; s < ((2*j)+1); s++…

OpenAI o3模型震撼发布:编程界的革命性突破,程序员的未来将何去何从?

当人工智能踏足编程领域,生产力的提升让人瞠目结舌。就在近日,OpenAI 发布了全新的 o3模型,其强大的代码生成能力和上下文理解能力,将编程带入了一个全新的时代。是机遇还是挑战?程序员们将如何面对这场技术风暴?o3模型究竟有何与众不同之处?它的发布会对程序员和整个软…

[Java/压缩] Java读取Parquet文件

序:契机生产环境有设备出重大事故,又因一关键功能无法使用,亟需将生产环境的原始MQTT报文(以 parquet 文件格式 + zstd 压缩格式 落盘)DOWN到本地,读取并解析。本文聚焦在 本地电脑,用 java 读取 parquet 文件相当多网络文档的读取代码无法正常运行,有必要记录一二,后续…

莫队从入门到人门

普通莫队 详介(P2709 小B的询问) 普通莫队处理问题的前提是问题可以离线,多次区间查询,\(O(n\sqrt m)\) 能过。 我们以 P2709 小B的询问 为例,假设当前区间为 \([l,r]\),答案为 \(ans\),那么 \(r\) 右移一位时,新加入一个数 \(x\),我们只要把 \(ans\) 加上 \(x\) 的贡…

nacos安装注意事项

一年多没玩了,都快忘了,最新版本已经2.3.x了 3.0也快问世了 Linux/Unix/Mac 单机启动命令: sh startup.sh -m standalone Windows startup.cmd -m standalone如果直接未启动就是集群模式,但是要注意nacos.properties里面配置集群信息本文来自博客园,作者:余生请多指教ANT…

PWN系列-2.27版本利用setcontext实现orw

PWN系列-2.27版本利用setcontext实现orw 知识 开启沙箱之后,我们就只能用orw的方式来得到flag。 这篇博客主要讲通过劫持__free_hook或者__malloc_hook利用setcontext在libc或者heap上执行rop或者shellcode。 在free堆块的时候,rdi会指向堆块,在检测到__free_hook有值的情况…

shell语法保姆级教程

Shell脚本 建立一个sh脚本 touch 1.sh (新建脚本文件)vi 1.sh(编写文件内容)按 i 可以写入内容,按esc :wq退出并保存解释 1、创建脚本文件 2、脚本文件中第一行为指定脚本编译器:# !/bin/bash 最终调用的都是dash执行shell脚本命令: 1、./1.sh难道我们必须要修改权限才能执…