zoukankan      html  css  js  c++  java
  • 翻转 -- CodeForces

    题目链接:

    https://cn.vjudge.net/problem/25167/origin

    思路:

    这是一道水题,但是一开始思路有点问题。。

    1000的数据大小,直接暴搜左开始第一个与i不等的下标,再从右开始搜第一与i不等的下标

    然后用swap,或者reverse翻转一下,再进行对比就行。

    有一个小坑就是原本就是顺序的话不行,因为题目明确要求必须翻转一次!

    下面是AC代码:

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    const int MX = 1e3+10;
    int a[MX];
    
    int main()
    {
        bool flag = true;
        int n;
        scanf("%d", &n);
        for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
        int le = 0, ri = 0;
        for(int i = 1; i <= n; ++i)
        {
            if(a[i] != i)
            {
                le = i;
                break;
            }
        }
        for(int i = n; i >= 1; i--)
        {
            if(a[i] != i)
            {
                ri = i;
                break;
            }
        }
        if(le == 0 && ri == 0) flag = false;
    
        for(int i = le; i <= (le+ri)/2; ++i)
        {
            swap(a[i], a[ri-i+le]);
            //printf("%d %d
    ", a[i], a[ri-i+le]);
        }
    
        for(int i = 1; i <= n; ++i)
        {
            //cout << a[i];
    
            if(a[i] != i)
            {
                flag = false;
                break;
            }
    
        }
        if(flag) printf("%d %d
    ", le, ri);
        else printf("0 0
    ");
    }
    View Code

    如有疑问,欢迎评论指出!

    化繁为简 大巧不工
  • 相关阅读:
    51nod 1179 最大的最大公约数 (数论)
    POJ 3685 二分套二分
    POJ 3045 贪心
    LIC
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    HDU 2389 Rain on your Parade
    HDU 2819 Swap
    HDU 1281 棋盘游戏
    HDU 1083 Courses
  • 原文地址:https://www.cnblogs.com/mpeter/p/10295880.html
Copyright © 2011-2022 走看看