【T^T 1871】获取敌情
获取敌情
- 在公元4484年,人类展开了对外界星球的征途和探索,但也不可避免的展开了和外星人之间的战争。偶然的机遇之下,美国联邦调查局截获了一串来自外星球的信息。但不知道有什么特殊的意义。所以就委托你,人类世界仅存的Acmer来破解这串神秘的信息。
- 所截获这条信息是长度为N的字符串Str,要重新组合成一个长度同样为N的字符串Ttr。Ttr一开始是一个空串。
- 重新组合的规则如为:每次从Str的字符串的头部或者尾部去除一个字符,并且接到Ttr的尾部。重复操作,直到Str为空串,Ttr为长度为N的字符串。
- 破解这条信息的关键在于要构造字典序尽可能小的字符串。
- 字典序:是指从前到后比较两个字符串大小的方法。首先比较第一个字符。如果不同则第一个字符较小的字符串更小,如果相同继续比较第二个字符串,来比较整个字符串的大小。
- 加油吧,聪明的Acmer,拯救人类的重担就靠你们了
Input
- 输入包含多组样例。
- 首先输入整数N(1<=N<=1000)
- 然后输入字符串Str(仅含有大写字母)
Output
对于每一组测试案例,在每一行输出破解后的字符串Ttr。
Sample Input
- 6
- ACDBCB
Sample Output
- ABCBCD
Solution
靠,历时悠久
最开始压根就没管两边相等的情况,直接输出
然后发现有相等的情况,开始各种讨论:
- 字典序最小,放前面的越小越好,然后得出基本思路,从两边开始找小的
- 相等的情况
- 一直是变小(一直相等)的,直到有变大的,一个变大,就输出另外一边
- 两边变大,就找下一个小的那边
- 并且第一种情况,要考虑和另一边第一个的大小
话说我的其实可以不讨论的,直接输出相等的比下一位即可.
还有发一份Marris的代码(thank him,借代码拍的),他的做法更简单,不用讨论,相同的就一直相同,考虑第一位不相同的大小决定删哪边(保证最优)→ 每次只删一个,所以不用讨论下一位大小关系
福利数据
这个是我拍了10w组WA的
7
dadeadd
daddade
Code
- // This file is made by YJinpeng,created by XuYike's black technology automatically.
- // Copyright (C) 2016 ChangJun High School, Inc.
- // I don't know what this program is.
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- using namespace std;
- typedef long long LL;
- const int MAXN=1010;
- char s[MAXN];
- int main()
- {
- freopen("1871.in","r",stdin);
- freopen("1871.out","w",stdout);
- int n;
- while(~scanf("%d",&n)){
- scanf("%s",s);
- int l=0,r=n-1;
- while(l<r){
- while(l<=r&&s[l]<s[r])
- putchar(s[l++]);
- while(l<=r&&s[l]>s[r])
- putchar(s[r--]);
- if(s[l]==s[r]){
- int x=l+1,y=r-1;
- if(l==r)break;
- while(s[x]==s[y]&&y-x>=3&&s[x]<=s[x-1])x++,y--;
- if(s[y]<s[r]&&s[y]<s[x])
- for(int i=r;i>=y;i--)putchar(s[i]),r=y-1;
- else if(s[x]<s[l]&&s[x]<s[y])
- for(int i=l;i<=x;i++)putchar(s[i]),l=x+1;
- else if(s[x]<s[y])
- for(int i=l;i<x;i++)putchar(s[i]),l=x;
- else for(int i=r;i>y;i--)putchar(s[i]),r=y;
- }
- }if(l==r)putchar(s[l]);printf("\n");
- }
- return 0;
- }
this is good
- // This file is made by YJinpeng,created by XuYike's black technology automatically.
- // Copyright (C) 2016 ChangJun High School, Inc.
- // I don't know what this program is.
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- using namespace std;
- typedef long long LL;
- const int MAXN=1010;
- char s[MAXN];
- int main()
- {
- freopen("1871.in","r",stdin);
- freopen("1871.out","w",stdout);
- int n;
- while(~scanf("%d",&n)){
- scanf("%s",s);
- int l=0,r=n-1;
- while(l<r){
- while(l<=r&&s[l]<s[r])
- putchar(s[l++]);
- while(l<=r&&s[l]>s[r])
- putchar(s[r--]);
- if(s[l]==s[r]){
- int x=l+1,y=r-1;
- if(l==r)break;
- while(s[x]==s[y]&&y-x>=3&&s[x]<=s[x-1])x++,y--;
- if(s[x]<s[y])
- for(int i=l;i<x;i++)putchar(s[i]),l=x;
- else for(int i=r;i>y;i--)putchar(s[i]),r=y;
- }
- }if(l==r)putchar(s[l]);printf("\n");
- }
- return 0;
- }
【T^T 1871】获取敌情的更多相关文章
- 敌情篇 ——DDoS攻击原理
敌情篇 ——DDoS攻击原理 DDoS攻击基础 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是 ...
- 微信企业号 获取AccessToken
目录 1. AccessToken介绍 2. 示例代码 1. AccessToken介绍 1.1 什么是AccessToken AccessToken即访问凭证,业务服务器每次主动调用企业号接口时需要 ...
- salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)
本篇引用以下三个链接: http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.html?m=1 https://github ...
- HTML 获取屏幕、浏览器、页面的高度宽度
本篇主要介绍Web环境中屏幕.浏览器及页面的高度.宽度信息. 目录 1. 介绍:介绍页面的容器(屏幕.浏览器及页面).物理尺寸与分辨率.展示等内容. 2. 屏幕信息:介绍屏幕尺寸信息:如:屏幕.软件可 ...
- 【.net 深呼吸】启动一个进程并实时获取状态信息
地球人和火星人都知道,Process类既可以获取正在运行的进程,也可以启动一个新的进程.在79.77%应用场合,我们只需要让目标进程顺利启动就完事了,至于它执行了啥,有没有出错,啥时候退出就不管了. ...
- WPF 微信 MVVM 【续】修复部分用户无法获取列表
看过我WPF 微信 MVVM这篇文章的朋友,应该知道我里面提到了我有一个小号是无法获取列表的,始终也没找到原因. 前两天经过GitHub上h4dex大神的指导,知道了原因,是因为微信在登录以后,web ...
- 获取Canvas当前坐标系矩阵
前言 在我的另一篇博文 Canvas坐标系转换 中,我们知道了所有的平移缩放旋转操作都会影响到画布坐标系.那在我们对画布进行了一系列操作之后,怎么再知道当前矩阵数据状态呢. 具体代码 首先请看下面的一 ...
- Android 获取系统相册中的所有图片
Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public ...
- js获取给定月份的N个月后的日期
1.在讲js获取给定月份的N个月后的日期之前,小颖先给大家讲下getFullYear().getYear()的区别. ①getYear() var d = new Date() console.log ...
随机推荐
- [Python3网络爬虫开发实战] 1.6.1-Flask的安装
Flask是一个轻量级的Web服务程序,它简单.易用.灵活,这里主要用来做一些API服务. 1. 相关链接 GitHub:https://github.com/pallets/flask 官方文档:h ...
- 零基础入门学习Python(14)--字符串:各种奇葩的内置方法
前言 这节课我们回过头来,再谈一下字符串,或许我们现在再来谈字符串,有些朋友可能觉得没必要了,甚至有些朋友就会觉得,不就是字符串吗,哥闭着眼也能写出来,那其实关于字符串还有很多你不知道的秘密哦.由于字 ...
- JavaScript小技巧整理篇(非常全)
能够为大家提供这些简短而实用的JavaScript技巧来提高大家编程能力,这对于我来说是件很开心的事.每天仅花上不到2分钟的时间中,你将可 以读遍JavaScript这门可怕的语言所呈现给我们的特性: ...
- buf.fill()
buf.fill(value[, offset[, end]][, encoding]) value {String} | {Buffer} | {Number} offset {Number} 默认 ...
- CUDA_one
首先我看了讲解CUDA基础部分以后,大致对CUDA的基本了解如下: 第一:CUDA实行并行化的过程分为两部分,一个是线程块之间的并行(这是在每个线程网格中grid进行的),一个是对于每一个线程块内部各 ...
- 关于java post get请求Demo (请求c#iis接口)
废话不多说,直接上代码 package dxq.httpGetDemo; import java.io.ByteArrayOutputStream; import java.io.InputStrea ...
- JavaScript学习---简易图片轮播
效果如下: 图片定时轮播 点击左右控制显示下一张或上一张图片 index.html文件 <html> <head> <title> js编写实现幻灯片效果 < ...
- python 几种点积运算方式效率分析
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51793984 本文列举出几种pytho ...
- 搭桥(codevs 1002)
题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...
- Bootstrap官网文档查询
Ctrl+F 在出现的小搜索框里面输入要查找的东西.回车即可!