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
  • 相关阅读:
    Oracle和MySQL的对比
    mysql的默认隔离级别
    mysql数据库中锁机制的详细介绍
    什么电影是好电影
    周记 2019.4.8~4.14
    周记 2019.3.25~2019.3.31
    IntelliJ Idea 使用笔记
    笔记
    kafka总结
    Spring boot
  • 原文地址:https://www.cnblogs.com/Dream-Runner/p/10129422.html
Copyright © 2011-2022 走看看