51Nod 1279 扔盤子 思維 模擬

2022-05-26 10:36:12 字數 1472 閱讀 4380

題意:

有口井,往裡扔盤子,最多扔多少個

思路:如果比較高的地方井口比較小,那麼下面的再大也沒有用,只需要維護乙個單調減的陣列然後o(n+m)模擬即可

**:

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define fst first

#define sc second

#define pb push_back

#define mem(a,b) memset(a,b,sizeof(a))

#define lson l,mid,root<<1

#define rson mid+1,r,root<<1|1

#define lc root<<1

#define rc root<<1|1

#define lowbit(x) ((x)&(-x))

using

namespace

std;

typedef

double

db;typedef

long

double

ldb;

typedef

long

long

ll;typedef

long

long

ll;typedef unsigned

long

long

ull;

typedef pair

pi;typedef pair

pll;

const db eps = 1e-6

;const

int mod = 1e9+7

;const

int maxn = 2e6+100

;const

int maxm = 2e6+100

;const

int inf = 0x3f3f3f3f

;const db pi = acos(-1.0

);int

a[maxn];

intb[maxn];

intn,m;

intmain()

int ans = 0

;

int p =n;

for(int i = 1; i <= m; i++)

if(p)

}printf("%d

",ans);

return0;

}

51nod 1279 扔盤子(單調棧)

開始是直接從井口往裡扔,複雜度是o n 2 超時。然後呢,你會發現,如果井上邊的寬度小,下邊的寬度大,那麼下邊寬度多大都是沒用的,所以就讓他等於上邊寬度就好了。然後處理後這個井的寬度從上到下就是乙個非遞增的了,然後從下向上匹配,o n 還可以用單調棧預處理 include include const...

51Nod 1279 扔盤子 二分

這道題如果暴力走 o n 2 肯定超時 然後看資料5 10 4 時間1s 呃 o nlogn 一下是能過的 然後 在想我為什麼要o n 2 走 肯定會有重複的啊 那怎麼省略掉這些呢 很簡單 如果我這個圓盤往下掉 第一層的寬度小於第二層的寬度 那麼很明顯 第二層的寬度是沒有用處的 那麼有用的是什麼呢 ...

51 nod 1279 扔盤子 思維好題)

1279扔盤子 基準時間限制 1秒 空間限制 131072kb 分值 10難度 2級演算法題 收藏關注 取消關注 有一口井,井的高度為n,每隔1個單位它的寬度有變化。現在從井口往下面扔圓盤,如果圓盤的寬度大於井在某個高度的寬度,則圓盤被卡住 恰好等於的話會下去 盤子有幾種命運 1 掉到井底。2 被卡...