洛谷
題目大意:
給定\(a,b\),對於\(\forall t\in \mathbb n\),有二元組\((x,y)=((t+\lfloor\frac tb\rfloor)\bmod a,t\bmod b)\)。
對於給定的\(n\)個區間\([l,r]\),要你求出\(t\in [l_1,r_1]\bigcup [l_2,r_2]...\bigcup [l_n,r_n]\)對應有多少個不同的二元組。
資料範圍:
\(1\leq n\leq 10^6,1\leq a,b\leq 10^,0\leq l_i\leq r_i\leq 10^\)。
你首先要考慮到這種問題是有個迴圈節的 否則就會像我一樣得到10分
設\(t_1所對應的二元組完全相同,那麼
\[\begin
t_1+\lfloor\frac \rfloor \equiv t_2 + \lfloor \frac \rfloor(\bmod a)\\
t_1\equiv t_2(\bmod b)
\end
\]那麼根據第二個條件,我們不妨令$$t_1+kb=t_2,k\in \mathbb n$$
那麼帶到第乙個式子中就是:
\[t_1+\lfloor\frac\rfloor\equiv t_1+kb+k+\lfloor\frac\rfloor(\bmod a)
\]化簡得:$$k(b+1)\equiv 0(\bmod a)$$
\(\therefore \frac|k\),即\(k\)最小為\(\frac\)。
那麼迴圈節\(t=kb=\frac\)。
然後對於所有\([l,r]\)就可以轉化為線段覆蓋了,想怎麼維護都行。
#include #include #include #include #include #include #include using namespace std;
typedef long long ll;
inline ll gi()
const int max_n = 1e6 + 5;
ll n, a, b, l[max_n], r[max_n], t, ans;
multiset> st;
void add(ll l, ll r)
int main ()
st.insert(make_pair(t, 0));
ll lst = -1, c = 0;
for (auto it : st)
printf("%lld\n", ans);
return 0;
}
LG 珠心算測驗
題目描述 珠心算是一種通過在腦中模擬算盤變化來完成快速運算的一種計算技術。珠心算訓練,既能夠開發智力,又能夠為日常生活帶來很多便利,因而在很多學校得到普及。某學校的珠心算老師採用一種快速考察珠心算加法能力的測驗方法。他隨機生成乙個正整數集合,集合中的數各不相同,然後要求學生回答 其中有多少個數,恰好...
2015LG神秘新機,高通或攜LG推新機
眼看ces將至,不少廠商都開始對自家的展會動向進行 而作為手機soc的領頭品牌,高通也在昨天放出了訊息。根據宣傳海報的描述,高通此次或將攜手lg推出全 手機,晶元則為驍龍800系列 驍龍800 810均為800系列下屬產品 根據在社交平台的描述,高通將會在在明年 也就是幾天後 ces大展上會將會推出...
2015LG神秘新機,高通或攜LG推新機
眼看ces將至,不少廠商都開始對自家的展會動向進行 而作為手機soc的領頭品牌,高通也在昨天放出了訊息。根據宣傳海報的描述,高通此次或將攜手lg推出全 手機,晶元則為驍龍800系列 驍龍800 810均為800系列下屬產品 根據在社交平台的描述,高通將會在在明年 也就是幾天後 ces大展上會將會推出...