博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2882: 工艺
阅读量:4984 次
发布时间:2019-06-12

本文共 1186 字,大约阅读时间需要 3 分钟。

2882: 工艺

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 716  Solved: 324
[][][]

Description

小敏和小燕是一对好朋友。
他们正在玩一种神奇的游戏,叫Minecraft。
他们现在要做一个由方块构成的长条工艺品。但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边。
他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮。
两个工艺品美观的比较方法是,从头开始比较,如果第i个位置上方块不一样那么谁的瑕疵度小,那么谁就更漂亮,如果一样那么继续比较第i+1个方块。如果全都一样,那么这两个工艺品就一样漂亮。

Input

第一行两个整数n,代表方块的数目。
第二行n个整数,每个整数按从左到右的顺序输出方块瑕疵度的值。

Output

一行n个整数,代表最美观工艺品从左到右瑕疵度的值。

Sample Input

10
10 9 8 7 6 5 4 3 2 1

Sample Output

1 10 9 8 7 6 5 4 3 2

HINT

 

【数据规模与约定】
对于20%的数据,n<=1000
对于40%的数据,n<=10000
对于100%的数据,n<=300000

 

题解

  咳咳我就是贴个代码……嗯最小表示法嘛大家都会的……就是求一个串的字典序最小的循环同构串……如题目那样的定义……

  其实我是今天才学的……还是在代码里打个注释吧

  

program j01;var n,i,pos:longint;    s:array[0..600086]of longint;function min(a,b:longint):longint;begin  if as[j+k]) then i:=i+k+1 else j:=j+k+1;    //这里就是说啊,因为我们k是一个一个比较过来的,所以说假如有0<=x<=k,(假如s[i+k]>s[j+k])那么如果i+x开始的循环同构串一定比j+x大(因为i+x到i+k的每个字符大小实际上我们已经比较过了),都不可能成为最小的,那么直接把i跳到i+k=1。    if i=j then inc(j);  end;  exit(min(i,j));//当然也有可能存在i跳过头的情况……这时候答案就是jend;begin  readln(n);  for i:=1 to n do  begin    read(s[i]);s[i+n]:=s[i];  end;  pos:=get;  for i:=0 to n-2 do write(s[i+pos],' ');  writeln(s[i+n-1]);end.

 

转载于:https://www.cnblogs.com/oldjang/p/6511011.html

你可能感兴趣的文章
springboot-helloworld实现
查看>>
关于CocoaSocket
查看>>
面试准备专题——SOA架构
查看>>
前端 CSS padding 目录
查看>>
android无缝切换播放器,KingPlayer一个专注于 Android 视频播放器的基础库,支持无缝切换内核。...
查看>>
layui中的html怎样接收后台的值,layui框架与SSM前后台交互的方法
查看>>
Skulpt在线模拟运行Python工具
查看>>
287.软件测试概述
查看>>
297.白盒测试
查看>>
新闻客户端的突破与创新
查看>>
网络通信引擎ICE的使用
查看>>
js滚动事件实现滚动触底加载
查看>>
CetnOS minimal 网络不可用
查看>>
MySQL 数据库备份
查看>>
python 笔记
查看>>
【Java】NIO中Channel的注册源码分析
查看>>
JS监测鼠标指针位置
查看>>
Mac常用终端命令
查看>>
团队作业2
查看>>
vue-cli(vue脚手架)详细教程
查看>>