給定a,b,c,d令y=⌊abx⌋,x=⌈bya⌉, 滿足bc>ad
, 求使得cn−d⌊abn⌋
最小的最小的n
.資料規模: 1≤a,b,c,d≤1018
, 原問題等價於求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 usingview codenamespace
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;
}
浙江省賽 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時先判斷該點的右子節點是否達到過,如果沒到...