洛谷 U5874 合唱队形2
来源:互联网 发布:windows7重置网络 编辑:程序博客网 时间:2024/05/20 19:17
题目背景
上次老师挑出来的(N-K)位同学很不高兴,于是他们准备自己组建合唱队形。他们请了kkk来帮忙。
题目描述
他们安排了一个动作——手拉着手唱一首歌(就是他们围成一个圈)。如果有两个相邻的同学的身高差非常大(比如姚明和一个1.5米高的人站在一起)的话,评委会感觉非常不爽。于是kkk需要帮助他们求出一种排队方案,使他们身高差距最大值最小,并输出这个最小值和这个方案。
输入输出格式
输入格式:第一行一个整数N表示有N个人(排成一个圈)
第二行N个整数表示每个人的身高
输出格式:第一行一个整数表示最小的身高差距最大值
第二行N个整数表示这个最优方案,如果多解输出字典序最小
输入输出样例
输入样例#1:
6 1 2 3 4 5 6
输出样例#1:
2 1,2,4,6,5,3
说明
1<=N<=6000
1<=身高<=1000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二分+思路~
二分答案,贪心判断该答案是否可行,然后再贪心求出答案序列。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;int n,a[6001],tot,l,r,maxx,minn,k,z,be,ed,ans[6001];bool b[6001],flag;bool jud(int u){memset(b,0,sizeof(b));tot=k=z=1;b[1]=1;while(1){flag=0;for(int i=1;i<=n;i++) if(!b[i] && abs(a[i]-a[k])<=u) { k=i,tot++,b[i]=1,flag=1;break; }for(int i=n;i;i--) if(!b[i] && abs(a[z]-a[i])<=u) { z=i,tot++,b[i]=1,flag=1;break; }if(!flag) break;}if(abs(a[k]-a[z])<=u && tot==n) return 1;return 0;}int main(){scanf("%d",&n);minn=1000;for(int i=1;i<=n;i++){scanf("%d",&a[i]);maxx=max(maxx,a[i]);minn=min(minn,a[i]);}sort(a+1,a+n+1);l=0;r=maxx-minn;while(l<r){int mid=(l+r)>>1;if(jud(mid)) r=mid;else l=mid+1;}if(!jud(l)) l++;printf("%d\n",l);k=z=be=1;ed=n+1;ans[1]=a[1];memset(b,0,sizeof(b));b[1]=1; while(1){flag=0;for(int i=1;i<=n;i++) if(!b[i] && abs(a[i]-a[k])<=l) { b[i]=1;k=i;ans[++be]=a[i];flag=1;break; }for(int i=n;i;i--) if(!b[i] && abs(a[z]-a[i])<=l) { b[i]=1;z=i;ans[--ed]=a[i];flag=1;break; }if(!flag) break;}for(int i=1;i<n;i++) printf("%d,",ans[i]);printf("%d\n",ans[n]);return 0;}
1 0
- 洛谷 U5874 合唱队形2
- 洛谷 P1091 合唱队形
- 洛谷 P1091 合唱队形
- 洛谷 P1091 合唱队形
- 合唱队形-洛谷 1091
- 洛谷 P1091 合唱队形
- 洛谷 1091 合唱队形
- 洛谷P1091 合唱队形
- 洛谷p1092合唱队形
- 洛谷P1091合唱队形
- 洛谷 P1091 合唱队形
- 【DP】洛谷 P1091 合唱队形
- 洛谷 P1091 合唱队形 kevin_xcw
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 这个星期的错误总结反思
- 人脸、人眼检测与跟踪
- tcp/ip简介------链路层介绍
- yi 2.0 安装(一)
- 前端所需要了解的知识体系
- 洛谷 U5874 合唱队形2
- 深入理解Java中的final关键字
- 注册表修改MAC地址实现物理地址欺骗
- 软件工程(C编码实践篇)学习总结
- 反向BP算法
- 现代操作系统学习笔记-经典IPC问题
- LeetCode 36. Valid Sudoku
- 通过js将table表格数据下载为Excel表格
- tcp/ip简介-----IP网际协议