淘宝的推荐系统 计算之道2A

Posted pengpenggege

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了淘宝的推荐系统 计算之道2A相关的知识,希望对你有一定的参考价值。

小明刚刚入职淘宝,老大给他交代了一个简单的任务,实现一个简易的商品推荐系统。

这个商品推荐系统的需求如下:

   一共有 n 件商品可以被推荐,他们的编号分别为 1 到 n。每件商品都有一个价格,编号为 i的商品价格为 pi? 元。

现在需要给用户推荐尽可能多的商品,但是要保证按照编号上升的顺序给用户依次推荐商品,并且,相邻商品

的价格之差的绝对值不能超过 d。注意,第一个推荐的商品价格没有限制。

输入格式

技术分享图片

 

 

输出格式

对于每组数据,输出一行一个整数,表示最多能推荐的商品个数。

样例输入

2
6 3
5 7 3 6 10 9
8 6
4 7 9 5 8 1 9 10

样例输出

4
7
思路:采取动态规划的思想,dp[i]表最后一个商品为第i件的最大数量,m[i]表示当最后一个商品价格为i的最大数量,对于每个d[i],
扫描出现过的max(1,a[i]-d)到min(a[i]+d,100000)区间,
代码如下:

int getnum(int l,int r,int num)
{
int ans=0;
for(int i=l;i<=r;i++)
{
ans=max(ans,m[i]);
}
return ans;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>d;
memset(a,0,sizeof(a));
memset(m,0,sizeof(m));
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
int num=getnum(max(1,a[i]-d),min(a[i]+d,100000),a[i]);
dp[i]=num+1;
m[a[i]]=max(m[a[i]],dp[i]);
}
int ans=1;
for(int i=1;i<=n;i++)
{
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
}
return 0;
}








































以上是关于淘宝的推荐系统 计算之道2A的主要内容,如果未能解决你的问题,请参考以下文章

云计算:为什么说存储是云计算发展瓶颈之一?虚拟化是解决之道!

深度学习核心技术精讲100篇(三十六)-EdgeRec:边缘计算在淘宝推荐系统中的大规模应用

2018 计蒜之道 初赛 第二场

好书推荐你想要的编码规范都在这里 | 《代码整洁之道》

好书推荐你想要的编码规范都在这里 | 《代码整洁之道》

好书推荐探究构架设计的方法论 | 《架构整洁之道》