51nod 1431 快乐排队
生活随笔
收集整理的這篇文章主要介紹了
51nod 1431 快乐排队
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目來源:?CodeForces 基準(zhǔn)時間限制:1?秒 空間限制:131072?KB 分值:?80?難度:5級算法題 ?收藏 ?關(guān)注
有一群人在排隊,如果某個人想排到前面去,可以花一元錢給直接站在他前面的人,然后和這個人交換位置。如果自己沒有錢了,就不能和前面的人交換。
但是呢,隊列里面的人覺得排他前面的所有人一定要比較有錢的,至少不能比他自己拿的少。否則里面就會有人生氣。站在隊頭的人一定是高興的。
現(xiàn)在給出一個隊列的初始狀態(tài),問能不能調(diào)整隊列,使得里面的人都高興。
樣例解釋:樣例1中,隊尾的人可以和前面的人交換,變成9 10。
Input 單組測試數(shù)據(jù)。 第一行包含一個整數(shù)n?(1?≤?n?≤?200,000),表示隊列中的人數(shù)。 第二行包含n個空格分開的整數(shù)?ai?(0?≤?ai?≤?10^9),ai表示隊列中第i個人手上拿的錢。編號從隊尾開始。 Output 對于每一組數(shù)據(jù)如果能夠使得所有人高興輸出Happy,否則輸出Sad。 Input示例 2 11?8 2 9?8 Output示例 Happy Sad可以把位置看做另一部分錢
因為位置交換會使位置+1 金錢-1
這樣位置+金錢是個定值
所以只需要排序去重就可以?
腦洞題。。
屠龍寶刀點(diǎn)擊就送
#include <algorithm> #include <cstring> #include <cstdio> #define N 205000using 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\n");else printf("Sad\n");return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/ruojisun/p/7510390.html
總結(jié)
以上是生活随笔為你收集整理的51nod 1431 快乐排队的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx+Tomcat服务器负载均衡实
- 下一篇: 怎么看待《百度清风算法3.0》?