首页 > 分享 > 2015新生赛莲花池

2015新生赛莲花池

最新推荐文章于 2021-05-18 08:53:18 发布

DlPF_C 于 2017-11-17 20:12:50 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

池子是细长条的,刚好有重量1~n的n条鱼,平时鱼儿们在池子里的相对位置不会改变,但是如果不按时喂它们,它们饿了就会吃仅比自己小一号的鱼。由于小鱼新陈代谢速度快,越小的鱼越早开始饿,也越早开始吃同类。

包含多组输入数据,每组数据占一行, 输入以0结束。每组开始输入一个正整数n(1≤n≤10^6 )表示原本池子里共有n条鱼,之后n个正整数a_1,a_2,…,a_n分别表示在池子里每条鱼的重量,保证每组数据中1≤a_i≤n,且鱼的重量互不相同。

对于每组数据输出各占一行,每行一个正整数,表示该组最后剩下的鱼的总数。

2 2 1 5 1 3 2 4 5 0

1 2

记录每条鱼比他大一号的鱼的位置,比他小一号鱼的位置。递推即可,注意处理边界值

#include<stdio.h>

#include<string.h>

#define maxn 1000010

struct fish

{

int l,m,r;

}a[maxn];

int b[maxn];

int main()

{

int n;

while(scanf("%d",&n)!=EOF)

{

if(n==0)

break;

for(int i=1;i<=n;i++)

{

scanf("%d",&a[i].m);

b[a[i].m]=i;

a[i].l=i-1;

a[i].r=i+1;

}

a[n].r=0;

int ans=n;

for(int j=1;j<=n;j++)

{

int i=b[j];

if(a[i].l>0&&a[a[i].l].m==a[i].m-1)

{

a[i].l=a[a[i].l].l;

a[a[i].l].r=i;

ans--;

}

else if(a[i].r>0&&a[a[i].r].m==a[i].m-1)

{

a[i].r=a[a[i].r].r;

a[a[i].r].l=i;

ans--;

}

}

printf("%dn",ans);

}

return 0;

}

相关知识

昆明莲花池
保定市古莲花池形态变迁研究
莲花池公园荷花节开幕
莲花池公园2024年牡丹文化节开幕
古莲花池:荷花开满塘,风景美如画
2015北京春节花展盘点(水仙花+梅花+兰花+郁金香)
碧桃花开莲花池,芳菲烂漫在人间
东方园林修复莲花池公园,再现江南园林神韵
2015 庆华梅(潘绿)开花
保定古莲花池:夏日荷花朵朵开,满池幽香引人醉

网址: 2015新生赛莲花池 https://m.huajiangbk.com/newsview1149146.html

所属分类:花卉
上一篇: 庭院设计:若鱼池荷花池这么设计,
下一篇: 荷花池美景拍摄图片下载