日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

51nod快乐排队 1431

發(fā)布時(shí)間:2023/12/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51nod快乐排队 1431 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:

1431 快樂(lè)排隊(duì)
1.0 秒 131,072.0 KB 80 分 5級(jí)題
有一群人在排隊(duì),如果某個(gè)人想排到前面去,可以花一元錢(qián)給直接站在他前面的人,然后和這個(gè)人交換位置。如果自己沒(méi)有錢(qián)了,就不能和前面的人交換。

但是呢,隊(duì)列里面的人覺(jué)得排他前面的所有人一定要比較有錢(qián)的,至少不能比他自己拿的少。否則里面就會(huì)有人生氣。站在隊(duì)頭的人一定是高興的。

現(xiàn)在給出一個(gè)隊(duì)列的初始狀態(tài),問(wèn)能不能調(diào)整隊(duì)列,使得里面的人都高興。

樣例解釋:樣例1中,隊(duì)尾的人可以和前面的人交換,變成9 10。

輸入
單組測(cè)試數(shù)據(jù)。
第一行包含一個(gè)整數(shù)n (1 ≤ n ≤ 200,000),表示隊(duì)列中的人數(shù)。
第二行包含n個(gè)空格分開(kāi)的整數(shù) ai (0 ≤ ai ≤ 10^9),ai表示隊(duì)列中第i個(gè)人手上拿的錢(qián)。編號(hào)從隊(duì)尾開(kāi)始。
輸出
對(duì)于每一組數(shù)據(jù)如果能夠使得所有人高興輸出Happy,否則輸出Sad。
輸入樣例
2
11 8
2
9 8
輸出樣例
Happy
Sad

思路:

不知道是不是5級(jí)題寫(xiě)太多了,我都已經(jīng)快懵圈了

這道題在5級(jí)題里面算是一個(gè)比較簡(jiǎn)單的題目了,如果要進(jìn)行交換的話(huà),自己的金幣數(shù)減一,位置數(shù)加一;被交換的那個(gè)人,金幣數(shù)加一,位置數(shù)減一。。

所以每個(gè)人的位置數(shù) + 金幣數(shù)的和是不變的

我們只需要將a[i] + i,然后去重判斷就好了,有重復(fù)就是Sad,沒(méi)有重復(fù)就是Happy

代碼實(shí)現(xiàn):

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<stack> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; const int maxn = 2e5 + 5;int n; int a[maxn]; int b[maxn];int main(){scanf("%d",&n);for(int i = 1;i <= n;i++){scanf("%d",&a[i]);b[i] = a[i] + i;}sort(b + 1,b + 1 + n);int tot = unique(b + 1,b + 1 + n) - b - 1;if(tot != n) printf("Sad\n");else printf("Happy\n");return 0; }

總結(jié)

以上是生活随笔為你收集整理的51nod快乐排队 1431的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。