Newcoder 84 B.漂亮的树(贪心)

142 篇文章 0 订阅

Description

街上有 n n n棵树,标号为 1... n 1...n 1...n,第 i i i棵树的高度为 a i a_i ai

定义这 n n n棵树是漂亮的,当且仅当

1. 1. 1.对于所有的 i i i a i = a n − i + 1 a_i=a_{n-i+1} ai=ani+1

2. 2. 2.对于 1 ≤ i &lt; ⌊ n 2 ⌋ 1\le i &lt; \lfloor\frac{n}{2}\rfloor 1i<2n (不是整除), a i + 1 = a i + 1 a_i + 1= a_{i + 1} ai+1=ai+1

比如说 “ 23455432 ” “2 3 4 5 5 4 3 2” 23455432 “ 12321 ” “1 2 3 2 1” 12321是漂亮的而 “ 1331 ” “1 3 3 1” 1331 “ 1231 ” “1 2 3 1” 1231不是。

现在请问最少修改几棵树的高度(可以变大也可以变小),使得这些树是漂亮的。

Input

第一行一个整数 n n n表示树的数量

第二行 n n n个整数表示树的高度

( 1 ≤ n , a i ≤ 1 0 5 ) (1\le n,a_i\le 10^5) (1n,ai105)

Output

输出一个整数表示最少修改树的高度的数目。

Sample Input

3
2 2 2

Sample Output

1

Solution

a 1 , . . . , a n a_1,...,a_n a1,...,an的标准形式为 1 , 2 , . . . , ⌈ n 2 ⌉ , . . . , 2 , 1 1,2,...,\lceil\frac{n}{2}\rceil,...,2,1 1,2,...,2n,...,2,1,每个 a i a_i ai减去其标准值,所得序列的众数的数量即为与标准序列的最大匹配,剩余数字则需要调整

Code

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100005;
int n,a[maxn];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		int j=i;
		if(j>n/2)j=n+1-i;
		a[i]-=j;
	}
	sort(a+1,a+n+1);
	int mx=0;
	for(int i=1;i<=n;)
	{
		int j=i;
		while(j<=n&&a[i]==a[j])j++;
		mx=max(mx,j-i);
		i=j;
	}
	printf("%d\n",n-mx);
	return 0;
}

购物商城项目采用PHP+mysql有以及html+css jq以及layer.js datatables bootstorap等插件等开发,采用了MVC模式,建立一个完善的电商系统,通过不同用户的不同需求,进行相应的调配和处理,提高对购买用户进行配置….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值