前言

找了个时间做了个一直想做的题
感觉还是很妙哒

题解

我们考虑一个做法
设序列长度为S
首先,如果暴力扫的话,是可以O(ns)O(ns)算出来所有长度为S的最优值的
但是S大的话,就不好办了
然后我们观察性质,如果S大的话,那么两两间最小的差值,就不会超过m/s+1m/s+1,对吧
然后这个时候,我们就可以考虑枚举差值,然后枚举右端点,DP出最远可以到多远
然后就好了
考虑将两个过程合并,可以知道,S取得m−−√\sqrt{m},复杂度最优,为nm−−√n\sqrt{m}
然后就可以通过这题了

CODE:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const LL N=200005;
LL S;
LL n,m,k;
LL s[N];
LL f[N];
LL ans=0;
LL r[N];
int main()
{scanf("%lld%lld%lld",&n,&m,&k);S=sqrt(m);//区间长度 for (LL u=1;u<=n;u++)   scanf("%lld",&s[u]);memset(f,127,sizeof(f));for (LL u=n;u>=1;u--)for (LL i=u+1;i<=min(n,u+S-1);i++){f[i]=min(f[i],f[i-1]);f[i]=min(f[i],abs(s[i]-s[u]));if (i-u+1>=k){ans=max(ans,f[i]*(i-u));}}//printf("%lld\n",ans);memset(f,0,sizeof(f));for (LL u=1;u<=n;u++)//以什么为右端点{for (LL i=0;i<=m/S+1;i++)//最大差值是i-1 {if (i>=1) f[i]=max(f[i],f[i-1]);if (s[u]-i>=0) f[i]=max(f[i],r[s[u]-i]);if (s[u]+i<=m) f[i]=max(f[i],r[s[u]+i]);if (u-f[i]>=max(k,S))   ans=max(ans,(u-f[i]-1)*(i+1));/*printf("YES:l:%lld r:%lld x:%lld\n",f[i]+1,u,i);system("pause");*/}r[s[u]]=u;}printf("%lld\n",ans);return 0;
}

uoj #246. 【UER #7】套路相关推荐

  1. 【UOJ#246】套路(动态规划)

    [UOJ#246]套路(动态规划) 题面 UOJ 题解 假如答案的选择的区间长度很小,我们可以做一个暴力\(dp\)计算\(s(l,r)\),即\(s(l,r)=min(s(l+1,r),s(l,r- ...

  2. uoj 246. 【UER #7】套路

    #246. [UER #7]套路 反攻正在进行中,按照套路,跳蚤国将会很快获得最终的胜利.跳蚤国的情报局也没闲下来,他们正打算派遣一批"菲克蚤"前往跳晚国窃取有关三星 note7的 ...

  3. uoj#246. 【UER #7】套路(dp+分块?分类讨论?)

    题目链接 分析: 目前为止我只能理解dp部分 我就喜欢这种单纯不做作的题目 一看名字就明白了这道题的本质 中二的题目描述 很显然,我们的关键就是求出最小相似度 朴素算法n^4 如果我们现在有一个权值数 ...

  4. UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)

    题目链接 http://uoj.ac/contest/47/problem/455 题解 模拟费用流,一个非常神奇的东西. 本题即为WC2019 laofu的讲课中的Problem 8,经典的老鼠进洞 ...

  5. [UOJ#245][UER#7B]天路

    Description 给出n个数,对于每个k(2<=k<=n),求出最大的一个ans,使得存在一个连续的长度为k的区间中最大值和最小值的差为ans. 答案与标准答案的误差不超过5%即为正 ...

  6. [UOJ#454][UER#8]打雪仗

    xx 转载于:https://www.cnblogs.com/lxzl/p/10324980.html

  7. 【UOJ】UER#3.B 开学前的日历

    将条件转化为i,j⩾0,i+j⩾k|Av+i,u+j+=(i+ji)i,j⩾0,i+j⩾k|Av+i,u+j+=(i+ji)i,j\geqslant 0,i+j\geqslant k|A_{v+i,u ...

  8. UOJ超级详细部署文档

    UOJ 部署 首先执行 sudo su 进入 root 然后执行 curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docke ...

  9. 【UOJ】#246. 【UER #7】套路

    传送门http://uoj.ac/problem/246 题解很详细 第二部分的单调队列需要好好思考 #include<stdio.h> #include<cstring> # ...

最新文章

  1. 专治“炼丹侠”各种不服:1分钟就能搞个AI应用 | 最新开源深度学习框架工具套件TinyMS问世...
  2. 学习Python技术有哪些优势?
  3. linux中的socket编程,linux中socket编程
  4. Brush、Color、String相互转换
  5. java 新增的方法外部调用提示不存在_Java面试简答题(一)
  6. 怎样才能查到4S店保养记录,4S店维修保养记录怎样查询,Javascript学习指南
  7. typedef定义结构体数组类型
  8. 安全架构--2--关于企业安全体系建设历程的思考
  9. BestMPRBaseVtk-009-设置默认窗宽窗位
  10. 安科瑞无线测温装置,多点温度在线测温装置
  11. Java基础篇--概念理解(泛型、注解)
  12. 微信公众平台注册与认证图文教程分享
  13. python sklearn metrics,在Python中sklearn.metrics.mean_squared_error越大越好(否定)?
  14. 于是,我搭了个自己的博客网站
  15. CTFshow--常用姿势
  16. 王晓昀-PowerDesigner与模型驱动开发-UMLChina讲座-音频和幻灯
  17. 设计师必读的 10 本书
  18. go get 下载的包放在哪里呢?
  19. 大数据产品价值主张_十年之后大数据的价值主张
  20. python十六进制转换成二进制流

热门文章

  1. AUC、ROC、ACC区别
  2. Android仿今日头条的开源项目
  3. 【论文笔记】Question-driven summarization of answer to consumer health questions
  4. 音量控制按钮有小红叉插头已从插孔拔出
  5. c#12星座速配代码_程序员12星座性格分析,猜猜哪个星座最适合IT行业?
  6. linux bmp图片怎么转换成ppm,[转载]图片解析 ppm图片bmp图片格式
  7. 天地图矢量数据下载_全球谷歌卫星地图影像数据下载
  8. 《程序员修炼之道——从小工到专家》读后感一
  9. CocosCreator Effect (Shader) - 斜条纹如何画
  10. DUMN : Deep User Match Network for Click-Through Rate Prediction