糰子大家族(結論題 思維)

2021-10-05 10:22:47 字數 1826 閱讀 8359

題目描述

dango, dango, dango daikazoku

糰子, 糰子, 糰子大家族。

糰子(だんご)是 動畫《clannad》中虛構的一種很萌的生物,也是本題的主人公。

糰子們在一起做遊戲。首先,n個糰子們每個糰子有乙個編號,排成一排。

接下來進行若干輪操作。

奇數輪,每個糰子把自己的編號變成自己原先編號和右邊相鄰的糰子原先編號的較大值,同時最右邊的糰子離開遊戲。

偶數輪,每個糰子把自己的編號變成自己原先編號和左邊相鄰的糰子原先編號的較小值,同時最左邊的糰子離開遊戲。

每過一輪都會離開乙個糰子,經過(n-1)輪之後恰好還有乙個糰子。糰子們想知道最後剩下的這個糰子身上的編號是多少。

輸入第1行乙個整數n, 表示糰子的個數

第2行n個整數, 空格隔開, 從左到右表示每個糰子的編號a1,a2…ai..an

輸出一行乙個整數表示最後剩下的糰子的編號.

樣例輸入 copy

7

70611 29202 67893 80203 157086 37318 141366

樣例輸出 copy

80203

提示 全部測試點, 10<=n<=200000, 0<=ai<=200000

思路:仔細想想,最中間的那個數一定是左右左的走。寫了幾組資料,大膽猜測

偶數是中間兩個數的最大值。因為偶數最後一項運算元奇數次操作。

奇數一開始猜測數最中間的那個數,這很接近了。但是不是。正確的應該 min(max(a[i],a[i+1),max(a[i+1],a[i+2]))。

#pragma comment(linker, "/stack:1024000000,1024000000")

#pragma gcc optimize(3,"ofast","inline")

#include using namespace std;

#define rep(i , a , b) for(register ll i=(a);i<=(b);i++)

#define per(i , a , b) for(register ll i=(a);i>=(b);i--)

#define ms(s) memset(s, 0, sizeof(s))

#define squ(x) (x)*(x)

typedef long long ll;

typedef unsigned long long ull;

typedef pairpi;

typedef unordered_mapun_map;

templateinline void read (t &x)

while (c >= '0' && c <= '9')

x = x * sign;}

const int maxn = 1e6 + 10;

const int inf = 0x3f3f3f3f;

const ll inf = ll(1e18);

const int mod = 1e9+7;

const double pi = acos(-1);

int a[maxn];

int main(int argc, char * ar**)

else

if(x>y) swap(x,y);

if(x>z) swap(x,z);

if(y>z) swap(y,z);

ans=y;

}printf("%d\n",ans);

return 0;

}

糰子最大家族(clannad)

bx2k有許多五顏六色的萌萌噠糰子。每個糰子有一種顏色。他決定將m個糰子排成一排。為了美觀,他要求任何相鄰的兩個糰子不能有相同的顏色。因為bx2k很懶,因此他來尋求你的幫助。輸入檔案包含兩行。第一行為乙個整數n,表示共有n種顏色的糰子。第二行為n個空格隔開的整數ai,表示顏色為i的糰子有ai個。題目...

集合大家族

今天看到了一張集合的圖,想著有空了進行整理整理,前面高能,哈哈哈哈 看圖 我們可以看到在集合 容器 的左右都有介面,而右邊的偏多,這張圖總結了各個介面的優缺點以及面試中會遇到的問題。右邊 iterable iterable是iterator 迭代器 的父類,實現了iterable介面的類都可以擁有增...

offset三大家族

offset家族 1.1 三大家族和乙個事件物件 三大家族 offset scroll client 事件物件 event 事件被觸動時,滑鼠和鍵盤的狀態 通過屬性控制 1.2 offset家族簡介 offset這個單詞本身是 偏移,補償,位移的意思。js中有一套方便的獲取元素尺寸的辦法就是offs...