有 \(n\) 條惡龍,每條惡龍有乙個初始生命值 \(a_i\) ,恢復力 \(p_i\) , 擊殺後會掉落一把劍.
初始你有 \(m\) 把劍.
給出每把劍的攻擊力.
現在你打算按照以下方法殺掉所有惡龍
問最小的 \(x\) ,如果不存在能殺掉所有惡龍的 \(x\) ,輸出 \(-1\)
有 \(t\) 組資料
\(n \le 10^5, m \le 10^5, t \le 5, a_i \le 10^\)
所有 \(p_i\) 的最小公倍數 \(\le 10^\)
所有劍的攻擊力 \(\le 10^6\)
很容易用multiset在 \(o(n \log n)\) 的時間得到每條龍會使用哪一把劍.特判了 \(m=0\) 的情況
設當前劍的攻擊力為 \(b\) ,那麼 \(x\) 需要滿足
\[a_i - bx + kp_i = 0, k \ge 0
\]其中 \(k \ge 0\) 的部分可以在最後強制 \(x \ge \lceil \dfrac b \rceil\) 就好了.
現在可以寫作
\[bx + kp_i = a_i
\]這是乙個一元二次方程,由於有 \(n\) 個這樣的方程需要合併,所以我們將它轉化為關於 \(x\) 的同餘方程的形式
具體步驟就是,設 \(d = \gcd(b, p_i)\) ,若 \(d \nmid a_i\) 則一元二次方程無解.否則將 \(b,p_i,a_i\) 同時除以 \(d\) .然後就可以轉化為
\[x \equiv a_i \cdot \dfrac 1b \mod p_i
\]其中 \(b\) 和 \(p_i\) 此時是互質的,用exgcd計算逆元即可.
然後將這 \(n\) 個方程用擴充套件中國剩餘定理合併.時間複雜度 \(o(n \log n)\)
由於 \(p_i\) 的最小公倍數是 \(10^\) 級別的,所以需要快速乘.
總時間複雜度為 \(o(n \log n)\)
#include #include #include #define debug(...) fprintf(stderr,__va_args__)
using namespace std;
inline char nc()
templatevoid read(t &x)
while(ch>='0'&&ch<='9')
x*=f;
}templateinline bool cmax(t &x, t y)
typedef long long ll;
typedef long double ld;
const int maxn = 1e5 + 50;
int t;
int n, m;
int c[maxn];
ll a[maxn], p[maxn];
multisets;
inline ll mul(ll x, ll y, ll mod)
ll gcd(ll a, ll b)
ll exgcd(ll a, ll b, ll &x, ll &y)
ll d = exgcd(b, a % b, y, x);
y -= a / b * x;
return d;
}inline ll inver(ll a, ll p)
bool excrt(ll &m0, ll &a0, ll m1, ll a1)
ll solve()
if(a < mn) a += (mn - a + m - 1) / m * m;
else if(a > mn) a -= (a - mn) / m * m;
return a;
}int main()
printf("%lld\n", solve());
} return 0;
}
學會了一元二次方程轉同餘方程的方法. LOJ 2303 NOI2017 蚯蚓排隊
n leq 200000 的 1 leq a i leq 6 的蚯蚓,有三種操作 讓乙隻隊頭蚯蚓接在乙隻隊尾蚯蚓後面 讓一隊蚯蚓從某個蚯蚓後面斷成兩隊 問 給個字串,問他的。算了你們直接看題吧 這什麼沙雕題qaq 所有詢問的串只有 nk 種,把他們全丟進hash裡面就好了。注意雙hash,乙個用來當...
loj 2719 NOI2018 氣泡排序
t 5,sum n le 2000000 考慮什麼樣的排列是好的.為了達到下界,p i 應該只向 i 的方向移動,也就是說,不存在乙個數左右都有逆序對,也就是說,不存在 a使得 p a p b p c 無視 q 的限制,可以用dp計算答案,設 dp i,j 表示確定了排列的前 i 個數,設其中最大值...
LOJ3342 NOI2020 製作菜品
題目鏈結 博主有幸參加了noi2020,考場上的經歷和心得請見這篇文章。這裡就不嘮叨了。本題的突破口在於 m 和 n 的關係。也就是資料範圍表裡這些奇怪的限制 m n 1 m geq n 1 m geq n 2 我們乙個乙個來看。顯然,n 種原材料,除了在輸出答案時,其他時候它們的原始順序對我們解題...