美丽的大树(codevs 2124)

题目描述 Description

平江路是苏州最美丽的道路,路中间的绿化带上种了两行漂亮的大树,每行50棵,一共100棵大树,这些大树被编上了号,编号方式如下:

1 3 5 7 ………… 45 47 49 …………99     第一行

2 4 6 8 ………… 46 48 50 …………100    第二行

但是昨天晚上却发生了一件令人震惊的大事--可恶的破坏分子竟然偷去了这100棵大树中的一部分! 公安部门马上出动,列出了被偷去了大树的编号。现在摆在我们面前的情况是,如果你带领的游客走过的旁边是空空的树坑,那是令人无法接受的,因此我们只能压缩游客在平江路上的旅游距离,务必使游客在连续的大树边游玩,当时,我们就得找出一列(边)最长的连续的大树展现在游客面前。请你编写程序解决这一难题。

输入描述 Input Description

N (表示有N棵大树被盗) N1 N2 N3……NN  (被盗大树的编号)

输出描述 Output Description

 M X   (表示从第M棵大树开始,共有连续的X棵大树,如果有多个解,输出M最小的解即可)

样例输入 Sample Input

 5 9 15 27 35 6

样例输出 Sample Output

8 47

数据范围及提示 Data Size & Hint

N<=100

#include<cstdio>
#include<iostream>
#include<algorithm>
#define M 110
using namespace std;
int vis[M],flag,cnt;
struct node
{
    int len,begin;
};node e[M];
int cmp(const node&x,const node&y)
{
    if(x.len>y.len)return 1;
    if(x.len==y.len&&x.begin<y.begin)return 1;
    return 0;
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        int x;
        scanf("%d",&x);
        vis[x]=1;
    }
    flag=0;
    for(int i=1;i<=100;i+=2)
    {
        if(!flag&&!vis[i])
        {
            flag=1;
            ++cnt;
            e[cnt].begin=i;
            e[cnt].len=1;
        }
        else if(flag)
        {
            if(!vis[i])e[cnt].len++;
            else flag=0;
        }
    }
    flag=0;
    for(int i=2;i<=100;i+=2)
    {
        if(!flag&&!vis[i])
        {
            flag=1;
            ++cnt;
            e[cnt].begin=i;
            e[cnt].len=1;
        }
        else if(flag)
        {
            if(!vis[i])e[cnt].len++;
            else flag=0;
        }
    }
    sort(e+1,e+cnt+1,cmp);
    printf("%d %d",e[1].begin,e[1].len);
    return 0;
}

时间: 2024-10-11 06:57:47

美丽的大树(codevs 2124)的相关文章

2124 美丽的大树

2124 美丽的大树 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 平江路是苏州最美丽的道路,路中间的绿化带上种了两行漂亮的大树,每行50棵,一共100棵大树,这些大树被编上了号,编号方式如下: 1 3 5 7 ………… 45 47 49 …………99     第一行 2 4 6 8 ………… 46 48 50 …………100    第二行 但是昨天晚上却发生了一件令人震惊的大事--可恶的破坏分子竟然偷去了这100棵大树中

美丽的大树

2124 美丽的大树 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 平江路是苏州最美丽的道路,路中间的绿化带上种了两行漂亮的大树,每行50棵,一共100棵大树,这些大树被编上了号,编号方式如下: 1 3 5 7 ………… 45 47 49 …………99     第一行 2 4 6 8 ………… 46 48 50 …………100    第二行 但是昨天晚上却发生了一件令人震惊的大事--可恶的破坏分子竟然偷去了这100棵大树中

0709模拟题

7.9模拟比赛 注:本场考试3道题,时间3个小时.全部为codevs上的题目 1.2124 美丽的大树 题目描述 Description 平江路是苏州最美丽的道路,路中间的绿化带上种了两行漂亮的大树,每行50棵,一共100棵大树,这些大树被编上了号,编号方式如下: 1 3 5 7 ………… 45 47 49 …………99     第一行 2 4 6 8 ………… 46 48 50 …………100    第二行 但是昨天晚上却发生了一件令人震惊的大事--可恶的破坏分子竟然偷去了这100棵大树中的一

熟悉的地方也有美丽的景色

熟悉的地方有风景 这个世界太复杂,没人记得朴实无华:这个世界太功利,没人记得不忘初心:这个世界太繁华,没人记得淡泊明志:这个世界太浮躁,没人记得发现身边的美好.熟悉的地方也有风景,它是雨中的清丽纯净,是风中的芬芳怡人,是空中的清明澄澈,是心中的恬静安然. 脚步匆匆的城市之中,别忘停下来看一看身边的风景. 清晨的薄雾还未散尽,打开窗细细打量小草上的露珠,小小的滚圆身体将风景尽收眼底,雾气氤氲中有微亮的天.微亮的月,微亮的人儿.薄雾消散,太阳自地平线升起,一切又镀上金红.一样的景,一样的人,不一样的

[ CodeVS冲杯之路 ] P2492

不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直接树状数组(以下简称BIT)维护,修改操作就一个个暴力开方搞,再用差值单点更新BIT 不过这样会TLE,要加一点优化对不对,正如开头所说的路径压缩链表 路径压缩链表其实就是个并查集,在普通的链表里,删去两个连续的节点后会是下面这种情况,如删去2,3 当访问 2 的时候,会跳到3,但 3 已经删除了,

[CODEVS 1281] Xn数列

描述 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn http://codevs.cn/problem/1281/ 分析 比较裸的矩阵乘法题, 好久没做了, 写写思路 假设矩阵 A = { {a1, a2}, {a3, a4} }, B = { {b1, b2}, {b3, b4} }. 根据矩阵乘法的计算方法, 有 : A×B = { {a1b1+a2b2, a1b2+a2b4}, {a3b1+a4b3, a3b2+a4b4} }. 那

美丽联合业务升级下的机器学习应用

通常机器学习在电商领域有三大应用,推荐.搜索.广告,这次我们聊聊三个领域里都会涉及到的商品排序问题.从业务角度,一般是在一个召回的商品集合里,通过对商品排序,追求GMV或者点击量最大化.进一步讲,就是基于一个目标,如何让流量的利用效率最高.很自然的,如果我们可以准确预估每个商品的GMV转化率或者点击率,就可以最大化利用流量,从而收益最大. 蘑菇街是一个年轻女性垂直电商平台,主要从事服饰鞋包类目,2015年时全年GMV超过了百亿,后与美丽说合并后公司更名为美丽联合集团.2014年时入职蘑菇街,那时

1+1=0.5的姿势困局!谁让美丽蘑菇的合并泛起泡沫

自从2016年1月,美丽说.蘑菇街正式合并以来,裁员风声就没断过.但这并不重要.重要的是,较之其他如滴滴快的.新美大之类的同领域执牛耳者的合并,不再火并.合并后的美丽说.蘑菇街只能用惨淡来形容. 从合并前2015年两家交易额合计近200亿元,到2016年合并后交易额90亿元左右,1+1=0.5的状态,让许多业界观察者唏嘘不已. 文/张书乐(TMT行业观察者.游戏产业时评人,人民网.人民邮电报专栏作者) 刊载于<互联网经济>2017年4月刊 为何会如此?两家公司尽管是同领域中执牛耳者,但这个准确

Codevs 1257 打砖块

1257 打砖块 http://codevs.cn/problem/1257/ 题目描述 Description 在一个凹槽中放置了n层砖块,最上面的一层有n块砖,第二层有n-1块,……最下面一层仅有一块砖.第i层的砖块从左至右编号为1,2,……i,第i层的第j块砖有一个价值a[i,j](a[i,j]<=50).下面是一个有5层砖块的例子.如果你要敲掉第i层的第j块砖的话,若i=1,你可以直接敲掉它,若i>1,则你必须先敲掉第i-1层的第j和第j+1块砖. 你的任务是从一个有n(n<=5