可以看成把乙個m×n
m×nm×
n的長方形劃成若干個寬為1
11的矩形,使得存在兩種分割方法能恰好填滿長和寬。然後只要不斷在矩形裡劃分正方形就行了。
#include
using
namespace std;
typedef
long
long ll;
intmain()
for(
int i =
1; i <= n;
++i) ans.
push_back
(m);
cout << ans.
size()
<< endl;
for(
auto
&i : ans)
printf
("%d "
, i)
; cout << endl;
}return0;
}
題面生草。
打個小表,比如到1e4,發現只有1和24。之後肯定不可能再有其它數了。
平方求和公式按立方速度增長,最後肯定不可能夾在兩個平方數之間的。
**由璇大師提供。
#include
using
namespace std;
intmain()
}}
這題做得太痛苦了。思路看完題大概七八分鐘不到就有了,但是一直寫不出來。最後磨了兩個小時才過。
第一種操作每次加上k
kk,所以會發現二元組左邊的數模k
kk一定餘n
nn。而一旦執行了一次第二種操作,之後無論再進行第一種或第二種操作,模k
kk一定都是0。初始狀態n
nn都是1,所以餘數只可能是0
00或1
11。而且可以證明對於小於n
nn的所有數,只要它模k
kk同餘0或1就一定能構造出這樣一對符合題意的二元組。所以問題轉化成對於所有小於k
kk的數k
kk,求模k
kk同餘0或1的總數。
之後考慮列舉k
kk。對於某乙個k
kk而言,1~n
nn中是k
kk倍數的數有⌊nk
⌋\lfloor \rfloor
⌊kn
⌋個。同餘1的數可以這麼計算:1+p
k≤
n1+pk\le n
1+pk≤n
,解出p≤⌊
n−1k
⌋p\le \over k}\rfloor}
p≤⌊kn−
1⌋,其中p
pp為整數。但是這個式子中p
pp可以取到0
00,於是1~n
nn中模k
kk餘1的數為⌊n−
1k⌋+
1\over k}\rfloor}+1
⌊kn−1
⌋+1個。不過對於k=1
k=1k=
1要特判,因為此時沒有模k
kk同餘1的數。
所以最後答案為σk=
2k⌊n
k⌋+σ
k=2k
⌊n−1
k⌋+(
k−2+
1+n)
=σk=
2k⌊n
k⌋+σ
k=2k
⌊n−1
k⌋+(
k+n−
1)
\sigma_^\lfloor \rfloor+\sigma_^\over k}\rfloor}+(k-2+1+n)=\sigma_^\lfloor \rfloor+\sigma_^\over k}\rfloor}+(k+n-1)
σk=2k
⌊kn
⌋+σk
=2k
⌊kn−
1⌋+
(k−2
+1+n
)=σk
=2k
⌊kn
⌋+σk
=2k
⌊kn−
1⌋+
(k+n
−1)之後就不需要管題面了,只要把這坨東西求出來就好。
然後發現列舉k
kk就炸了。然後開始脫髮。
苦惱將近乙個半小時,發現可以分塊。因為對於某一段區間內的k
kk而言,下取整可能是一樣的。之後從2開始列舉k
kk,每次計算出當前值對應的右邊界,乘起來之後再把k
kk賦成右邊界加一就好了。複雜度似乎是o(n
)o(\sqrt n)
o(n
)的。具體我也不知道,也不會證。反正能過。
**裡還有個坑點就是右邊界要在r
rr和k
kk當中取個min。不然有可能直接就跳出去了。第一次就這裡哇了。
#include
using
namespace std;
typedef
long
long ll;
const
int mod =
1e9+7;
intmain()
for(ll i =
2; i <= k;
) sum =
(sum + k -1)
% mod;
cout << sum << endl;
return0;
}
賽後總結:
h卡了很久。做完h之後d很快就出了。應該先去d再返回看h的。
之後開始罰坐。
另外就是英語太差,j看不懂。吐了。
什麼,你問我前面幾場的總結和題解呢?
在補了在補了.jpg
2020牛客暑期多校訓練營(第七場)
b題 傳送門 link 題意 有n m個口罩,需要要把它們裝到一些箱子裡面,要使箱子數盡可能少,並且滿足兩個條件,這些箱子可以分成m組,每組n個口罩,或者分成n組,每組m個口罩。思路 分配方案其實就是乙個迭代的過程。為了使得箱子數最少,每個箱子就應該盡可能的多裝。每次優先裝min n,m 個箱子,每...
2020牛客暑期多校訓練營(第七場)
難度係數 dd fake news 講題人所謂的 暖暖的簽到題 完全平方和,只要特判1和21即可即可 includeusing namespace std typedef long long ll define t ll t scanf lld t while t intmain else b ma...
2020牛客暑期多校訓練營(第七場)題解DBH
題目傳送門 提前打了一下表,發現好像就1和24可以,試了一下a了 附上大佬的證明 如何證明 1 2 n 為平方數的解只有 n 1 或 n 24?include intmain return0 題目傳送門 mask allocation 對於n m個口罩,將其分成可以組合成n個m個m個n,只能序列內疊...