洛谷P4254 [JSOI2008]Blue Mary开公司

本文介绍了一道编程题目,涉及线段树数据结构的应用。作者通过实现线段树,解决了一个与动态规划相结合的问题,其中涉及到对线段树的更新和查询操作,用于处理可能的亏本生意选择。代码中展示了如何构建线段树、更新节点和查询最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.luogu.com.cn/problem/P4254

李超线段树板题,注意最后要跟0比较一下大小,因为可以选择不做亏本生意

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int maxl=1e5+10;

int n,m=5e4,tot;
struct node
{
	int l,r,id;
}tr[maxl<<2];
char s[maxl];
struct line
{
	double k,b;
}a[maxl];

inline void build(int k,int l,int r)
{
	tr[k].l=l;tr[k].r=r;tr[k].id=1;
	if(l==r)
		return;
	int mid=(l+r)>>1;
	build(k<<1,l,mid);build(k<<1|1,mid+1,r);
}

inline double fun(int id,int x){return a[id].k*x+a[id].b;}

inline void upd(int k,int id)
{
	if(tr[k].l==tr[k].r)
	{
		if(fun(id,tr[k].l)>fun(tr[k].id,tr[k].l))
			tr[k].id=id;
		return;
	}
	int mid=(tr[k].l+tr[k].r)>>1;
	if(a[tr[k].id].k<a[id].k)
	{
		if(fun(id,mid)>fun(tr[k].id,mid))
		{
			upd(k<<1,tr[k].id);
			tr[k].id=id;
		}
		else upd(k<<1|1,id);
	}
	else
	{
		if(fun(id,mid)>fun(tr[k].id,mid))
		{
			upd(k<<1|1,tr[k].id);
			tr[k].id=id;
		}
		else upd(k<<1,id);
	}
}

inline double qry(int k,int x)
{
	if(tr[k].l==tr[k].r)
		return fun(tr[k].id,x);
	int mid=(tr[k].l+tr[k].r)>>1;
	if(x<=mid)
		return max(fun(tr[k].id,x),qry(k<<1,x));
	else
		return max(fun(tr[k].id,x),qry(k<<1|1,x));
}

int main()
{
	scanf("%d",&n);
	build(1,1,m);a[0].k=a[0].b=0;
	for(int i=1;i<=n;i++)
	{
		scanf("%s",s);
		if(s[0]=='P')
		{
			++tot;scanf("%lf%lf",&a[tot].b,&a[tot].k);
			a[tot].b-=a[tot].k;
			upd(1,tot);
		}
		else
		{
			int x;scanf("%d",&x);
			if(tot>0)
			{
				//printf("%.8f\n",qry(1,x));
				printf("%lld\n",max(0ll,(ll)(qry(1,x)/100)));
			}
			else puts("0");
		}
	}
	return 0;
}

 

“华为杯”第十八届中国研究生数学建模竞赛是一项全国性赛事,致力于提升研究生的数学建模与创新实践能力。数学建模是将实际问题转化为数学模型,并运用数学方法求解以解决实际问题的科学方法。该竞赛为参赛者提供了展示学术水平和团队协作精神的平台。 论文模板通常包含以下内容:封面需涵盖比赛名称、学校参赛队号、队员姓名以及“华为杯”和中国研究生创新实践系列大赛的标志;摘要部分应简洁明了地概括研究工作,包括研究问题、方法、主要结果和结论,使读者无需阅读全文即可了解核心内容;目录则列出各章节标题,便于读者快速查找;问题重述部分需详细重新阐述比赛中的实际问题,涵盖背景、原因及重要性;问题分析部分要深入探讨每个问题的内在联系与解决思路,分析各个子问题的特点、难点及可能的解决方案;模型假设与符号说明部分需列出合理假设以简化问题,并清晰定义模型中的变量和符号;模型建立与求解部分是核心,详细阐述将实际问题转化为数学模型的过程,以及采用的数学工具和求解步骤;结果验证与讨论部分展示模型求解结果,评估模型的有效性和局限性,并对结果进行解释;结论部分总结研究工作,强调模型的意义和对未来研究的建议;参考文献部分列出引用文献,遵循规范格式。 在准备竞赛论文时,参赛者需注重逻辑清晰、论述严谨,确保模型科学实用。良好的团队协作和时间管理也是成功的关键。通过竞赛,研究生们不仅锻炼了数学应用能力,还提升了团队合作、问题解决和科研写作能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值