题目描述

Farmer John 打算带领 N(1≤N≤2000)N(1≤N≤2000)N(1≤N≤2000)头奶牛参加一年一度的"全美农场主大奖赛"。在这场比赛中,每个参赛者必须让他的奶牛排成一列,然后带领这些奶牛从裁判面前依此走过。

今年,竞赛委员会在接受报名时,采用了一种新的登记规则:取每头奶牛名字的首字母,按照它们在队伍中的次序排成一列。将所有队伍的名字按字典序升序排序,从而得到出场顺序。

FJ 由于事务繁忙,他希望能够尽早出场。因此他决定重排队列。

他的调整方式是这样的:每次,他从原队列的首端或尾端牵出一头奶牛,将她安排到新队列尾部。重复这一操作直到所有奶牛都插入新队列为止。

现在请你帮 FJ 算出按照上面这种方法能排出的字典序最小的队列。

输入格式
第一行一个整数 NNN。

接下来 NNN 行每行一个大写字母,表示初始队列。

输出格式
输出一个长度为 NNN 的字符串,表示可能的最小字典序队列。

每输出 808080 个字母需要一个换行。

输入输出样例

输入

6
A
C
D
B
C
B

输出

ABCBCD

思路分析

简化题目为:
每一次从旧数组的前或后选择一个字符加入新的数组的后方,使得最终新数组字典序最小。

贪心,局部最优,肯定选两边小的。

但是,如果一样怎么办? 两侧都向内查找一个

AC的C++代码如下:

#include<iostream>
#include<algorithm>
using namespace std;int main()
{int n;char s1[2010],s2[2010];cin >> n;for (int i = 0; i < n; i++)cin >> s1[i];int le = 0, ri = n - 1,i = 0;while (le < ri){if (s1[le] < s1[ri]){s2[i] = s1[le];le++;i++;}else if (s1[le] > s1[ri]){s2[i] = s1[ri];ri--;i++;}else//头尾相等{int m=0;//m为连续几个数相等for (m = 1; ; m++){if (s1[le + m] != s1[ri - m])//第一次出现不一样的数break;elsecontinue;}if (s1[le + m] < s1[ri - m]){for (int x = 0; x <= m; x++)s2[i + x] = s1[le + x];i += m + 1;le += m + 1;}else{for (int x = 0; x <= m; x++)s2[i + x] = s1[ri - x];i += m + 1;ri -= m + 1;}}}s2[n-1] = s1[le];for (int i = 0; i < n; i++){cout << s2[i] ;if ((i + 1) % 80 == 0)cout << endl;}return 0;
}

洛谷P6140 [USACO07NOV]Best Cow Line S相关推荐

  1. 洛谷 P2888 [USACO07NOV]牛栏Cow Hurdles

    题目描述 Farmer John wants the cows to prepare for the county jumping competition, so Bessie and the gan ...

  2. 洛谷 P2888 [USACO07NOV] 牛栏Cow Hurdles

    题目描述 Farmer John wants the cows to prepare for the county jumping competition, so Bessie and the gan ...

  3. 洛谷P2888 [USACO07NOV]牛栏Cow Hurdles

    题目描述 Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏.她们很累,所以她们想消耗最少的能量来跨栏. 显然,对于一头奶牛跳过几个矮栏是很容易的,但是高栏却很难.于是 ...

  4. POJ3612 洛谷P2885 [USACO07Nov] Telephone Wire 架设电话线 dp

    题目链接:洛谷 POJ 题目描述 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的 N ( ...

  5. 洛谷 P2887 [USACO07NOV]防晒霜Sunscreen 解题报告

    P2887 [USACO07NOV]防晒霜Sunscreen 题目描述 To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2 ...

  6. (贪心)洛谷P2887 [USACO07NOV]防晒霜Sunscreen

    一.算法分析 贪心策略是将牛按照minspf的降序排,然后在尽可能满足当前牛的情况下,优先取spf值大的防晒霜. 这样选择的原因是本题的特点(也是一些其它贪心类问题的特点),即如果我放弃了当前的牛,后 ...

  7. 洛谷P5831 Python [USACO19DEC]Cow Gymnastics B

    题目描述 为了提高健康水平,奶牛们开始进行体操训练了!Farmer John 选定了他最喜爱的奶牛 Bessie 来执教其他 NN 头奶牛,同时评估她们学习不同的体操技术的进度. KK 次训练课的每一 ...

  8. Cow Line(洛谷-P3014)

    题目描述 The N (1 <= N <= 20) cows conveniently numbered 1...N are playing yet another one of thei ...

  9. 洛谷 P3014 [USACO11FEB]牛线Cow Line

    P3014 [USACO11FEB]牛线Cow Line 题目背景 征求翻译.如果你能提供翻译或者题意简述,请直接发讨论,感谢你的贡献. 题目描述 The N (1 <= N <= 20) ...

最新文章

  1. 程序设置横屏后,锁屏时会被销毁一遍,解锁时又重新加载onCreat的问题解决
  2. plot、bar、stem、area函数绘图
  3. Python 基础知识整理-2
  4. 在使用ToolBar + AppBarLayout,实现上划隐藏Toolbar功能,遇到了一个坑。
  5. 关于Js(四)------ jquery ajax 中json接收数据注意事项
  6. Qt4_用DOM读取XML
  7. linux下播放wma格式,Ubuntu 20.04中使Rhythmbox支持WMA格式文件播放
  8. 挑选大数据营销平台应注意哪些问题
  9. Java NIO入门
  10. Java - BeanUtils.copyProperties 与 PropertyUtils.copyProperties 用法及区别
  11. 戴尔服务器r720u盘装系统,DELL R720服务器U盘安装操作系统指南
  12. Vue 数组/对象赋值,视图不更新问题
  13. kotlin-协成同步
  14. SQLRecoverableException: Closed Connection
  15. matlab如何跳转程序,matlab如何跳转-matlab界面跳转-matlab跳转函数
  16. PHP在UTF8下生成的.csv在excel中乱码问题解决
  17. USB OTG的检测原理及使用
  18. java毕业设计汽车商城系统mybatis+源码+调试部署+系统+数据库+lw
  19. 虚拟机测试服务器最大带宽,利用VMware ESXi测量网络延迟 你了解多少
  20. 杭电ACM1049题

热门文章

  1. 【 D3.js 入门系列 --- 4 】 怎样使用scale(比例)
  2. 开头什么的肯定要自我介绍然后把它扔到置顶咯_~
  3. 用MyEclipse测试发送email时报java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
  4. 算法进阶之Leetcode刷题记录
  5. EF中使用SQL语句或存储过程
  6. Python——异常基础
  7. [CF808B] Average Sleep Time([强行]树状数组,数学)
  8. 源码-0105-Autoresizing
  9. SAP 录屏BDC使用—实例 \
  10. 【CSWS2014 Main Conference】Some Posters