POJ 3617-字典序列

【数据集4】GSWP3数据集详解 简介GSWP3数据集 阅读详情

一、Java:

import java.util.Scanner;
public class Main{
    //采用的是翻转字符串进行比较的方法,所以来说这个方法更加简单地比较字符串
      public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        StringBuilder ss = new StringBuilder();
        for (int i = 0; i < N; i++) {
          ss.append(sc.next());
        }
        // String s = sc.nextLine();
        f(ss.toString());  
      }
      private static void f(String s) {
        String s1 = new StringBuilder(s).reverse().toString();
        int N = s.length();
        StringBuilder rs = new StringBuilder();
        int cnt = 0;
        while (rs.length() < N) {
          if (s.compareTo(s1) <= 0) {
            rs.append(s.charAt(0));
            s = s.substring(1);
          } else {
            rs.append(s1.charAt(0));
            s1 = s1.substring(1);
          }
          //字符满80个就换行
          if (rs.length() % 80 == 0) {
            System.out.println(rs.substring(cnt * 80, (cnt + 1) * 80));
            cnt++;
          }
        }
        //余数部分
        if (rs.length() > cnt * 80) {
          System.out.println(rs.substring(cnt * 80));
        }
      }
}

二、C++:

/*
此题埋坑之处:
1.输入时要吸收前面的空格! 因为每输入一个字符要换行,
那我就在输入每个字符之前加个getchar(),来吸收空白的空格、换行等。 
2.题目规定每80个字符输出然后换行
*/
#include<iostream> 
#include<stdio.h>
#include<algorithm>
using namespace std;
char s[2002];

int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		getchar();//吸收前面的空格 
		scanf("%c",&s[i]);	//前面的空格用来匹配空白符号 
	}
	int a=0;
	int b=n-1;
	int ans=0; 
	while(a<=b){ 
		bool left=false;//标记是否输出最左边的字符		 
		for(int i=0;a+i<=b;i++){    
		//巧妙!字符串反转比较[不判断==的情况,因为==了还要判断下一对元素] 
			if(s[a+i]<s[b-i]){
				left=true;   
				break;
			}
			else if(s[a+i]>s[b-i]){
				left=false;
				break;
			}
		}
		
		if(left)  putchar(s[a++]);//输出效率:putchar优于printf优于cout。 
		else putchar(s[b--]); 
		ans++;
		if(ans==80){  //输出80个字符后需要换行 
			cout<<endl; 
			ans=0;
		} 	
	}	
	cout<<endl;
}

三、思路:

意思大概是:

给一个定长为N的字符串S,构造一个字符串T,长度也为N。

起初,T是一个空串,随后反复进行下列任意操作

1. 从S的头部删除一个字符,加到T的尾部

2. 从S的尾部删除一个字符,加到T的尾部

目标是最后生成的字符串T的字典序尽可能小

1≤N≤2000

字符串S只包含大写英文字母

输入:字符串S

输出:字符串T

样例输入: ACDBCB

2. 题目的要求是要求我们求出字典序最小的字符组成的字符串,从题目中字典序最小这些字眼,所以我们想到尝试使用贪心策略来解决

接下来就是解决贪心策略的问题,对于这道题目来说,策略比较容易看出,因为就是字典序最小的问题,谁字典序较小那么我们就是加上谁,所以我们比较头尾字符哪一个字符的字典序较小那么就加上哪一个字符,假如头,尾两个字符相同那么继续往下看头尾两个字符看谁的字典序最小那么就加上哪边字典序较小的问题,例如字符串"ACDBCB",那么第一次循环肯定是先把A加进来,然后把B加进来,下一次判断的时候发现头尾都是"C"那么继续往下看头尾两个字符发现B的字典序小于D那么肯定是先加上尾部的这个C的字符的,然后把B加进来,把C加进来,把D进来,最后形成了字典序最小的字符串"ABCBCD"

其中怎么样表示字符的移动呢,这里我们定义两个整形变量,类似于指针,分别指在字符串的头尾,然后循环的过程中进行移动

使用两个循环,最外面的循环表示字符的移动,里面的循环用来查找当指针指向的两个字符相同的时候那么判断需要加入的字典序较小的是哪一边,其中使用到了辅助的两个变量用来进行字符的移动,当找到当前指针指向的字符不相同的时候那么结束内层循环,那么结束的时候就知道相同的字符的下面的字符哪一边的字典序最小

3. 其中特别要注意输出的问题,因为题目规定每80个字符输出然后换行,刚开始的时候没有注意这个提交代上去提示:Presentation Error,表示输出的格式是有问题的,这个时候修改一下就可以了。

PTP(确时间协议,Precision Time Protocol)时间同步 主时钟定期发送带预估发送时间 t1 的报文(若支持硬件时间戳,实际 t1​ 由后续的Follow_Up报文携带)。所有设备启动后通过协商选举出唯一主时钟(Grandmaster),其余设备自动成为从时钟(Slave)。:从时钟记录接收时间 t2,随后向主时钟发送Delay_Req并记录发送时间 t3​。若使用支持PTP的交换机,可修正报文在交换机内的驻留时间,进一步提升精度。从时钟根据offset调整本地时钟,实现与主时钟同步。动态调整本地时钟,抵消传输延迟和时钟漂移。(或通过BMCA自动当选)。 阅读详情

相关推荐

UE5 VlcMedia 插件编译与流媒体播放实战

本文详细介绍了在虚幻引擎5中编译并集成VlcMedia插件以解决流媒体播放难题的实战指南。针对UE5不再默认支持Win32 API导致的编译错误,文章提供了核心的构建配置文件修改步骤,并指导如何启用插件、创建VLC媒体播放器,最终成功播放如.m3u8等格式的网络直播流或点播视频。

weixin_29013129的博客 339

POJ 3617字典序最小问题

题目 分析 贪心算法,不断比较 不知道为啥没通过(Presentation Error…就很神奇) 代码 #include<iostream> #define N 999999 using namespace std; int n; char a[N]; void sovle() { int x=0,y=n-1; while(x<=y) { int sign=0; for(int i=x,j=y; i<j; j--,i++) { if(a[i]<a[j])

qq_51219814的博客 485

多个MOS管并联应用场景的四大要点

动态运行时,阈值电压Vgsth最低的MOS管首先打开,最后关闭。这种MOS管一般会占据更多的开关损耗,并且在开关转换过程中,承担了更高的电应力。

VBsemi的博客 3749

POJ3617--Best Cow Line(贪心水题)

POJ3617–Best Cow Line(贪心水题) 原题链接: POJ3617. 题目简述 给定长度为N的字符串S,要构造一个长度为N的字符串T。起初,T是一个空串,随后反复进行如下任意操作。 从S的头部删除一个字符,加到T的尾部 从S的尾部删除一个字符,加到T的尾部 标准输入: 第1行:单个整数:N 第2行:输入长度为N的字符串。 标准输出: 输出最小的字典串,每行80个。 示例输入: 6 A C D B C B 示例输出: ABCBCD 贪心思路: 目的是要构造字典序尽量小的字符串T 从

m0_51155633的博客 579

MIMO技术入门

MIMO:多天线技术,发射端和接收端有多个天线(注意:并不是指多个天线板,而是多套振子,每一套是一个独立的天线。) 4G:2、8天线 5G:4、64天线(64T64R) 手机也是多天线 MIMO实现效果的分类: 1)空间分集 。2)空间复用。3)波束赋形。 空间分集(space diversity) 作用:提升接收质量 利用多个天线发射或者接收一个数据流,避免单个信道衰落对整个链路的影响。(比如你的耳机坏了一只并不影响另一只) 空间复用(space multiplexing) 作用:提升速率 利

About1129的博客 2876

torch.nn.rnn实现循环神经网络

------------------------------------nn.rnn模型实现。#------------------------------------模型实现。#-----------------------------------训练模型。#-----------------------------------训练模型。#--------------------------------读取数据。实现循环神经网络,并在至少一个数据集上进行实验,从训练时间、预测精度、...

matlab_python22的博客 2971

POJ 3617——Best Cow Line

链接:http://poj.org/problem?id=3617 题解 #include<iostream> using namespace std; const int MAX_N=2e3+50; int N; //输入字符串的字符个数 int count; //记录字符个数,满足换行要求 char S[MAX_N]; //存放字符串的数组...

SmallProgramer3121的博客 262

协方差矩阵自适应进化策略(CMA-ES)详解:从基础原理到优化算法

CMA-ES是一种先进的无导数优化算法,基于生物进化原理解决连续域非线性优化问题。该算法通过自适应调整多元正态分布的均值、协方差矩阵和步长参数,自动学习搜索空间结构,无需梯度信息即可高效优化。核心创新包括协方差矩阵的秩1和秩μ更新策略,以及基于进化路径的步长控制机制。CMA-ES具有旋转不变性、标度不变性和全局探索能力,特别适合3-300维的黑盒优化问题,在复杂系统仿真、超参数调优等领域表现优异。算法实现中关键参数如种群大小、学习率等均有自适应设置规则,使其成为连续优化领域的基准算法之一。

qq_42212808的博客 524

poj 3617

https://vjudge.net/problem/POJ-3617 问题描述 给定长度为N的字符串S,要构造一个长度为N的字符串T,起初T是一个空串,随后反复进行下列任意操作: 1.从S头部删一个字符加到T尾部 2.从S尾部删一个字符加到T尾部 构造出字典序尽量小的T 思路: 贪心。 前面后面比较,取小的字符放到新串前面。如果相同,就两边同时往中间靠,比较下一个字符。...

dibanfu3470的博客 308

华为OD机试 - 比赛的冠亚季军(Python/JS/C/C++ 双机位C卷 100分)

有个运动员,他们的id为0到N-1,他们的实力由一组整数表示。他们之间进行比赛,需要决出冠亚军。比赛的规则是0号和1号比赛,2号和3号比赛,以此类推,每一轮,相邻的运动员进行比赛,获N (3\leq N< 10000)胜的进入下一轮,实力值大的获胜,实力值相等的情况,id小的情况下获胜,轮空的直接进入下一轮。(0 <= 实力值 <= 10000000000)。输入一行N个数字代表N的运动员的实力值。输出冠亚季军的id,用空格隔开。

学Java,找哪吒 1587

VSS shielding线可以floating吗?

shielding vss不打孔,就相当于dummy metal,如果周围有其他干扰线,他们影响了这段dummy metal,这段dummy metal仍然会对目标线产生干扰,bug的是,工具知道这段dummy是vss,那么计算寄生的时候仍然把它当vss,就有可能噪声没有完全消除,而用户又看不见。而真正接地的线,相当于一直是0,就不会对目标线产生干扰,一般加shield是在route之前,这时候shield能尽量覆盖目标线,等到绕线后再加就会出现shield只覆盖到一部分目标线的情况。

m0_61544122的博客 6636

POJ3617 Best Cow Line Greedy

给你一个字符串,每次两种操作将字符串重组,字典序最小。 将第一个字符加在新字符串尾部 将最后一个字符加在新串尾部 从前从后比较两个字符串字典序,选择小的第一个字符添加到新串尾部,反复如此。相同时随便选一个。不能够简单比较第一个字符。 Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K

1412

7、PPG信号处理与质量评估

本文详细介绍了PPG信号的处理与质量评估方法,包括信号滤波技术(如卷积和互相关)、滤波器选择、信号质量指标(SQI)的定义与应用,以及标注一致性的评估。同时,提供了MATLAB代码示例和操作步骤,并分析了不同指标的优势与适用场景,旨在提高PPG信号在诊断和监测中的准确性与可靠性。

salt的博客 254

贪心算法 poj3617 Best Cow Line

题目链接:http://poj.org/problem?id=3617 大概的中文意思: 比较好的一种思路,令输入的序列为s1,s1的反转的序列为s2; 按照字符串的比较来比较s1和s2的大小,若s1!=s2 则取小的那一个的首字母加入到T序列 若s1 == s2 则默认取s1的首字母加入到T序列。取谁的首字母,谁就往后移动一步。 ...

tobe_numberone的博客 355

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Best Cow Line POJ - 3617(贪心)

Best Cow Line POJ - 3617 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cows in a line and herds them past the ...

rainbowsea_1的博客 242

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

poj-3617

#poj-3617 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual&quot;Farmer of the Year&quot; competition. In this contest every farmer arranges his cows in a line and herds them past the judges. The con...

Saber_Altria 394

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【OJ】贪心法(最小字典序)poj3617 Best Cow Line// acmclub 12701/12695

/* POJ 3617 Best Cow Line 贪心法——最小字典序 */ #in

Wu_Being 的优快云 博客 889

POJ 3617 Best Cow Line(贪心)

题目链接:http://poj.org/problem?id=3617 刷挑战的贪心部分的路上,发现自己学了一年啥也不会。。。贪心的单调性和大致证明我都做不到。。。 来说这道题,这道题,贪心是显然的,如果头和尾的字母不一样,那么肯定是选择字母较小的那个放入答案中。但是,难点在于,如果他们是一样的呢?我想了几种解决方案。 1,直接取头(or尾)的那个,但是这样显然是错误的,样例都跑不过去。

llzhh的博客 366

POJ-3617 Best Cow Line

题目链接 https://vjudge.net/problem/POJ-3617 题目 Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cow...

weixin_30483013的博客 116

Case06_字典序问题,POJ3617

字典序问题 S0:ACDBCB 翻转过来 S1:BCBDCA S0小 取头 S1小 取头 模板题 POJ3617 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cows in a line and herds them past the judges. The contest org

Miracle_for_me的博客 229

POJ 3617 Best Cow Line

Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges h...

忘梦心的博客 238

Best Cow Line(POJ3617)Java实现

Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cows in a line and herds them past the judges. The contest organizers adopted a new registration scheme this

m0_43425029的博客 3015

字典序最小问题(POJ3617)

题目大意:给定长度为N的字符串S,要构造一个长度为N的字符串T。起初,T是一个空串,随后反复进行下列任意操作。 从S的头部删除一个字符,加到T的尾部 从S的尾部删除一个字符,加到T的尾部 目标是构造字典序尽可能小的字符串。 输入: 6 ACDBCB 输出 ABCBCD 解题思路: 这道题我们很容易想到,不断取开头或者结尾最小的一个字母放到T中就可以了。这个思路是正确的,不过我们要针对开头和结尾相同...

小飞猪的博客 1258

POJ3617

FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cows in a line and herds them past the judges. The contest organ...

weixin_46250672的博客 168

poj3617题解

题意很简单,求一个字符数组组合成

Kshatriya_的专栏 678

POJ 3617Best Cow Line(字典序最小的字符串)

题目链接:http://poj.org/problem?id=3617【中文题意】给定长度为n的字符串s,要构造一个长度为n的字符串T。起初,T是一个空串,随后反复进行以下任意操作。 1.从S的头部删除一个字符,加到T的尾部。 2.从S的尾部删除一个字符,加到T的尾部。 目标是构造字典序尽可能小的字符串T。 【思路分析】 只需比较剩余正序序列和剩余倒序序列那个更小就可以了,然后取小的第一个

linlinsong—ACM界蒟水! 1681
上一篇: 背包问题[dp表][01、多重、完全背包]
下一篇: POJ-1850和POJ-1496[word index](组合数学-字母串序号)
ଳxin
博客等级 码龄8年 83粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值