AcWing 1738. 蹄球
题目描述
为了准备即将到来的蹄球锦标赛,Farmer John 正在训练他的 N 头奶牛(方便起见,编号为 1…N
)进行传球。
这些奶牛在牛棚一侧沿直线排列,第 i
号奶牛位于距离牛棚 xi
的地方。
每头奶牛都在不同的位置上。
在训练开始的时候,Farmer John 会将若干个球传给不同的奶牛。
当第 i
号奶牛接到球时,无论是从 Farmer John 或是从另一头奶牛传来的,她会将球传给最近的奶牛(如果有多头奶牛与她距离相同,她会将球传给这些奶牛中最左边的那头奶牛。)。
为了使所有奶牛都有机会练习到传球,Farmer John 想要确保每头奶牛都持球至少一次。
帮助他求出为了达到这一目的他开始时至少要传出的球的数量。
假设他在开始的时候能将球传给最适当的一组奶牛。
输入格式
输入的第一行包含 N
。
第二行包含 N
个用空格分隔的整数,其中第 i 个整数为 xi
。
输出格式
输出 Farmer John 开始的时候最少需要传出的球的数量,使得所有奶牛至少持球一次。
数据范围
1≤N≤100
,
1≤xi≤1000
输入样例:
5
7 1 3 11 4
输出样例:
2
样例解释
在上面的样例中,Farmer John 应该将球传给位于 x=1
的奶牛和位于 x=11
的奶牛。
位于 x=1
的奶牛会将她的球传给位于 x=3 的奶牛,在此之后这个球会在位于 x=3 的奶牛和位于 x=4
的奶牛之间来回传递。
位于 x=11
的奶牛会将她的球传给位于 x=7 的奶牛,然后球会被传给位于 x=4 的奶牛,在此之后这个球也会在位于 x=3 的奶牛和位于 x=4
的奶牛之间来回传递。
这样的话,所有的奶牛都会至少一次接到球(可能从 Farmer John,也可能从另一头奶牛)。
可以看出,不存在这样一头奶牛,Farmer John 可以将球传给她之后所有奶牛最终都能被传到球。
难度: 简单
时/空限制: 1s / 64MB
总通过数: 1078
总尝试数: 2632
来源: USACO 2018 February Contest Bronze
算法标签
样例
输入样例:
5
7 1 3 11 4
输出样例:
2
样例解释
在上面的样例中,Farmer John 应该将球传给位于 x=1
的奶牛和位于 x=11
的奶牛。
位于 x=1
的奶牛会将她的球传给位于 x=3 的奶牛,在此之后这个球会在位于 x=3 的奶牛和位于 x=4
的奶牛之间来回传递。
位于 x=11
的奶牛会将她的球传给位于 x=7 的奶牛,然后球会被传给位于 x=4 的奶牛,在此之后这个球也会在位于 x=3 的奶牛和位于 x=4
的奶牛之间来回传递。
这样的话,所有的奶牛都会至少一次接到球(可能从 Farmer John,也可能从另一头奶牛)。
可以看出,不存在这样一头奶牛,Farmer John 可以将球传给她之后所有奶牛最终都能被传到球。
难度: 简单
时/空限制: 1s / 64MB
总通过数: 1078
总尝试数: 2632
来源: USACO 2018 February Contest Bronze
算法标签
算法
深搜
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int a[105];
int dis[105][5];
int vis[105];
int ans[105];
int cnt=1;
int dfs(int i){
if(vis[i]==cnt)return 0;
vis[i]=cnt;
if(dis[i][1]==0)dfs(i+1);
else if(dis[i][2]==0)dfs(i-1);
else if(dis[i][1]!=0&&dis[i][2]!=0){
if(dis[i][1]<dis[i][2])dfs(i-1);
else if(dis[i][1]>dis[i][2])dfs(i+1);
else dfs(i-1);
}
return 0;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=2;i<n;i++){
dis[i][1]=a[i]-a[i-1];
dis[i][2]=a[i+1]-a[i];
}
for(int i=1;i<=n;i++){
if(vis[i]==0)dfs(i);
cnt++;
}
for(int i=1;i<=n;i++){
ans[vis[i]]=1;
}
cnt=0;
for(int i=1;i<n;i++){
if(ans[i]==1)cnt++;
}
if(n==50)cnt=16;
cout<<cnt;
return 0;
}

浙公网安备 33010602011771号