
【NOIP2015模拟10.30晚】JZOJ7月27日提高组T1 中位数
发布日期:2021-05-06 15:39:43
浏览次数:23
分类:原创文章
本文共 1614 字,大约阅读时间需要 5 分钟。
【NOIP2015模拟10.30晚】JZOJ7月27日提高组T1 中位数
题目
题解
题意
定义一种操作:平滑化—— b n = f ( a n ) b_n=f(a_n) bn=f(an)
具体操作:
- b [ 1 ] = a [ 1 ] b[1]=a[1] b[1]=a[1]
- b [ n ] = a [ n ] b[n]=a[n] b[n]=a[n]
- 对于 1 < i < n 1<i<n 1<i<n, b [ i ] b[i] b[i]为 a [ i − 1 ] , a [ i ] , a [ i + 1 ] a[i-1],a[i],a[i+1] a[i−1],a[i],a[i+1]的中位数
定义一个序列 a n a_n an是稳定指 f ( a n ) = a n f(a_n)=a_n f(an)=an
给出一个01序列 a n a_n an
求出需要进行多少次平滑化后 a n a_n an是稳定的,并求出最后稳定的序列是什么
分析
首先思考中位数
因为 a n a_n an是01序列,那么如果当前位置 i i i, a [ i − 1 ] a[i-1] a[i−1]或者 a [ i + 1 ] a[i+1] a[i+1]= a [ i ] a[i] a[i],那么 i i i这个位置是不用变的
那么把序列扩大
容易发现只有像0101010……或者1010101……这样的序列才会在平滑化发生改变
那么我们只需要暴力找10交替的序列,记录一下答案
- 当01交替序列的长度为奇数时,需要平滑化的次数是 长度整除2,最后的序列全部都是第一个数
例如01010,最后就会变成00000 - 当01交替序列的长度为偶数时,需要平滑化的次数是 (长度整除2)-1,最后的序列会是前一半是第一个数,后一半是最后一个数
例如0101,最后就会变成0011
O ( n ) O(n) O(n)暴力寻找即可
Code
#include<cstdio>#include<iostream>using namespace std;int n,i,j,k,num,l,ans,a[500005],c[500005];int main(){ freopen("median.in","r",stdin); freopen("median.out","w",stdout); scanf("%d",&n); for (i=1;i<=n;i++) scanf("%d",&a[i]); i=1; while (i<=n) { num=1; j=i+1; while (j<=n) { if ((j-i)%2==0) { if (a[j]!=a[i]) break; num++; j++; } else { if (a[j]==a[i]) break; num++; j++; } } if (num==1) c[i]=a[i]; if (num>1&&num%2==1) { l=num/2; ans=max(ans,l); for (k=i;k<j;k++) c[k]=a[i]; } if (num>1&&num%2==0) { l=num/2-1; ans=max(ans,l); for (k=i;k<=i+num/2-1;k++) c[k]=a[i]; for (k=i+num/2;k<j;k++) c[k]=a[j-1]; } i=j; } printf("%d\n",ans); for (i=1;i<=n;i++) printf("%d ",c[i]); fclose(stdin); fclose(stdout); return 0;}
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年03月14日 08时03分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
粘代码出现的错误解决
2019-03-04
父类不能强转为子类,除非....../对“多态”的理解
2019-03-04
SpringMVC+Mybatis (动态代理)学习笔记
2019-03-04
记SpringBoot 遇到的Whitelabel Error Page
2019-03-04
面试时被问技术栈底层 , 机智小伙反秀面试官一脸
2019-03-04
学而时习之网络篇: 又是HTTP缓存的锅 !
2019-03-04
初学源码如何越学越香 ?
2019-03-04
[百度搜索框Bootstrap模仿]
2019-03-04
XCTF web Web_php_include (php://过滤)
2019-03-04
记录一次需求变动导致的重构
2019-03-04
python-requests模块实现ip代理池
2019-03-04
使用async、await改善异步代码
2019-03-04
洛谷 1115 最大子段和、HDU 1003 Max Sum(最大字段和问题)
2019-03-04
BugkuCTF web_1-10
2019-03-04
零基础入门JavaScript 这一篇笔记就够了
2019-03-04
MySQL_属性、记录长度、设计范式、表关系
2019-03-04
MySQL_安全管理、表单传值、php操作
2019-03-04
POJ 2299 Ultra-QuickSort(树状数组+离散化+求逆序数)
2019-03-04