zoukankan      html  css  js  c++  java
  • 清北第四套题

                                       他

    【问题描述】

    一张长度为的纸带,我们可以从左至右编号为(纸带最左端标号为)。现在有次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带的长度是多少。

    【输入格式】

    第一行两个数字如题意所述。

    接下来一行个整数代表每次折叠的位置。

    【输出格式】

    一行一个整数代表答案。

    【样例输入】

    5 2

    3 5

    【样例输出】

    2

    【样例解释】

    树上有只鸟。

    【数据规模与约定】

    对于60%的数据,N,M<=3000。     

    对于100%的数据,N<=10^18,M<=3000。

     

     

    题解:每次折叠时,更新纸带的左右端点,以及这次折叠之后折叠位置的编号。

     

     #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #define N 3100
    #define ll long long 
    using namespace std;
    int m;
    ll n,l(0),r;
    ll a[N];
    int main()
    {
        freopen("he.in","r",stdin);
        freopen("he.out","w",stdout);
        cin>>n>>m;
        r=n;
        for (int i=1;i<=m;i++) 
           cin>>a[i];
        for (int i=1;i<=m;i++)
          {
               if (a[i]*2>=l+r) r=a[i];//更新端点 
                 else l=a[i];
               for (int j=i+1;j<=m;j++)//更新位置 
                 {
                    if (a[j]<l) a[j]=l*2-a[j];
                  if (a[j]>r) a[j]=r*2-a[j];    
               }
          }
        cout<<r-l<<endl;
        
        fclose(stdin);
        fclose(stdout);
        
        return 0;
    }
    参考自hwh大神
  • 相关阅读:
    硬件——STM32 , SN74HC573锁存器
    【模拟】【杂题】jzoj 6345. 【NOIP2019模拟2019.9.8】ZYB建围墙
    归并排序求逆序对
    归并排序求逆序对
    hdu 4135
    hdu 4135
    牛客小白月赛5 A-无关(relationship)
    牛客小白月赛5 A-无关(relationship)
    HDU4027:Can you answer these queries?
    HDU4027:Can you answer these queries?
  • 原文地址:https://www.cnblogs.com/sjymj/p/6037768.html
Copyright © 2011-2022 走看看