浙江省賽壓軸題 Floor Function

2022-07-31 21:15:14 字數 815 閱讀 9274

給定a,b,c,d

, 滿足bc>ad

, 求使得cn−d⌊abn⌋

最小的最小的n

.資料規模: 1≤a,b,c,d≤1018

令y=⌊abx⌋,x=⌈bya⌉

, 原問題等價於求cx−dy

的最小值, ax≥by,x≥1,y≥0

.分兩種情況考慮

1. a≥b

令k=⌊ab⌋,y≥kx,c>ad/b≥kd

令a′=a−kb,c′=c−kd,y′=y−kx

, 此時原問題的約數條件任然滿足, 問題可以縮小規模.

原問題的解(x,y)

對應現在的解(x,kx+y′)

顯然若a′=0

, 我們可以得到(x,y′)=(1,0)

2. a

令k=⌊b−1a⌋,x>ky

令b′=b−ka,d′=d−k∗c,x′=x−ky

類似的, 原問題的約數條件任然滿足, 問題可以縮小規模.

顯然若d′≤0

, 我們可以得到(x′,y)=(1,0)

#include using

namespace

std;

typedef

long

long

ll;void solve(ll a, ll b, ll c, ll d, ll &x, ll &y)

if (a >=b)

else

}int

main()

return0;

}

view code

浙江省賽 E題

題意 給你乙個長度為n的陣列每一次只能選陣列中的乙個元素放在第乙個位置。問你至少你移動多少次才能使陣列內的元素不遞減。思路 a陣列為原來的陣列b陣列為排序之後的陣列,從b陣列的最後乙個開始一直往前去匹配a陣列的最後乙個一直往前,匹配上的就是不用移動的 include define maxn 1000...

2015浙江省賽

zoj 3872 beauty of array 對於每個數,計算這個數被累加的次數。找到這個數左邊這個數出現的地方,在這之間的所有數的數量 這個數後面的數的數量,即為這個數被計算的次數 include include typedef long long ll int a 1000005 post ...

2019浙江省賽

題意 n個點的二叉樹 無向邊 的單向邊,構造一條到達且只到達每個點一次的路徑。題解 兩次dfs。第一次dfs為向i 1優先,2i次之。然而,發現某些點有兩條出路,這是由於該點在最底層 有些點沒有達到,這是因為這些點在最後一層或倒數第二層的右下角 第二次dfs時先判斷該點的右子節點是否達到過,如果沒到...