[JZOJ4307]喝喝喝--枚举
[JZOJ4307]喝喝喝--枚举
题目链接
自行搜索
分析
我们需要找到所有不包含\((a_x,a_y),a_x \equiv k \mod a_y (x<y)\)这样的连续数对,转化一下变成\(a_x-k \equiv 0 \mod a_y\).
考虑从左到右加数,可以发现如果\(a_i - k \equiv 0 \mod a_j\),那么起点为\(i\),终点大于等于\(j\)的连续序列都是不合法的,于是维护一个左指针\(lst\),表示当前距离最近的不合法起点,换句话说,\(lst+1\)到当前遍历的数这一段都是合法的
怎么更新\(f[x]\)?由于值域范围很小\((1e5)\),我们设若当前加的第\(i\)个数为\(x\),设\(f[x]\)为当前距\(i\)最近的\(y\)使得\(x - k \equiv 0 \mod a_y\),每次新加入一个数就比较\(f[x]\)与\(lst\)哪个更大,这样就能更新\(lst\),同时加完\(x\)这个数后,我们可以在\(O( \sqrt{x} )\)的时间内将所有满足\(x -k \equiv 0 \mod p\)的\(p\)找出来更新它们的\(f\)值
当时要注意我们这种方法会漏掉前面有数为\(k\)的情况,要特判
代码
/*
code by RyeCatcher
*/
inline char gc(){
static char buf[SIZE],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,SIZE,stdin),p1==p2)?EOF:*p1++;
}
#define gc getchar
template <class T>inline void read(T &x){
x=0;int ne=0;char c;
while((c=gc())>'9'||c<'0')ne=c=='-';x=c-48;
while((c=gc())>='0'&&c<='9')x=(x<<3)+(x<<1)+c-48;x=ne?-x:x;return ;
}
const int maxn=1000005;
const int inf=0x7fffffff;
int f[maxn],kk=0,lst=0;
int n,k;
ll ans=0;
int main(){
int x;
FO(drink);
//freopen("drink6.in","r",stdin);
read(n),read(k);
for(ri i=1;i<=n;i++){
read(x);
if(x>k){
if(f[x]>lst)lst=f[x];
if(kk>lst)lst=kk;
}
ans+=i-lst;
if(x==k)kk=i;
else if(x<k)continue;
x-=k;
for(ri j=1;j<sqrt(x+0.5);j++){
if(x%j==0)f[j]=f[x/j]=i;
}
}
printf("%lld\n",ans);
return 0;
}
[JZOJ4307]喝喝喝--枚举的更多相关文章
- 【JZOJ4307】喝喝喝
Description solution 正解:尺取法. 很容易想到尺取法,维护左右指针,\(a[i]\%a[j]==K\),当且仅当 \(a[j]>K\) 并且 \(a[i]-K\) 的约数中 ...
- JZOJ4307. 【NOIP2015模拟11.3晚】喝喝喝
Description
- PKUSC2018游记
由于菜鸡DreamlessDreams还需要准备中考的原因....这篇游记拖到今天才发. Day0:出发+报道 ...
- durex-word
"(半夜没睡着) “你是不是饿了,哎呀我也饿了.”" "(聊到合拍处) “我和你有一万句me too想要说.”" "(异地恋) “我辞职,去你那儿吧! ...
- 生活life
1.想办法努力挣钱,而不是如何省钱. 2.再愤怒也不大吼大叫,保持冷静. 3.喜欢的东西自己努力赚钱买. 4.少说多做,能站不坐,适当运动. 5.不要认为找个有钱男人就什么都有了.世界上年轻的女孩子, ...
- 一篇学习HTTP状态码的神文:我与依依的橙色岁月
好的,事情是这样的,数年前,我曾有过一段美好的夏日恋情,在此与大家分享. 依依 这个女孩叫做依依 ,她是 80 后的,生日是 1989 年 3 月吧,忘了哪一天了,分手太久了,记不起来了. 转学生 我 ...
- [No00002C]人的寿命应该能达到100至175岁-北大齐教授健康讲座笔录
人的寿命应该能达到100 至175 岁,为什么都没有达到呢?最主要一个原因就是我们不重视保健,不懂得保健的知识.很多人死于无知,这很冤枉啊! 大家知道怎么保健吗?国际上有个维多利亚宣言,宣言里有三 ...
- Dijkstra(迪杰斯特拉)源最短路径 小白说明
源最短路径 小白说明 Dijkstra算法,书上其实说的很简洁,仔细看,仔细思考是会理解的.但要先理解几条引论和推理. 而自己思考的思路在不需要任何推理只从贪心思路出发,和Dijkstra有所不同,但 ...
- 关于Freelists和Freelist Groups的研究【转】
一. 什么是freelists 本文在于探讨Freelists和Freelist Groups的作用,存取机制,争用诊断和优化方法,同时通过理论和测试来推翻一些存在了很久的错误观点.本文的 ...
随机推荐
- SpringBoot RestTemplate接收文件,并将文件发送到另外一个程序进行存储
最近有个需求,接收用户上报的证书,并且保存起来,证书大小不到1M,但该证书的保存必须在另外一个程序进行,所以想到使用springboot接收上传文件后,再通过RestTemplate将文件发送给另外一 ...
- Linux使用iptables设置黑白名单
使用ipset工具 1,下面我先说下iptables的基本配置规则,然后再说ipset以下使用C7 x86_64为实验环境CentOS7默认的防火墙不是iptables,而是firewalle.如果你 ...
- Object.keys() 遍历对象
Object.keys()方法的运用与数组遍历 Object.keys()用于获得由对象属性名组成的数组,可与数组遍历相结合使用,用起来效果杠杠滴.数组遍历可以用for()或forEach()来实现, ...
- 【Fiori系列】浅谈SAP Fiori的设计美感与发展历程
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[Fiori系列]浅谈SAP Fiori的设计美 ...
- logstash输出至elasticsearch
续上一篇 上一篇描述了通过logback配置用logstash收集springmvc项目日志,本文是描述如何进一步通过elasticsearch对所收集数据进行的分析. output { elasti ...
- ETH&EOS开发资源及工具集合(完整汇总版)
ETH&EOS开发资源及工具集合(完整汇总版) 3113 ETH开发资源篇 一.开发语言 · Solidity - 官方推荐以太坊智能合约开发语言,也是目前最为主流的智能合约语 ...
- 【转载】Bios报警声
BB是报警的声音你可以根据报警声音长短,数目来判断问题出在什么地方 AWARD BIOS响铃声的一般含义是: 1短: 系统正常启动.这是我们每天都能听到的,也表明机器没有任何问题. 2短: 常规错误, ...
- eclipse运行mapreduce的wordcount
1,eclipse安装hadoop插件 插件下载地址:链接: https://pan.baidu.com/s/1U4_6kLFNiKeLsGfO7ahXew 提取码: as9e 下载hadoop-ec ...
- Django之session详解
好文章来自追风的小蚂蚁:https://www.cnblogs.com/zhuifeng-mayi/p/9099811.html cookie:Cookie,有时也用其复数形式 Cookies,指某些 ...
- Docker 安装 Apache
查找Docker Hub上的httpd镜像 apache$ docker search httpd 拉取官方的镜像 docker pull httpd 使用apache镜像 创建目录apache,用于 ...