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
  • 相关阅读:
    POJ1239
    HDU 2829 四边形不等式优化
    返回数字二进制的最高位位数o(n)
    矩阵快速幂 模板
    HDU4718 The LCIS on the Tree(LCT)
    HDU4010 Query on The Trees(LCT)
    HDU3487 Play With Chains(Splay)
    CF444C DZY Loves Colors
    HDU4836 The Query on the Tree(树状数组&&LCA)
    HDU4831&&4832&&4834
  • 原文地址:https://www.cnblogs.com/Dream-Runner/p/10129422.html
Copyright © 2011-2022 走看看