Educational Codeforces Round 80 題解

Educational Codeforces Round 80

比賽鏈接:

Educational Codeforces Round 80

A-Deadline

由 ? 酱床, ?得 ?.

所以我們只需要枚舉?到 ?即可殿衰。

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="cpp" cid="n35" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> #include <bits/stdc++.h>
using namespace std;

define ll long long

const int maxn = 3e5+7;
ll p[maxn];
int main(){
ios_base::sync_with_stdio(0);
int t;
cin >> t;
while(t--){
int n, d;
cin >> n >> d;
int ma = sqrt(d) + 10, i;
for (i = 0; i < ma; i++){
if(i + (d+i)/(i+1) <= n)
break;
}
cout << (i < ma ? "YES" : "NO") << endl;
}
return 0;
}</pre>

B - Yet Another Meme Problem

由題:

?

?

?

?

答案是 ?

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="cpp" cid="n40" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> #include <bits/stdc++.h>
using namespace std;

define ll long long

const int maxn = 3e5+7;
ll p[maxn];
int main(){
ios_base::sync_with_stdio(0);
int t;
cin >> t;
while(t--){
ll a, b, cnt=0;
cin >> a >> b;
b++;
while(b){
cnt++;
b /= 10;
}
ll ans = a * (cnt - 1);
cout << ans << endl;
}
return 0;
}</pre>

C - Two Arrays

由題目知道 :

這是一個(gè)非遞減序列氏堤。

這題有個(gè)有趣的數(shù)學(xué)知識械哟,用到了擱板法映凳,意思就是從個(gè)數(shù)中取個(gè)有多少種取法录别。

還有++必須用逆元來做耕渴,否則會輸出.

用其他語言應(yīng)該可以直接求C拘悦。

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="cpp" cid="n45" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> #include <bits/stdc++.h>
using namespace std;

define ll long long

const int mod = 1e9 + 7;
const int maxn = 10005;
ll fac[maxn];
?
?
ll qpow(ll a, ll b){
ll res = 1;
while(b){
if(b&1){
res = (res * a) % mod;
}
a = (a * a) % mod;
b >>= 1;
}
return res;
}
ll C(ll m, ll n){
if(m>n || m <0)
return 0;
ll f1 = fac[n], f2 = fac[m] * fac[n - m] % mod;
return f1 * qpow(f2, mod - 2) % mod;
}
int main(){
ios_base::sync_with_stdio(0);
fac[0] = 1;
for (int i = 1; i < maxn; i++)
fac[i] = fac[i - 1] * i % mod;
ll n, m;
cin >> n >> m;
ll ans = C(n - 1, 2 * m + n - 1) % mod;
cout << ans << endl;
return 0;
}const int N = 1e3 + 7, M = 13;
int n, m;
modint f[M][N], ans;
?
int main() {
rd(n), rd(m);
f[0][1] = 1;
for (int i = 0; i < m; i++)
for (int j = 1; j <= n; j++)
for (int k = j; k <= n; k++)
f[i+1][k] += f[i][j];
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
ans += f[m][i] * f[m][n-j+1];
print(ans);
return 0;
}</pre>

D - Minimax Problem

二分。

題目的講解卿學(xué)姐實(shí)在是良心橱脸。

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="cpp" cid="n50" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> #include <bits/stdc++.h>
using namespace std;

define ll long long

const int maxn = 3e5+7;
int n, m, ans_l, ans_r;
int num[1000];
int a[maxn][11];
?
bool judge(int mid){
memset(num, 0, sizeof(num));
for (int i = 0; i < n; i++){
int x = 0;
for (int j = 0; j < m; j++){
if(a[i][j] >= mid)
x += (1 << j);
}
num[x] = i + 1;
}
for (int i = 0; i < (1 << m); i++){
for (int j = 0; j < (1 << m); j++){
if(num[i] && num[j] && ((i|j) == ((1<<m)-1))){
ans_l = num[i];
ans_r = num[j];
return true;
}
}
}
return false;
}
?
?
int main(){
ios_base::sync_with_stdio(0);
?
cin >> n >> m;
int l = -1, r = 1e9;
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cin >> a[i][j];
l = min(l, a[i][j]);
r = max(r, a[i][j]);
}
}
?
int ans = l;
while(l<=r){
int mid = (l + r) >> 1;
if(judge(mid)){
ans = mid;
l = mid + 1;
}
else
r = mid - 1;
}
judge(ans);
cout << ans_l << " " << ans_r << endl;
return 0;
}</pre>

E - Messenger Simulator

樹狀數(shù)組础米。

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="cpp" cid="n55" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> #include <bits/stdc++.h>
using namespace std;

define ll long long

const int maxn = 1e6+7;
?
int bit[maxn], a[maxn], max_a[maxn], min_a[maxn];
int pos[maxn];
int n, m;
?
int lowbit(int x){
return x & (-x);
}
?
void update(int x, int op){
while(x < maxn){
bit[x] += op;
x += lowbit(x);
}
}
int get(int x){
int ans=0;
while(x){
ans += bit[x];
x -= lowbit(x);
}
return ans;
}
int main(){
ios_base::sync_with_stdio(0);
cin >> n >> m;
memset(bit, 0, sizeof(bit));
for (int i = 1; i<=n; i++){
max_a[i] = min_a[i] = i;
pos[i] = i + m;
update(i+m, 1);
}
for (int i = 0; i<m; i++){
int x;
cin >> x;
min_a[x] = 1;
max_a[x] = max(max_a[x], get(pos[x]));
?
update(pos[x], -1);
pos[x] = m - i;
update(pos[x], 1);
}
for (int i = 1; i<=n; i++){
max_a[i] = max(max_a[i], get(pos[i]));
}
for (int i = 1; i <= n; i++){
cout << min_a[i] << " " << max_a[i] << endl;
}
return 0;
}</pre>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末分苇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子屁桑,更是在濱河造成了極大的恐慌医寿,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蘑斧,死亡現(xiàn)場離奇詭異靖秩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)竖瘾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門沟突,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捕传,你說我怎么就攤上這事惠拭。” “怎么了庸论?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵职辅,是天一觀的道長。 經(jīng)常有香客問我聂示,道長域携,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任鱼喉,我火速辦了婚禮涵亏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒲凶。我一直安慰自己,他們只是感情好拆内,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布旋圆。 她就那樣靜靜地躺著,像睡著了一般麸恍。 火紅的嫁衣襯著肌膚如雪灵巧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天抹沪,我揣著相機(jī)與錄音刻肄,去河邊找鬼。 笑死融欧,一個(gè)胖子當(dāng)著我的面吹牛敏弃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播噪馏,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼麦到,長吁一口氣:“原來是場噩夢啊……” “哼绿饵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瓶颠,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤拟赊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后粹淋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吸祟,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年桃移,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屋匕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谴轮,死狀恐怖炒瘟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情第步,我是刑警寧澤疮装,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站粘都,受9級特大地震影響廓推,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翩隧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一樊展、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堆生,春花似錦专缠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔗怠,卻和暖如春墩弯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寞射。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工渔工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桥温。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓引矩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子脓魏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容