zoukankan      html  css  js  c++  java
  • IncDec Sequence

    IncDec Sequence

    题目描述:

    给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。 问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。

    输入:

    第一行一个正整数n 接下来n行,每行一个整数,第i+1行的整数表示ai。

    输出:

    第一行输出最少操作次数 第二行输出最终能得到多少种结果

    样例输入:

    4
    1
    1
    2
    2
    

    样例输出:

    1
    2
    

    思路:

    对于带有“将一段区间内的每个数全部加上某个值”这种操作的题目,通常考 虑差分原数列以简化情况,将对一段区间的操作转化为对某两个特定数的操作。差分原数列后可以将题目的要求转化为使得差分数列中的后n-1个值的都变 为 0 每次操作可以看为对数列中的两个数分别进行+1 和-1 记录差分数列中的 所有正数和为 s1 负数和为 s2 求最小操作次数和种数 肯定是优先在 n-1 个数 中选择两个数(即一负一正)同时进行的操作,次数为 min(s1,s2), 之后进行 abs (s1-s2)次对后 n-1 个中的非 0 数和(第 1 个或是第 n+1 个的数)的操作得到结 果 第一个数最终有 abs(s1-s2)种可能的情况 所以第一问第二问答案分别为 max(s1,s2 ) , abs(s1-s2)+1。

    /****************************************************
    @Author: LeafLove
    @TIME:   2020-03-12
    @FILENAME: cahfn.cpp
    @REMARK:    
    ****************************************************/
    #include <bits/stdc++.h>
    #define lowbit(x) (x&(-x))
    #define CSE(x,y) memset(x,y,sizeof(x))
    #define INF 0x3f3f3f3f
    #define Abs(x) (x>=0?x:(-x))
    #define FAST ios::sync_with_stdio(false);cin.tie(0);
    using namespace std;
     
    typedef long long ll;
    typedef pair<int,int> pii;
    typedef pair<ll , ll> pll;
     
    const int maxn=1111111;
    ll a[maxn];
     
    int main()
    {
    #ifndef ONLINE_JUDGE
        freopen("in.in","r",stdin);
    #endif
        FAST;
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        ll high=0,low=0;
        for(int i=n;i>1;i--){
            if(a[i]>a[i-1]){
                high+=a[i]-a[i-1];
            }
            else
            {
                low+=a[i-1]-a[i];
            }
        }
        cout<<max(high,low)<<endl;
        cout<<abs(high-low)+1<<endl;
        return 0;
    }
    
  • 相关阅读:
    接口报错mixed content blocked
    重拾单片机
    部署ajax服务-支持jsonp
    linkageSystem--串口通信、socket.io
    node安装问题
    jshint之对!的检验
    node之websocket
    调试node服务器-过程
    oracle取某字符串字段的后4位
    vmware 共享文件夹
  • 原文地址:https://www.cnblogs.com/LeafLove/p/12498529.html
Copyright © 2011-2022 走看看