CF451B
题目简化和分析:
这题就是判断将一段翻转后是否能变为升序的数组。
我的方法是保存原数组每一个数出现的位置(相同任意一个),让后另外用一个数组存储排好序后的原数组,逐一进行比较。
- 若同,则跳到下一个元素比较继续。
- 若不同,枚举当前位置到排序数组当前元素在原数组中的位置,时候一直为降序。
- 若多次出现不同,则跳出循环,立即输出。
- 特别的,若一直相同任意输出相同的左端点和右端点,但保证是合法范围内的。
Solution:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int N=1e5+50;
const int M=1e5+50;
const int Mod=1e9+7;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
int n;
int a[N],b[N];
map<int,int>pos;
int main()
{
n=read();
for(int i=1;i<=n;++i) a[i]=read(),b[i]=a[i],pos[a[i]]=i;
sort(b+1,b+n+1);
int l=0,r=0;
bool flag=1;
for(int i=1;i<=n;){
if(a[i]==b[i]){
i++;
continue;
}
if(l!=0){
flag=0;
break;
}else{
l=i,r=pos[b[i]];
i=pos[b[i]]+1;
for(int j=l;j<r;++j){
if(a[j]<a[j+1]){
flag=0;
break;
}
}
if(!flag) break;
}
}
if(flag){
printf("yes\n");
if(l==0) l=r=1;
printf("%d %d\n",l,r);
}else{
printf("no\n");
}
return 0;
}
CF451B的更多相关文章
- CF451B Sort the Array 水题
Codeforces Round #258 (Div. 2) Sort the Array B. Sort the Array time limit per test 1 second memory ...
随机推荐
- 大数据实战手册-开发篇之IO
2.4 sparkContext IO:读 2.4.1 textFile # Load a text file and convert each line to a Row. lines = sc.t ...
- Linux系统运维之FastDFS集群部署
一.简介 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.FastDFS服务端有两个 ...
- Java使用qq邮箱发送邮件(可做验证码使用)
pom.xml中导入发邮件需要的jar包 <!-- 邮箱 --> <dependency> <groupId>javax.mail</groupId> ...
- Redis的设计与实现-总结
个人真的很喜欢这本书, 从对C语言一窍不通, 到发现C语言竟然如此简洁, 以至于我喜欢上了C! 对此前面的底层数据结构也读了几次, 大致整理了书里的内容, 后面的就粗略看了一下, 不再细细整理了. R ...
- linux中利用crontab设置定时任务
linux中利用crontab设置定时任务: # 每隔1个小时运行一次命令,四个*分别代表分,时,日,月,周 # crontab -l查看:crontab -e编辑 */1 * * * * /root ...
- 伸展树(Splay)详解
引入 在一条链中,二叉查找树的时间复杂度就会退化成 \(O(n)\),这时我们就需要平衡树来解决这个问题. \(Splay\)(伸展树)是平衡树的一种,它的每一步插入.查找和删除的平摊时间都是 \(O ...
- 2021-4-19 vs加速启动小技巧之intellitrace
在选项界面中将intellitrace的启用关闭后对于程序的打开有加速作用.
- Django: request.GET.get()
释义 query = request.GET.get('name', '') 寻找名为name的GET参数,而且如果参数没有提交,返回一个空的字符串. 对比request.GET() 如果使用requ ...
- Node.js安装中出现的问题及其解决方案
Node.js安装与配置流程,请参考 1.npm -v测试时出现警告 更好的选择是安装一个更完善的版本 问题出现的原因 node更新后是最新版 但是npm的版本没有相应的更新存在版本滞后导致问题出现 ...
- GGTalk 开源即时通讯系统源码剖析之:客户端全局缓存及本地存储
继上篇<GGTalk 开源即时通讯系统源码剖析之:虚拟数据库>详细介绍了 GGTalk 内置的虚拟的数据库,无需部署真实数据库便能体验GGTalk的全部功能,虚拟数据库将极大地简化服务端的 ...