[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的作用,存取机制,争用诊断和优化方法,同时通过理论和测试来推翻一些存在了很久的错误观点.本文的 ...
随机推荐
- 生成要发送到社区的内核补丁时如何指定发布的版本号(v2,v3...)?
1. 生成一个补丁 git format-patch --subject-prefix=v2 -1 那么生成的patch文件就会有如下类似的信息: Subject: [v2] your descrip ...
- CISCN 2019 writeup
划水做了两个pwn和两个逆向...... 二进制题目备份 Re easyGO Go语言,输入有Please字样,ida搜索sequence of bytes搜please的hex值找到字符串变量,交叉 ...
- 【401】Python 求合数的所有质数因子
对于这样的一个题目来说,出看来,可能会想到判断是否为质数,但其实并不需要. 只要按照从2开始遍历,只要遇到可以整除的就是想要的质数,理由是,如果遇到合数的话,那么在此之前一定会遇到这个合数的质因子,因 ...
- MLN 讨论 —— inference
We consider two types of inference: finding the most likely state of the world consistent with some ...
- Java工程师学习指南第3部分:Spring与SpringMVC源码解析
本文整理了微信公众号[Java技术江湖]发表和转载过的Spring全家桶优质文章,想看到更多Java技术文章,就赶紧关注吧. 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈? ...
- ulimt 和 sysctl
ulimit : 对进程进行 资源限制 ,如打开文件数,进程数. sysctl: 更改内核参数. /proc/pid : 伪文件系统,以文件系统的方式 对 访问内核参数 提供接口. 1. ulimit ...
- 欢迎访问我的csdn博客
csdn博客:https://blog.csdn.net/qq_27307175 这个里面有:许许多多的专业文章. 本人主要研究:网络工程,VMware虚拟化,docker容器,以及Linux等技术, ...
- Awvs–网络漏洞扫描工具
Awvs漏洞扫描自动化 在WEB安全方面,安全侧使用Acunetix_Web_Vulnerability_Scanner_11.xWEB漏洞扫描工具定期手工对m站和www站进行全站漏洞扫描. 为了防止 ...
- PHP根据IP判断地区名信息的示例代码
<?php header("Content-type: text/html; charset=utf-8"); function getIP(){ if (isset($_S ...
- 手把手教你安装 FastAdmin 到虚拟主机 (phpStudy)
手把手教你安装 FastAdmin 到虚拟主机 (phpStudy)原文: https://forum.fastadmin.net/thread/2524 下载 FastAdmin下载 FastAdm ...