传送门

分析

考场上暴力水过好评...

然后我的st表查询似乎是log的,然后log三方跑的比log方快,qwq。

我们发现如果一个区间的最小值就是这个区间的gcd,则这个区间合法。所以我们二分区间长度然后枚举起点检验是否合法即可。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const int LOG = ;
int n,a[],st1[][LOG+],st2[][LOG+],ans[],cnt;
inline int gcd(int x,int y){return y?gcd(y,x%y):x;}
inline bool ck(int sum){
int i,j,k;
if(sum==)return ;
for(i=;i+sum<=n;i++){
for(j=LOG;j>=;j--)
if((<<j)<=sum){
if(min(st1[i][j],st1[(i+sum)-(<<j)+][j])==gcd(st2[i][j],st2[(i+sum)-(<<j)+][j]))
return ;
break;
}
}
return ;
}
inline void go(int sum){
int i,j,k;
for(i=;i+sum<=n;i++){
for(j=LOG;j>=;j--)
if((<<j)<=sum){
if(min(st1[i][j],st1[(i+sum)-(<<j)+][j])==gcd(st2[i][j],st2[(i+sum)-(<<j)+][j]))
ans[++cnt]=i;
break;
}
}
if(sum==)
for(i=;i<=n;i++)ans[++cnt]=i;
cout<<cnt<<' '<<sum<<endl;
for(i=;i<=cnt;i++)printf("%d ",ans[i]);
puts("");
return;
}
int main(){
int i,j,k;
scanf("%d",&n);
for(i=;i<=n;i++)scanf("%d",&a[i]),st1[i][]=st2[i][]=a[i];
for(i=;i<=LOG;i++)
for(j=;j<=n;j++)if(j+(<<i)-<=n){
st1[j][i]=min(st1[j][i-],st1[j+(<<(i-))][i-]);
st2[j][i]=gcd(st2[j][i-],st2[j+(<<(i-))][i-]);
}
int le=,ri=n;
while(ri-le>){
int mid=(le+ri)>>;
if(ck(mid))le=mid;
else ri=mid;
}
go(le);
return ;
}

最新文章

  1. 《JavaScript设计模式与开发实践》整理
  2. Java 程序的打包、签名和验证
  3. repeater三级嵌套绑定
  4. 【Linux驱动】内核等待队列
  5. ruby -- 进阶学习(十三)解说ckeditor在production环境下如何完整显示
  6. grunt构建前端自动化的开发环境
  7. MongoDB分片简单实例
  8. AlarmManager使用注意事项
  9. Python 中的 is 和 id
  10. Html.Action和Html.RederAction来创建子视图
  11. CSS——inline-block属性
  12. 怎么样MyEclipse配置Tomcat?
  13. 递归与尾递归(C语言)
  14. 《Head First Python》学习笔记03 异常处理
  15. javaScript设计模式之常用工厂模式
  16. ELK学习笔记(五)简单搜索和DSL查询
  17. 【Git】(2)---checkout、branch、log、diff、.gitignore
  18. JS属性修改
  19. 【Linux】开机自动启动脚本
  20. Java 与 .NET 的平台发展之争

热门文章

  1. css Flex布局(一)
  2. Linux-压缩与解压缩命令
  3. UVA - 11916 Emoogle Grid (组合计数+离散对数)
  4. RabbitMQ用户角色及权限控制(不错)
  5. 微信小程序 写音乐播放器 slider组件 将value设置为0 真机测试滑块不能回到起点
  6. [调试日志]用php函数var_export把多维数组file_put_contents写入并打印到日志,以方便调试之多维数组,用php5中的var_export函数示例,顺带介绍http_build_query(转)
  7. 两种设置WebLogic启动内存的方法
  8. IDEA中遇到的gradle问题:unindexed remote maven repositories found
  9. 机器学习:scikit-learn 文档、深入学习机器学习的思路
  10. linux 命令 chown, cp $