zoukankan      html  css  js  c++  java
  • 51nod 1431 快乐排队

    题目来源: CodeForces
    基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
     收藏
     关注

    有一群人在排队,如果某个人想排到前面去,可以花一元钱给直接站在他前面的人,然后和这个人交换位置。如果自己没有钱了,就不能和前面的人交换。

    但是呢,队列里面的人觉得排他前面的所有人一定要比较有钱的,至少不能比他自己拿的少。否则里面就会有人生气。站在队头的人一定是高兴的。

    现在给出一个队列的初始状态,问能不能调整队列,使得里面的人都高兴。

    样例解释:样例1中,队尾的人可以和前面的人交换,变成9 10。

    Input
    单组测试数据。
    第一行包含一个整数n (1 ≤ n ≤ 200,000),表示队列中的人数。
    第二行包含n个空格分开的整数 ai (0 ≤ ai ≤ 10^9),ai表示队列中第i个人手上拿的钱。编号从队尾开始。
    Output
    对于每一组数据如果能够使得所有人高兴输出Happy,否则输出Sad。
    Input示例
    2
    11 8
    2
    9 8
    Output示例
    Happy
    Sad



    可以把位置看做另一部分钱

    因为位置交换会使位置+1 金钱-1

    这样位置+金钱是个定值

    所以只需要排序去重就可以 

    脑洞题。。

    屠龙宝刀点击就送

    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #define N 205000
    
    using namespace std;
    int zs[N],n,t,sum;
    int main()
    {
        memset(zs,0,sizeof(zs));
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&zs[i]);
            zs[i]+=i;
        }
        sort(zs+1,zs+n+1);
        int i;
        for(i=2;i<=n;i++)
         if(zs[i-1]==zs[i])
          break;
        if(i==n+1) printf("Happy
    ");
        else printf("Sad
    ");
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    比特币脚本及交易分析
    分析比特币网络:一种去中心化、点对点的网络架构
    比特币如何挖矿(挖矿原理)-工作量证明
    比特币所有权及隐私问题-非对称加密应用
    区块链记账原理
    用Python从零开始创建区块链
    基础语法-算术运算符
    基础语法-数据类型转换
    基础语法-数据类型介绍及使用
    基础语法-变量介绍
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7510390.html
Copyright © 2011-2022 走看看