zoukankan      html  css  js  c++  java
  • 1427:数列极差

    1427数列极差

    [题解]

    本题我是用优先队列做的QWQ

    说说思路吧

    这是一道贪心题

    我们有一组数字

    每次去掉两个 x , y,再加入一个新的 x*y+1

            如果保证最后得到一个最大的数字,那么每次去掉两个最小的数字,换来一个较大的数字(这样最后结果会越来越大)

            如果保证最后得到一个最小的数字,那么每次去掉两个最大的数字,换来一个新数字(由于你去掉了两个最大的数字,那么在最后你就失去了乘最大数让结果最大的机会,所以这个操作过程使得结果呈现递减趋势,结果就最小啦)

    [代码]

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<queue>
    #include<functional>
    
    using namespace std;
    
    int n,maxn,minn,shu,x,y,ac[10001];
    priority_queue<int,vector<int> ,greater<int> > a;
    priority_queue<int> b; 
    
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d",&ac[i]);
        
        for(int i=1;i<=n;i++)
            a.push(ac[i]);  
        for(int i=1;i<=n;i++)
            b.push(ac[i]);
        
        for(int i=1;i<=n-1;i++)
        {
            x=a.top();
            a.pop();
            y=a.top();
            a.pop();
            a.push(x*y+1);
            
        }
        maxn=a.top();
        
        for(int i=1;i<=n-1;i++)
        {
            x=b.top();
            b.pop();
            y=b.top();
            b.pop();
            b.push(x*y+1);
        }
        minn=b.top();
      
        printf("%d",maxn-minn);
        
        return 0;
    }
  • 相关阅读:
    python线程同步
    闭包、装饰器
    python中的return返回值
    常用内建函数
    python迭代器与生成器
    python基础之数据类型
    VS生成解决方案时报错: Your project does not reference ".NETFramework,Version=v4.5"
    Unity 低版本打开高版本项目
    关闭应用程序的所有子窗体
    按钮接收 Enter 键
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10988008.html
Copyright © 2011-2022 走看看