Codeforces Round 896 (Div. 2)
?A.
題意:
給你一個(gè)n個(gè)數(shù)字的數(shù)組,你可以執(zhí)行至多八次操作,每次操作可以選取一個(gè)l和r,將l到r間的所有數(shù)替換為原來(lái)l到r之間數(shù)的總異或和。我們的目的是在操作后使數(shù)組所有數(shù)都變成0,可以證明一定有解決方案,且無(wú)需輸出最小解決方案。
分析:
看到異或 0 ,突然一瞬間就來(lái)感覺(jué),想起來(lái)自己和自己異或得0,于是直接想到把l取1,r取n,取第一次之后所有的數(shù)都是被同一個(gè)總異或和替換掉,取第二次l=1.r=n時(shí)把所有數(shù)異或到一起,然后直接開(kāi)始爆寫(xiě),寫(xiě)完直接交了個(gè)wa1哈哈哈,原來(lái)時(shí)我沒(méi)考慮奇數(shù),因?yàn)?偶數(shù)個(gè)相同的數(shù)異或到最后都是0,奇數(shù)個(gè)數(shù)相同的書(shū)異或到最后時(shí)多一個(gè)的,再考慮就覺(jué)得要先搞掉一個(gè),留下偶數(shù)個(gè)的再用那個(gè)方法。好嘛,這就有思路了,我先把前兩個(gè)數(shù)操作一遍,變成兩個(gè)0,再把第二個(gè)數(shù)到最后一個(gè)(這時(shí)候就是偶數(shù)個(gè)了)按前面的方式再操作一遍,就ok啦,ac
代碼:

B.
題意:
題目大概是說(shuō),一個(gè)人想用最低的機(jī)票價(jià)格從第A城旅行到第B城,題目輸入告訴你總共有n個(gè)城,其中在前k個(gè)城市間飛行不需要錢(qián),其他時(shí)候飛行則需要花費(fèi)曼哈頓距離的錢(qián)(也就是x坐標(biāo)的絕對(duì)差值和y坐標(biāo)的絕對(duì)差值之和)
分析:
直接說(shuō)我想到的正確的思路吧,因?yàn)槊赓M(fèi)城市之間是可以直接飛的,相當(dāng)于傳送,那么我們只需要找到距離a最近的免費(fèi)城市和距離b最近的免費(fèi)城市,比較這個(gè)最小的距離和 相對(duì)于ab間直接飛的距離,輸出更小的那個(gè)即可
代碼:

C.
題意:
題目告訴我們n和m,需要我們構(gòu)造一個(gè)矩陣,其中這個(gè)矩陣的每行都是0 - m-1的數(shù)的隨機(jī)排列,對(duì)于每一列的數(shù)我們?nèi)∷麄兊腗EX(即最小的未出現(xiàn)的自然數(shù)),再對(duì)每列得到的MEX再合起來(lái)取個(gè)MEX,我們的目標(biāo)是要使這個(gè)最后的MEX最大,我們需要輸出最大MEX,再輸出我們構(gòu)造的矩陣
分析:
首先考慮幾個(gè)特殊情況,當(dāng)行數(shù)為1同時(shí)列數(shù)為1時(shí),即1x1時(shí),MEX為0,矩陣為0;當(dāng)行數(shù)為1,列數(shù)大于1時(shí),即1x幾時(shí),MEX為2,矩陣為一行的0 - m-1;當(dāng)列數(shù)為1,行數(shù)大于1時(shí),MEX為0,矩陣為一列的0 - m-1
再考慮其他情況,對(duì)于行數(shù)大于等于列數(shù)的可以這樣考慮,最大MEX都為m,前m-1行都是有規(guī)律的變化,每次向前推一個(gè)頂?shù)胶竺?,后面多余的行都與第一行一樣。

對(duì)于行數(shù)小于列數(shù)的,最大MEX都為n+1,所有的行都是有規(guī)律的變化,每次向前推一個(gè)頂?shù)胶竺?/p>

關(guān)于證明有待讀者自行發(fā)掘,思路歷程有些復(fù)雜暫且不表
代碼:



CSDN:陪你一起cf
bilibili:acmer--沈幼楚
知乎:與你cf ? ?