qzezoj1755球賽題解 zhengjun

2021-10-09 23:55:29 字數 1290 閱讀 9416

傳送門:主題庫/比賽裡

給你 n

nn 個數,你可以選乙個數讓他插到原陣列中的任意位置,經過多次操作後,使得每乙個第 1

11 到 k

kk 小的數都在 k+1

k+1k+

1 到 k+n

k+nk+

n 位置中,每乙個第 k+1

k+1k+

1 到 k×2

k\times2

k×2 小的數都在 k+1

k+1k+

1 到 k×2

k\times2

k×2 位置中,⋯

\cdots

⋯,每乙個第 n−k

+1

n-k+1

n−k+

1 到 n

nn 小的數在 n−k

+1

n-k+1

n−k+

1 到 n

nn 位置中。求最小的操作次數

因為這個操作是可以插入的,那麼就不能直接用逆序對的方法來求。

很顯然,這個運算元絕對不會超過 n

nn,也就是每乙個數最多只能被操作一次,不然就太浪費。

那麼,為了讓操作次數少,也就是不被操作的數多,就是這些不被操作的數一定滿足——他們應該去的間隔(每 k

kk 個位置算乙個間隔)一定是不降的,不然就會出現左邊的數應該在右邊,右邊的數應該在左邊,就不行了。

所以,這就是乙個最長上公升子串行,用樹狀陣列直接搞就可以了。

#include

#include

using

namespace std;

int n,k;

struct zja[

500001];

bool

cmp1

(const zj &x,

const zj &y)

bool

cmp2

(const zj &x,

const zj &y)

int f[

500001];

int c[

500001];

void

add(

int x,

int y)

}int

get(

int x)

return maxx;

}int

main()

printf

("%d"

,n-maxx)

;//求的是操作次數,不是不算子的個數

return0;

}

qzezoj 1568 反覆求和

題面傳送門 這道題首先要有乙個思維的轉換 對於選擇滿足0 i n0 leq i n 0 i n 的任意下標i ii 並讓a aa陣列裡下標為i ii處的值變為sum sumsu m。把賦值的思維轉化成選擇乙個下標,把除了這個下標的所有值加到它身上 這道題正著想很難想,俗話說得好,正難則反,所以我們不...

qzezoj 1540 糖果峽谷

題面傳送門 三十分 於是我只能重新想思路。然後就只得了35 3535 分。考試結束後老師叫我們自己去網上找題解,然而我發現,居然沒有任何一篇luo gu luogu luog u題解是正解。於是我準備發一篇題解來k kk掉luo gu luogu luog u所有題解。正解 我們先把這個峽谷想象成乙...

qzezoj 1543 最快路線

題面傳送門 看到這道題,想到spf aspfa spfa 但這道題好像故意的,偏偏又路牌被拆的道路 在衢州的話負責那一段路的交警就該 了 所以我們不能只以d id i di 為tim etime time 的唯一標準。想象一下 如果下一條路是沒有路牌的,而這時過來一條路,tim etime time...