【from new_dtoj 3991: 雪人(snowman)】
题目描述
WZY堆了N个雪人,每个雪人都有一个可爱度Xi,WZY认为两串雪人a1,a2…an与b1,b2…bm和谐当且仅当

  1. n=m
  2. a1-b1=a2-b2=…=an-bn

WZY现在要从一堆雪人中选择两串雪人A=[l1,r1],B=[l2,r2](两串可以重叠,即若l1≤l2,l2可以小于等于r1),使得A和B和谐,现在WZY想知道对于所有的方案中,min(|l1-l2|,len(A))的最大值。 len(A)为A中所含雪人的个数。因为WZY还要准备AK JSOI 2019,所以他把这个问题交给了你。
n<=5e5
题解
考试只会n2n^2n2暴力50分,这里要orz slz szm
考虑到题目变形成a1-a2=b1-b2,a2-a3=b2-b3……所以我们可以先差分,然后把结果做一个hash
接着考虑二分长度,求出所有这些长度的hash值,并且记录下每个长度的左端点,如果说我们找到两个串hash值相同,并且左端点距离不小于二分的长度,说明这个长度还能再长,否则要缩短。这题还可以用SA实现
效率O(nlog2n)−O(nlogn)O(nlog^2n)\ -O(nlogn)O(nlog2n) −O(nlogn)(一个排序,一个hash表)

#include <cstdio>
#include <algorithm>
#include <string>
#define N 500005
#define U unsigned long long
#define K 793999
#define E register
#define _(d) while(d(isdigit(c=getchar())))
inline int R(){int x;char c;_(!);x=(c^48);_()x=(x<<3)+(x<<1)+(c^48);return x;
}
int n,a[N],ans,l,r,d,s,q[N];U h[N],f[N],b[N];
bool C(E int x,E int y){return f[x]<f[y]||f[x]==f[y]&&x<y;}
int main(){n=R();b[0]=1;for (E int i=1;i^n+1;i++)a[i]=R(),b[i]=b[i-1]*K,h[i]=h[i-1]*K+(U)(a[i]-a[i-1]+1e9);l=0;r=n/2+1;while(l<r){d=l+r+1>>1;bool J=0;for (E int i=1,j=d-1;j^n+1;i++,j++)f[i]=h[j]-h[i-1]*b[j-i+1],q[i]=i;std::sort(q+1,q+n-d+3,C);for (E int i=1,j=1;i^n-d+3;i=j){while(f[q[j]]==f[q[i]] && j<=n-d+2) j++;s=q[j-1]-q[i];if (s>=d){J=1;break;}}if (J) l=d;else r=d-1;}return printf("%d\n",l),0;
}

雪人(snowman)相关推荐

  1. 我的世界服务器盖亚3缴械修改,[管理]BossColing — 植魔盖亚 | 凋零末影龙召唤冷却时间及血量设置[1.7.10-1.12.2]...

    #变量名: #[url=home.php?mod=space&uid=57396]@Player[/url] (玩家名称) #@BoosName (Boos的名称) #[url=home.ph ...

  2. 八年级英语上册单词复习

    八年级英语上册单词复习 王学志 复习记录 ## 开始复习 unit 1 ## 开始复习 unit 2 ## 开始复习 unit 3 ## 开始复习 unit 4 ## 开始复习 unit 5 ## 开 ...

  3. C# 2.0 Graphics 画雪人

      1using System;   2using System.Collections.Generic;   3using System.ComponentModel;   4using Syste ...

  4. java雪人程序_JAVA雪人小程序

    刚学JAVA,有问题还请高人指教! /** * @ Snowman.java * @author * @c2009/8/21 */ import java.awt.*; import javax.sw ...

  5. python雪人_在Python乌龟画中通过箭头键使雪人移动

    预期结果:雪人可以通过右.左.上.下箭头键或键盘上的箭头键移动.在 尝试过t.speed.t.goto.t.move等等,几乎所有我在网上找到的涉及海龟动作的命令.老实说,我在这里完全被困住了,需要任 ...

  6. opencv 画雪人

    opencv 画雪人 import cv2 import numpy as n img = 255*n.ones((350,512,3),n.uint8) font = cv2.FONT_HERSHE ...

  7. python画雪人怎么弄_在HTML中使用css3实现雪人动画效果

    背景:圣诞节又到了,拿什么来哄女朋友开心? 项目结构: html: CSS3圣诞树雪人下雪动画效果 body{margin:0;padding:0;list-style-type:none;} .he ...

  8. 基于DarkNet和 OpenCV的 YOLOv3 训练雪人检测模型

    下载样例 opencv- yolo3代码雪人检测处理. GitHub git clone https://github.com/BillyLearn/opecv-yolo3-snowman.git 下 ...

  9. 【webVR翻译】使用A-frame零基础一小时制作冬日雪人特效

    原文:An A-Frame tutorial for WebVR beginners 作者:Mary 译者:大田 什么是A-frame? A-frame是一款基于WebGL库three.js构建的We ...

  10. 绘制半圆_AI教程/绘制雪人插画

    图/文 Monika Zagrobelna注:此教程为英翻教程,软件操作不娴熟的小伙伴儿,谨慎尝试哦.翻译不足之处或者有错别字,自行脑补一下哦. 1. 创建雪人身体步骤1首先创建一个新文档(Ctrl- ...

最新文章

  1. 五小步让VS Code支持AngularJS智能提示
  2. 迫零响应法用于MIMO系统
  3. 【收藏】win10将wsl升级到wsl2
  4. 数字转化成时分秒(二)
  5. OpenStack(二)——Keystone组件
  6. 第11课:动手实战基于 LSTM 轻松生成各种古诗
  7. 【今日CS 视觉论文速览】10 Jan 2019
  8. GIT上fork的项目获取最新源代码
  9. 使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来
  10. jrebel离线激活_jrebel激活
  11. NVR和DVR有什么区别
  12. Adobe Illustrator CS5 序列号及安装方法
  13. 计算机主板参数指标,主板性能参数指标.doc
  14. 洛谷P4094 [HEOI2016/TJOI2016]字符串【后缀数组+主席树+st表】
  15. 从一名白纸交易者到稳定盈利交易员需要多长时间?
  16. ESP8266+dht11 连接阿里云 上传温湿度
  17. 英文简历模板计算机专业,计算机专业个人英文简历模板
  18. 微信支付重复回调,java微信支付回调问题
  19. 桌宠必须要java吗_明日方舟讯使桌宠下载地址 如何与小讯使愉快玩耍
  20. 中国Android手机top5排名 三星仍居第一

热门文章

  1. 《Linux驱动:USB设备驱动看这一篇就够了》
  2. 快速使用ros小乌龟教程——ROS初体验
  3. noob学python #1
  4. Noob Notes(6)——VScode常见配置、插件推荐以及常见问题(一)(Error Lens 不显示错误的原因和解决方案)
  5. 隐蔽的大数据杀熟,“百亿补贴”会员竟比非会员贴得少?
  6. Spinnaker第七节—Orca代码详解
  7. 系统没有java控制面板,手把手教你解答win7系统打开java控制面板的解决教程
  8. c语言 虚拟示波器软件下载,虚拟示波器软件(示波器工具)V3.1 官方版
  9. 谷歌开源 3D 数据压缩算法 Draco以及代码分析
  10. 字符谜题之1:最后的笑声(之所以说是最后的笑声,是因为输出两个Ha,第二个出问题)