zoukankan      html  css  js  c++  java
  • CH0304 IncDec Sequence

    描述

    给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,…,a_n},每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。
    求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。

    输入格式

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

    输出格式

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

    样例输入

    4
    1
    1
    2
    2

    样例输出

    1
    2

    数据范围与约定

    • 对于100%的数据,n=100000,0<=ai<2147483648

    来源

    毕克,石家庄二中【Nescafé 22】杯NOIP模拟赛

    Contest Hunter - 信息学自助比赛

    很神奇的一道题,可以转换成差分形式,然后利用贪心即可。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=50005;
    int a[N],t[N];
    int main(){
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;++i){
            scanf("%d",&a[i]);    
            t[i]=a[i]-a[i-1];
        }
        int s1=0,s2=0;
        for(int i=1;i<=n;++i){
            if(t[i]>0)s1+=t[i];
            else s2+=t[i];
        }
        printf("%d
    %d",min(s1,s2)+abs(s1-s2),1+abs(s1-s2));
        return 0;
    }
    View Code
  • 相关阅读:
    sql 计算auc
    tf.app.flags
    transformer
    python 直连 hive
    rnn 详解
    yolov3
    记学习react-native
    html5横、竖屏状态 以及禁止横屏
    图片懒加载
    npm安装的时候报-4048
  • 原文地址:https://www.cnblogs.com/Dream-Runner/p/10129422.html
Copyright © 2011-2022 走看看