題目
話說世界上有很多超級英雄:蝙蝠俠,蜘蛛俠,超人,名字都寫不出來的人等等。在他們之中有乙個叫kickass。今天他想模仿蜘蛛俠,所以他選擇了一排高樓來跳。
具體來說,他選擇了一列n幢高樓,從左到右標號為1到n。一開始他在第k幢高樓。不幸的是,kickass能力非常有限,只能跳到向左或向右相鄰的高樓,而且他要跳到的樓的高度必須不能大於他現在處在的樓的高度。kickass不想自己看起來很渣渣,所以他在一些高樓頂部放了蹦床,從這些高樓起跳,能跳到任何其他的高樓,不管要跳到的高樓在**或是多高。
你的任務是找到kickass在第k高樓起跳能跳到的最多不同的高樓數。如果kickass跳到一幢高樓超過一次,我們只會算一次。並且,即使kickass沒有重新跳到,第k幢高樓還是要算入答案。
這個比較明顯可以用暴力做:
我們可以發現所有彈簧分別向左、向右連續單調不減的樓都可以到達,那麼先打個標記,並統計入答案內(若s不能到達彈簧,則暴力求s向左、向右最長的單調不增的樓加上等高反向的一段),然後再找沒被標記的最長單調不減或不增的一段,加入答案,輸出ans就行了
這些都可以在o(n)做出來
貼**
#include
#include
#include
#include
using
namespace
std;
#define n 300011
int n,s,ans;
int a[n];
bool bz[n];
bool p;
void init()
void pre()
}if (!bz[s])p=0;
if (!p)return;
}void work()else
if (bz[i-1])
y=1;
else
if (a[i-1]>=a[i])
++y;
else
z=max(y,z);
y=0;
for (int i=n;i;i--)
if (bz[i])else
if (bz[i+1])
y=1;
else
if (a[i+1]>=a[i])
++y;
else
z=max(y,z);
ans+=z;
}else
}void write()
int main()
GDOI2016模擬8 15安全監控
題目 選舉越來越近了,所以 amabo kcarab準備在美國計畫一次旅行,並在wdc和la進行演講。特務為了能夠保護 的安全,需要時刻監控所有 會經過的城市 包括wdc和la 當然,為了使預算不會太大,不會用到af1,而會用汽車作為交通工具。並且,特務計畫在 從wdc到la和回到wdc的旅途中安排...
GDOI2016模擬8 8旋轉
alice和bob發明了乙個新的旋轉遊戲。首先,bob給定n個數組成的序列,並把該序列平均分配成若干個塊,每塊正好包含k個數 k能整除n 第一塊由第1到第k個數構成,第二塊由第k 1個數到第2k個數構成,以此類推。接著,bob要求alice對這個序列進行一系列操作,操作有以下兩種 1.把每塊裡面的數...
GDOI2016模擬8 13總結
這次考差了。但事後想了一下,感覺收穫好大。匯報做題情況 當然,裡面不包含收穫 第一題 我的暴力爆零了,原因又是爆int 做題過程中我想到了與眾不同的演算法,一般人會化簡不等式變成斜率優化做,但由於我對斜率優化不大敏感,而且一般斜率優化的題目都是用凸包 叉積來做,這題我也同樣想著用凸包做,但打完發現有...