P3794 签到题IV
题目
P3794 签到题IV
来切道水题放松一下吧
做法
或是单调不下降的,\(gcd\)是单调不上升的
\(a_i≤5×10^5\)分成权值不同的块数应该很小,所以随便乱搞就出来了
My complete code
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL maxn=1e6;
LL t1,t2,n,k,ans;
LL a[maxn],q1[maxn],q2[maxn],num1[maxn],num2[maxn],q[maxn],num[maxn];
LL Gcd(LL x,LL y){
while(y){
LL tmp(y);
y=x%y,x=tmp;
}return x;
}
inline void Update1(LL x){
for(LL i=1;i<=t1;++i) q1[i]=Gcd(q1[i],x);
q1[++t1]=x,num1[t1]=1;
LL cnt(0);
for(LL i=1;i<=t1;++i)
if(i==1 || q1[i]!=q[cnt]) q[++cnt]=q1[i],num[cnt]=num1[i];
else num[cnt]+=num1[i];
t1=cnt;
for(LL i=1;i<=t1;++i) q1[i]=q[i],num1[i]=num[i];
}
inline void Update2(LL x){
for(LL i=1;i<=t2;++i) q2[i]|=x;
q2[++t2]=x,num2[t2]=1;
LL cnt(0);
for(LL i=1;i<=t2;++i)
if(i==1 || q2[i]!=q[cnt]) q[++cnt]=q2[i],num[cnt]=num2[i];
else num[cnt]+=num2[i];
t2=cnt;
for(LL i=1;i<=t2;++i) q2[i]=q[i],num2[i]=num[i];
}
inline void Solve(){
LL i(1),j(1),na(num1[1]),nb(num2[1]);
while(i<=t1){
LL d(min(na,nb));
if((q1[i]^q2[j])==k) ans+=d;
na-=d,nb-=d;
if(!na) na=num1[++i];
if(!nb) nb=num2[++j];
}
}
int main(){
cin>>n>>k;
for(LL i=1;i<=n;++i){
cin>>a[i];
Update1(a[i]),Update2(a[i]);
Solve();
}
cout<<ans;
return 0;
}
P3794 签到题IV的更多相关文章
- 洛谷3794:签到题IV——题解
https://www.luogu.org/problemnew/show/P3794 题目见上. 有一个套路(虽然我到现在还不会),就是固定一个端点,二分查右端点. 显然这题的正解是O(nlogn) ...
- [Luogu 3794]签到题IV
Description 题库链接 给定长度为 \(n\) 的序列 \(A\).求有多少子段 \([l,r]\) 满足 \[ \left(\gcd_{l\leq i\leq r}A_i\right) \ ...
- 洛谷3794 签到题IV
题目描述 给定一个长度为n的序列$a_1,a_2...a_n$,其中每个数都是正整数. 你需要找出有多少对(i,j),$1 \leq i \leq j \leq n$且$gcd(a_i,a_{i+1} ...
- A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- fjwc2019 D3T1 签到题 (贪心)
#184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...
- CTF-练习平台-WEB之 签到题
一.签到题 根据提示直接加群在群公告里就能找到~
- 洛谷P3601签到题(欧拉函数)
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- 【洛谷九月月赛T1】签到题(bsgs)(快速乘)
说好的签到题呢qwq....怎么我签到题都不会啊qwq 之后看了bsgs才发现貌似不是那么那么难fake!!什么东西... 先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果 ...
- WEB新手之签到题
写一写web新手赛的题. 这是签到题,开始时需要耐心等待页面中字母全部出现. 字母全部出现后,会跳转到另一个界面,如上图所示.F12没什么特别的地方,这题应该有点难度. 按往常一样,先抓包. 按英文提 ...
随机推荐
- Scrapy爬虫入门系列4抓取豆瓣Top250电影数据
豆瓣有些电影页面需要登录才能查看. 目录 [隐藏] 1 创建工程 2 定义Item 3 编写爬虫(Spider) 4 存储数据 5 配置文件 6 艺搜参考 创建工程 scrapy startproj ...
- CodeAreaFX
CodeAreaFX is a text area for JavaFX with API to style ranges of text. It is intended as a base for ...
- 一种安全云存储方案设计(下)——基于Lucene的云端搜索与密文基础上的模糊查询
一种安全的云存储方案设计(未完整理中) 一篇老文了,现在看看错漏颇多,提到的一些技术已经跟不上了.仅对部分内容重新做了一些修正,增加了一些机器学习的内容,然并卵. 这几年来,云产品层出不穷,但其安全性 ...
- 第一百七十一节,jQuery,高级事件,模拟操作,命名空间,事件委托,on、off 和 one
jQuery,高级事件,模拟操作,命名空间,事件委托,on.off 和 one 学习要点: 1.模拟操作 2.命名空间 3.事件委托 4.on.off 和 one jQuery 不但封装了大量常用的事 ...
- JavaScript 测试和捕捉
try 语句允许我们定义在执行时进行错误测试的代码块. catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块. JavaScript 语句 try 和 catch 是成对出现的.
- Eclipse 透视图(Perspective)
什么是透视图? 透视图是一个包含一系列视图和内容编辑器的可视容器.默认的透视图叫 java. Eclipse 窗口可以打开多个透视图,但在同一时间只能有一个透视图处于激活状态. 用户可以在两个透视图之 ...
- SVD分解的c++代码(Eigen 库)
使用Eigen 库:进行svd分解,形如 A = U * S * VT. JacobiSVD<MatrixXd> svd(J, ComputeThinU | ComputeThinV); ...
- 小知识,大智慧(restframework 拾忆)
一.直接对query_set序列化,在页面展示的效果是Unicode 编码格式 ,可在json 序列化时候加入一个参数 course_query = DegreeCourse.objects.all( ...
- mysql UNION all 实现不对称数据统计
当统计多条的三个参数在不同时间段的数据的sum,又只能写在同一个sql上时,可以考虑union all三次查询, select * from ( select kk.a_time as dates,k ...
- Nginx模块系列之auth_basic模块
1.1 介绍 ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的h ...