题目背景

XS中学的校长喜欢收集手办,家里面都是价值不菲的手办。

校长喜欢给手办们排队并且对于某些些区间内的手办喜爱有加。

现在,校长外出散步(找乐子),你潜入他的房间打算借(偷走)他的手办炫耀一下。

题目描述

现在有 一列 手办,并且校长给每个手办设置了独一无二的编号ai(可能 重复 ,等等,那怎么独一无二)。

现在给出区间喜爱度的定义:

如果一个区间【L,R】(第L个手办只第R个手办,L<=R),这个区间满足,存在一个k(L<= k <= R),并且对于任意的i(L<=x<=R),ai都能被ak整除。这样的一个区间 【L,R】的区间喜爱度为 R-L 。

为了让虚荣心最大化,你需要求出最大区间喜爱度和喜爱度最大的区间的个数(有交集的两个不完全重合的区间视为不同的两个区间)然后取走。

输入输出格式

输入格式:

第一行,一个整数n.

第二行,n个整数,第i个数代表第i个手办的编号ai

输出格式:

第一行两个整数,num和val,表示区间喜爱度最大的区间的个数以及最大区间喜爱度。

第二行num个整数,按升序输出每个喜爱度最大的区间的L.

输入输出样例

输入样例#1:

5
4 6 9 3 6
输出样例#1:

1 3
2
输入样例#2:

5
2 3 5 7 11
输出样例#2:

5 0
1 2 3 4 5

说明

1 <= n <= 500000 , 1 <= a < 2 ^ 31

保证数据随机。

Tips:有巧妙的搜索/枚举算法,也可以用令人%拜的RMQ或者ST表 硬刚。

/*
巧(zhi)妙(jie)枚举一个区间的ak,然后用这个ak向两边拓展找否个要求的区间,更新答案,要注意的是区间不能重复。
*/
#include<cstdio>
#include<iostream>
#define M 500010
using namespace std;
int a[M],b[M],tot,ans,n;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<=n;i++)
{
int ll=i,rr=i;
while()
{
if(ll==)break;
if(a[ll-]%a[i]!=)break;
ll--;
}
while()
{
if(rr==n)break;
if(a[rr+]%a[i]!=)break;
rr++;
}
if(rr-ll>ans)
{
tot=;ans=rr-ll;
b[tot]=ll;
}
else if(rr-ll==ans&&ll!=b[tot])
{
b[++tot]=ll;
}
}
printf("%d %d\n",tot,ans);
for(int i=;i<=tot;i++)
printf("%d ",b[i]);
return ;
}

校长的收藏(洛谷 U4534)的更多相关文章

  1. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  2. 洛谷1352 CODEVS1380 没有上司的舞会

    洛谷的测试数据貌似有问题,4个点RE不可避 CODEVS可AC —————— 10分钟后追记:在洛谷把数组范围开到10000+就过了 —————— 题目描述 Description Ural大学有N个 ...

  3. 洛谷 p1352 没有上司的舞会 题解

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

  4. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  5. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  6. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  7. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  8. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  9. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

随机推荐

  1. thinkphp 5 常用的助手函数

    load_trait:快速导入Traits,PHP5.5以上无需调用 /**     * 快速导入Traits PHP5.5以上无需调用     * @param string    $class t ...

  2. 300 Longest Increasing Subsequence 最长上升子序列

    给出一个无序的整形数组,找到最长上升子序列的长度.例如,给出 [10, 9, 2, 5, 3, 7, 101, 18],最长的上升子序列是 [2, 3, 7, 101],因此它的长度是4.因为可能会有 ...

  3. Http请求1

    package Test; import java.io.IOException; import java.io.InputStreamReader; import java.net.URISynta ...

  4. Python,报错NameError: name 'math' is not defined

    1 #-*- coding : utf-8 -*- 2 import math 3 4 def move(x, y, step, angle=0): 5 nx = x + step * math.co ...

  5. leetcode126 Word Ladder II

    思路: 宽搜过程中分层记录路径,递归还原.实现: class Solution { public: void getPath(string now, string beginWord, string ...

  6. Ubuntu安装配置Charles,抓取http网络请求包

    http://blog.csdn.net/lylddinghffw/article/details/75322262

  7. iframe子页面让父页面跳转 parent.location.href

    if ($roleNum < 9) { echo "<script > parent.location.href='admin_login.php' </script ...

  8. POJ_1083_(思维)

    Moving Tables Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31511   Accepted: 10528 D ...

  9. Explaining difference between automaticallyAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgesForExtendedLayout

    automaticallyAdjustsScrollViewInsets:在导航栏透明时用到 In your viewDidLoad method, add if([self respondsToSe ...

  10. Window提高_3.1练习_双进程守护

    双进程守护 当打开一个进程A的时候,此进程检测是否存在进程B,如果不存在就创建进程B. 进程B的作用是检测进程A是否被关闭,如果被关闭了,就再创建一个进程A. 双进程守护A.exe代码如下: #inc ...