当前位置: 首页 > news >正文

山西省住房和城乡建设厅门户网官方网站武汉网站制作推广

山西省住房和城乡建设厅门户网官方网站,武汉网站制作推广,自贡企业网站建设公司,成都建设厅网站大意&#xff1a; n个顾客&#xff0c;每个人有一个购买的欲望bi,m件物品&#xff0c;每一件物品有一个价值ci,每一个顾客会买商品当且仅当bici>定价. 现在要求对每一个商品定价&#xff0c;求出它的最大销售值&#xff08;数量*定价&#xff09; n,m<2e5 思路&#x…

大意:
n个顾客,每个人有一个购买的欲望bi,m件物品,每一件物品有一个价值ci,每一个顾客会买商品当且仅当bi+ci>=定价.

现在要求对每一个商品定价,求出它的最大销售值(数量*定价)

n,m<=2e5

思路:

首先m件物品都是相互独立的,可以看成m个询问

另外,不妨对n个人的购买力做一个降序排序,显然它们满足单调性

不难发现,一旦我们定下了物品的价格,那么最终的销售额就由销售数量决定,也就是会有多少人买。此时在销售数量减少的情况下,我们一定会尽可能地抬高价格。从而我们得到一个结论:每一个商品i的定价一定是bj+ci(1<=j<=n).这是因为,它刚好可以使某个人会买这件商品。假设最优定价不满足这个结论,显然我们可以直接抬高它使其达到另一个bj+ci,此时我们在购买人数不变的情况下就提高了单价,这是更优的。

现在商品单价就只有n个选择了,对于商品i,我们的销售额就是max{j*(bj+ci)}(1<=j<=n),因为我们是按购买力降序排序,如果第j个人刚好买的起,那么前面的人一定都买的起(这里也不用关心购买力重复的问题,因为重复的话,后面相同购买力的的人对应的决策一定会更好)。

此时我们就转化了题意:对于一个i(1<=i<=m),找到max{j*(bj+ci)}

这里借一下官方题解的图片:

 我们令横坐标为ci,纵坐标为对应的价值,不同j的选择对应不同的总价值。显然我们最后是要找一个凸包,最后的答案就是横坐标对应的凸包上的点的纵坐标了

求凸包的话,我们从1-n开始遍历的话,直线的斜率是单调递增的,

 不妨用单调栈来更新当前段的最大值对应的直线

假设当前栈内有两条直线L0,L1,交点为X_01,那么对于新加入的直线L',如果它与L0的交点X_1'的横坐标小于X_01的横坐标,显然就可以把L1淘汰掉了,因为它后面也不会有比L‘更大的机会了。

关于这个判断,就只要计算一下交点横坐标就可以了。

最后我们得到了一个凸包,那么对于一个ci,我们去二分找到它在那一段线段上就可以了

时间复杂度O(n+mlogn)

code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define mk make_pair
const ll N=2e5+10;
ll n,m;
ll b[N];
ll c[N];
struct P
{double x,y;
};
vector<pair<double,P>> vt;
double cross(P p1,P p2,P p3) {return (p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1.y);
}
bool judge(ll x,ll tar)
{return vt[x].first<=tar;
}
void solve()
{cin>>n>>m;for(int i=1;i<=n;++i) cin>>b[i];sort(b+1,b+1+n,greater<ll>());for(int i=1;i<=m;++i) cin>>c[i];for(int i=1;i<=n;++i){P p={(double)i,(double)i*b[i]};//y=ix+i*b[i]while(vt.size()>=2&&cross(p,vt.rbegin()->second,(next(vt.rbegin()))->second)<0) vt.pop_back();//弹出无用的直线double x=0;if(vt.size()){P pp=vt.back().second;x=(pp.y-p.y)/(p.x-pp.x);} vt.push_back(make_pair(x,p));}	ll len=vt.size();
//	for(auto i:vt)
//	{
//		cout<<i.second.x<<" "<<i.second.y<<endl;
//	}for(int i=1;i<=m;++i){ll l=0,r=len-1;while(l<=r){ll mid=l+r>>1;if(judge(mid,c[i])) l=mid+1;else r=mid-1;}P op=vt[l-1].second;cout<<(ll)(op.x*c[i]+op.y)<<" ";}
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
//	ll t;cin>>t;while(t--)solve();return 0;
}

http://www.hkea.cn/news/11037/

相关文章:

  • 网站目录字典独立站搭建要多少钱
  • 做网站应该学什么专业百度推广运营
  • 网站搭建哪家比较好互联网营销师培训班
  • 濮阳市城乡一体化示范区范围搜索引擎优化排名优化培训
  • 用模板做企业网站汽车推广软文
  • 不同网站的主机和域名互联网营销是做什么的
  • 兰溪市住房和城乡建设局网站软文怎么写比较吸引人
  • 广告传媒公司网站吉林网站seo
  • 网站设计公司西安网站建设推广专家
  • 建筑公司办理资质需要什么条件东莞搜索优化十年乐云seo
  • 淘宝网站设计价格成人电脑基础培训班
  • 福建网站开发定制促销策略的四种方式
  • 做网站公司怎么样英文seo外链发布工具
  • 微网站模板开发优化网站排名公司
  • 南宁网站建设技术支持百度搜索广告价格
  • 怎样建外贸网站电销精准客户资源
  • 可信网站标识如何建立网上销售平台
  • 怎么制作网站logo网站怎么做
  • 博物馆网站 微信 微博 建设企业官网建站
  • 网站建设费算什么费用温岭网络推广
  • 施工企业质量管理体系认证有效期衡水seo营销
  • 浙江网站建设平台百度精简版网页入口
  • 郑州专业做网站的百度免费推广平台
  • wordpress作者页面广东百度seo关键词排名
  • 手机资讯网站源码站长之家查询域名
  • 江苏省昆山市网站制作网络公司有哪些
  • php在网站开发中的作用搜索引擎平台有哪些软件
  • wap手机网站建设制作开发百度关键字推广费用
  • 河南企起网站建设成都私人做网站建设
  • 杭州互联网网站公司东莞做网站的公司吗