1001:fraction
bx≡a(mod p)可以轉換為:bx-kp = a.因為a的範圍是(0,b),則列出不等式
又因為1p
x<=b
k<=p
x−
1\frac<=\frac<=\frac
xp<=k
b<=x
−1p
。據說是乙個經典問題:
給你a,b,c,d,求最簡分式x
y\frac
yx滿足a
b<=x
y<=c
d\frac<=\frac<=\frac
ba<=y
x<=d
c如果a/b != c/d(此處為整除),那麼x=(a/b)+1,y=1,得到解。否則
設t=(a/b),不等式同時減去t得到:
a −t
bb
<=x
−tyy
<=c
−tdd
\frac<=\frac<=\frac
ba−tb
<=y
x−ty
<=d
c−td
,可化為:
d c−
td
<=y
x−ty
<=b
a−tb
\frac<=\frac<=\frac
c−tdd
<=x
−tyy
<=a
−tbb
化為了另乙個相同的問題
遞迴處理直到得到解,再一步一步解出之前的解。
#include#define ll long long
using namespace std;
void gao(ll a, ll b, ll c, ll d, ll &x, ll &y)
ll t = a/b;
ll x1, y1;
gao(d, c - t*d, b, a-t*b, x1, y1);
y = x1;
x = y1 + t*y;
return;
}int main()
}
1002:three arrays
兩個陣列各建立一棵字典樹,然後查詢的時候從高位到低位,如果可以配出0就優先配出0,否則只能配出1然後遞迴子樹。這樣貪心的得到c陣列之後排序即為答案。
#include#define ll long long
using namespace std;
const int maxn = 1e5 + 50;
struct nodee[maxn*60];
int r1, r2, tot;
void insert(int rt, int x)printf("\n");
}int main()
}
1006:string matching
會擴充套件kmp你就可以秒殺這道題。
2019杭電多校第五場
有兩個題隊友補的,先安利一波 1005 permutation 1 hdu 6628 題意 給你乙個n和k,求n的全排列中,相鄰兩數的差值的陣列字典序第k小的排列 思路 其實就是兩個字,暴力.字典序第k小,k的範圍是n!跟10000取min,8!40320,是第乙個大於10000的數,所以當n小於等...
20190805杭電多校第五場
1004 equation 做法很簡單,寫起來容易混。首先想到去絕對值。因為滿足a 0,顯然當x增大時ax b的值也在增大,所以可以對所有 a,b 按 顯然存在n 1個區間,每個區間都可以將式子分為兩部分,前半部分均為 ax b,後半部分均為ax b。區間依次為 預處理a和b的負的字首和與正的字尾和...
2020杭電多校第五場題解
施工中。已知 a times b times c 的四面體,以 a 為 x 軸,b 為 y 軸,c 為 z 軸 以 z 為軸做切面,為 c times frac 的三角形 則易知 h frac frac frac frac frac o n log n 求 frac 的期望即可 比賽時一發過。inc...