校长的收藏

校长的收藏

题目背景

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表 硬刚。

分析:对于a,b,c,若a%b=0,b%c=0,则a%c=0,所以向左转移,向右转移时都可以利用已有的转移;

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
#define pii pair<int,int>
#define Lson L, mid, rt<<1
#define Rson mid+1, R, rt<<1|1
const int maxn=5e5+10;
using namespace std;
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}
int n,m,k,t,l[maxn],r[maxn],a[maxn],ma;
set<int>ans;
int main()
{
    int i,j;
    scanf("%d",&n);
    rep(i,1,n)scanf("%d",&a[i]),l[i]=r[i]=i;
    rep(i,1,n)
    {
        while(l[i]-1>=1&&a[l[i]-1]%a[i]==0)l[i]=l[l[i]-1];
    }
    for(i=n;i>=1;i--)
    {
        while(r[i]+1<=n&&a[r[i]+1]%a[i]==0)r[i]=r[r[i]+1];
        if(r[i]-l[i]>ma)ma=r[i]-l[i],ans.clear(),ans.insert(l[i]);
        else if(r[i]-l[i]==ma)ans.insert(l[i]);
    }
    printf("%d %d\n",ans.size(),ma);
    rsp(it,ans)printf("%d ",*it);
    printf("\n");
    //system("Pause");
    return 0;
}
时间: 2024-12-28 16:28:11

校长的收藏的相关文章

校长的收藏(洛谷 U4534)

题目背景 XS中学的校长喜欢收集手办,家里面都是价值不菲的手办. 校长喜欢给手办们排队并且对于某些些区间内的手办喜爱有加. 现在,校长外出散步(找乐子),你潜入他的房间打算借(偷走)他的手办炫耀一下. 题目描述 现在有 一列 手办,并且校长给每个手办设置了独一无二的编号ai(可能 重复 ,等等,那怎么独一无二). 现在给出区间喜爱度的定义: 如果一个区间[L,R](第L个手办只第R个手办,L<=R),这个区间满足,存在一个k(L<= k <= R),并且对于任意的i(L<=x<

在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏)

在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏) 转载2016-07-26 17:21:47 标签:深圳少儿医保社保医疗保险住院 在深圳工作或生活的家长们可能还有人不清楚,其实小孩子最大的基础保障福利就是少儿医保.如果以前没重视关注的,现在您看到这篇文章还来得及!少儿医保每年政府财政补贴384元,自己只需交200元左右,就可以享受门诊报销1000元,住院报销比例90%,最高报销额度达148万,大病门诊最高报销比例90%!如何享受?有哪些待遇?接下来就详细来做一个介绍: 少儿医保投保需

原创 导出微信收藏到电脑

1.安装模拟器(如:天天模拟器)2.模拟器安装打开微信3.模拟器安装es文件浏览器4.打开微信文件路径:在sdcard的Tencent的MicroMsg的ebb34e976d3351bfe0ab(就是那个最长的,后面就不打出来了)5.模拟器设置共享位置(如:/mnt/asec/share --> 桌面/自定义文件夹)6.用es文件浏览器复制微信收藏文件夹到共享目录(/sdcard/tencent/MicroMsg/********/favorite --> /mnt/asec/share)7.

《鸡啄米C++编程入门系列》系列技术文章整理收藏

<鸡啄米C++编程入门系列>系列技术文章整理收藏 收藏整理鸡啄米C++编程入门系列文章,供个人和网友学习C++时参考 1鸡啄米:C++编程入门系列之前言 2鸡啄米:C++编程入门系列之一(进制数) 3鸡啄米:C++编程入门系列之二(原码.反码与补码) 4鸡啄米:C++编程入门系列之三(VS2010的使用介绍) 5鸡啄米:C++编程入门系列之四(数据类型) 6鸡啄米:C++编程入门系列之五(运算符和表达式) 7鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构) 8鸡啄米:C++编程入

设为首页与加入收藏

通用代码: <a href="javascript:;"onclick="this.style.behavior='url(#default#homepage)';this.setHomePage(location.href);">设为首页</a> | <a href="javascript:;" onClick="window.external.AddFavorite(location.href,docu

清华校长陈吉宁最新演讲:平庸与卓越的差别

本文是清华大学陈吉宁校长于在 2015 年第一次研究生毕业典礼暨学位授予仪式上的讲话,原文标题:选择与坚持.演讲非常精彩,值得您细细阅读. 亲爱的同学们: 今天,共有 1318 名同学获得博士.硕士学位.首先,我代表学校,向同学们奋力拼搏完成学业表示祝贺!同时,向悉心指导你们的老师.辛勤培育你们的家人和一路支持你们的亲友,致以诚挚的敬意和衷心的感谢! 最近我一直在思考,在今天这个场合,给大家讲点什么.大家知道,在过去几次毕业典礼上,我曾经讲过理想.担当.良知.敬畏等这样一些关于价值信念的话题,勉

关于收藏网站

因为公司网页需要顶部的设置首页的收藏需要更新,因为浏览器更新之后,一些js就不能用了 只能兼容ie和火狐 收藏: 火狐:window.sidebar.addPanel(sTitle, sURL, "");这个不能用了 但是发现在a标签添加rel="sidebar"也是可以添加收藏的,title为收藏的名字 所以:function addFavorite(url,title){ if(!window.sidebar){ try{window.external.addF

收藏php

PHP数据库 以下是PHP数据库的代码: <html><head><title></title><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><style type="text/css">body{background-color: cyan;margin:0 550px 0 516px;

[收藏]win8安装弹出输入的产品密钥与用于安装任何可用windows映像都不匹配

问题描述: 帮朋友装win8(第一次装大神不要喷我啊)结果到 现在安装 这一步的时候 点击 现在安装 弹出个窗口 说输入的产品密钥与用于安装任何可用windows映像都不匹配.请输入其他产品密钥 解决办法: 现在大家一般都用U盘安装的方式,那么只需使用记事本编辑一个名为 EI.CFG 的文本文件(注意不带 .txt 扩展名) ,然后将其放到 Windows 8 安装文件 Sources 文件夹中即可.EI.CFG 文件内容如下: [EditionID] PROFESSIONAL [Channel