最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Codeforces Round 894 (Div. 3)(A-G)思路講解文字版

2023-08-25 19:17 作者:冬權(quán)九暮  | 我要投稿

A題:

題目大意:給你n列元素,如果你能從中選出4列元素,使得從左到右的四列滿足,第一列存在'v'字符,第二列存在'i'字符,第三列存在'k'字符,第四列存在'a'字符。你輸出”YES“,否則你輸入”NO"。

輸入描述:輸入n,m代表有多少行和有多少列,然后輸入每一行的元素。1<=n,m<=20

輸出描述:輸出"YES"或者“NO”描述是否存在這種選擇

思路分析:首先每一列出現(xiàn)多少元素都是可以得到的。同時考慮貪心,我們?nèi)魶]有出現(xiàn)我們需要的字符,那么我們應(yīng)該在當(dāng)前位置就要選擇,換句話說,就是我們需要一個元素,我們就找到這個元素下一次出現(xiàn)的位置,保證了從左到右的四列滿足"vika"。

代碼部分:

我的做法很麻煩,大家也可以直接去寫暴力的做法會快很多。



B題:

題目大意:對于一個數(shù)組a,我們會將其中所有a_%7Bi-1%7D%3C%3Da_i的元素都放入到b數(shù)組中,現(xiàn)在告知我們b數(shù)組,希望我們還原一個a數(shù)組,同時要求a數(shù)組的長度不能是b數(shù)組長度的兩倍。a數(shù)組的答案有很多,輸出一種即可。

輸入描述:第一行n描述數(shù)組b的長度,第二行b_1%2Cb_2%2Cb_3%2C.....%2Cb_n描述整個數(shù)組b的值,注意數(shù)組b中的元素滿足1%3C%3Db_i%3C%3D1e9.

輸出描述:輸出數(shù)組a的長度,輸出數(shù)組a,注意數(shù)組a中的元素應(yīng)該滿足1%3C%3Da_i%3C%3D1e9

思路分析:可以發(fā)現(xiàn)對于一個數(shù)組b,當(dāng)還原為數(shù)組a的時候,我們只用考慮當(dāng)前的b_i%EF%BC%8Cb_i-1的關(guān)系,對其分類討論,可以發(fā)現(xiàn)當(dāng)b_i%3E%3Db_%7Bi-1%7D的時候,顯然中間可以添加任何數(shù)字,當(dāng)b_i%3Cb_%7Bi-1%7D的時候,顯然b_i前面應(yīng)該有一個小于等于他的數(shù)字x,那么我們可以將b_ib_%7Bi-1%7D中間添加一個數(shù)字x。

代碼部分:


C題:

題面描述:給你一個長度為n的數(shù)組a,描述每一個位置上放置多高的矩形,例如[5,4,3,2,1],如下圖:

如果我們構(gòu)造出來的整個圖形對于y=x這個函數(shù)是對稱的,那么我們輸出“YES”,否則輸出“NO”。

輸入描述:第一行n代表數(shù)組的長度,第二行a_1%2Ca_2%2Ca_3%2C.....%2Ca_n,代表每個位置放多高的矩形。

輸出描述:存在關(guān)于y=x對稱輸出“YES”,否則輸出“NO”。

思路分析:對于一個圖形分析,我們可以分析矩形,然后對于一個矩形去求出他關(guān)于y=x翻轉(zhuǎn)之后的位置,顯然關(guān)于y=x翻轉(zhuǎn)之后,會交換x和y坐標(biāo)。然后再分析當(dāng)前位置是否在原來也有,所以可以直接用while循環(huán)去找相對應(yīng)的位置,對于這個問題大家可以去算一下[3,1,1]的情況,就可以搞明白了。

代碼部分:


D題:

題面描述:現(xiàn)在有一個人想要吃n種口味的冰激凌,冰激凌需要用兩種原料制作,比如使用1和2,可以注意到在這種情況下可以制造出{1,2}的冰激凌和{2,1}的冰激凌,但是對于這兩個冰激凌,我們認(rèn)為是同一種。同樣我們也可以制造出{1,1}這種冰激凌?,F(xiàn)在這個人需要恰好n種口味的冰激凌,問你最少需要選擇多少個原料(原料數(shù)量不分種類)。

注意:這題的一個原料比如2可以和原料3或者原料1,分別組成{2,3}和{1,2}兩種口味,但是如果想要組成{2,2}口味的話必須要再買一個原料2.

輸入描述:輸入n,表示當(dāng)前恰好需要的冰激凌種類數(shù)量。

輸出描述:輸出我們需要購買多少種原料。

例子解釋:

對于n=2的情況,我們可以購買[1,1,2]這樣組合,恰好2種口味,答案為3.

思路分析:首先我們將{1,2}這種靠兩種原料制造的冰激凌稱之為混合冰激凌,對于{1,1}這種只靠一種原料制造的冰激凌稱之為原味冰激凌,可以發(fā)現(xiàn)除掉原味冰激凌的情況,那么對于當(dāng)前有n個原料,那么會存在n*(n-1)%2F2種混合冰激凌,那么再考慮原味冰激凌,發(fā)現(xiàn)增加一個原料最多只會增加一個原味冰激凌,也就是n個原料,最多多出來n個原味冰激凌,那么我們就可以湊出來恰好的答案。同時,由于盡量多做混合冰激凌,對增加種類提升更大,所以具有單調(diào)性質(zhì),可以二分解決問題。

代碼部分:


E題:

題面描述,給你一個長度為n的數(shù)組a,其中a_i代表你每次出去開心可以獲得的快樂值?,F(xiàn)在一共有n天,你最多出去開心m次,如果你很久沒有出去開心的話,那么你下次出去開心收獲的快樂值就需要減去中間沒開心的天數(shù)再乘上數(shù)值d?,F(xiàn)在請問你可以獲得的最大快樂值為多少。

輸入描述:第一行輸入n,m,d,為上述所介紹,第二行輸入a_1%2Ca_2%2Ca_3%2C.....%2Ca_n。a中的數(shù)值可以為負(fù)數(shù)

輸出描述:輸出可以獲得的最大快樂值。

例子解釋:

5 2 2

3 2 5 4 6

對于這個例子我們選擇第一天去開心一下,得到貢獻(xiàn)為3-1*2=1。

然后我們在第三天出去開心一下,得到貢獻(xiàn)為5-2*2=1。

最后得到的最大快樂值為2。

思路分析:首先我們可以發(fā)現(xiàn)如果我們選擇了最后一次出去開心的日子,那么我們實(shí)際上就確定了d要減去的快樂值,那么我們可以利用優(yōu)先隊(duì)列去維護(hù)每次選擇的日子中提供快樂值最高的幾天,當(dāng)后面訪問到新的點(diǎn),如果提供的快樂值不如之前選擇最差的那么我們一定不需要它。在遍歷的過程中不斷計算,更新答案即可。

代碼部分:


F題:

題面描述:現(xiàn)在有n個怪獸,每個怪獸的生命值為a_i,你是一名女巫(美少女),每秒你可以回復(fù)火焰魔力w點(diǎn),回復(fù)寒冰魔力f點(diǎn),你的魔力可以一直儲存。然后你需要利用這些魔力消滅怪獸,消滅過程為,你消耗火焰或者寒冰魔力a_i點(diǎn)去殺死第i個怪獸,再準(zhǔn)確點(diǎn)說,你需要一擊斃命怪獸?,F(xiàn)在請你告訴美少女,她到底最少要等待多少秒才能擊殺所有怪獸。

注意:消滅怪獸并不花費(fèi)時間

輸入描述:第一行輸入w,f如同題目所述,第二行輸入n,怪獸的數(shù)量,第三行輸入怪獸們的血量。

輸出描述:輸出最少要等待多少秒。

思路分析:首先我們發(fā)現(xiàn),對于時間,時間越長,肯定越可以消滅完所有的怪獸,所以存在單調(diào)性,可以考慮二分。然后思考當(dāng)我們知道火焰魔力和寒冰魔力的值,我們考慮一部分全用火焰魔法解決,對于其他怪獸用寒冰魔法解決。同樣的這里存在單調(diào)性,用火焰魔法解決的越多越好,那么只要計算出怪獸血量的組合,那么選擇最大可以解決組合給火焰魔法解決,再分析剩下的可以不可以用寒冰魔法消滅。計算怪獸血量組合的部分代碼可以使用bitset解決。

代碼部分:


G題:

(最逆天的題面,我感覺昨晚看懂題目都花了我很長時間)

題面描述:現(xiàn)在給你一個長度為n的數(shù)組a,然后你獲得一個神奇的物件,這個物件會這樣計算這個數(shù)組的答案:

計算過程:1.對當(dāng)前數(shù)組進(jìn)行排序,如果只有一個元素就輸出這個元素,退出循環(huán)。

? ? ? ? ? ? ? ? ? 2.刪除數(shù)組中的重復(fù)元素,每個元素只保留一個。

? ? ? ? ? ? ? ? ? 3.當(dāng)前數(shù)組長度為n,第一個數(shù)字+n,第二個數(shù)字+n-1,.....,最后一個數(shù)字+1.

? ? ? ? ? ? ? ? ? 4.重復(fù)這個操作。

然后有q次詢問,每次詢問將第a個位置的值更改成b(會對后面詢問產(chǎn)生影響),然后你需要輸入這個數(shù)組的答案。

輸入描述:輸入n,以及數(shù)組中的內(nèi)容,輸入q,a,b。

輸出描述:輸出修改后數(shù)組的答案。

例子解釋:

題目給的第一個例子解釋

思路分析:首先大家可以去看一下例子解釋,已經(jīng)其中的操作,可以發(fā)現(xiàn)對于兩個相鄰的值,如果他們要相等,一定得要經(jīng)過他們差值的輪數(shù),那么實(shí)際上最大的值最后變成的答案就是這個輪數(shù)加上最大值,因?yàn)樽詈笠粋€值只會增加1。所以現(xiàn)在的問題轉(zhuǎn)變?yōu)椋航鉀Q在線修改值,并且重新計算排序之后的兩個數(shù)之間的差值最大值。對于這個問題很好想到的是,我們刪除一個元素,實(shí)際上他改變的情況沒有很多,可以細(xì)想一下,也就是減少和左邊的差值,和右邊的差值,以及增加一個左右的差值,然后把新改的值添加,也是同理,每次我們刪除和增加的數(shù)值其實(shí)很少,那么我們只要找到相應(yīng)的數(shù)據(jù)結(jié)構(gòu)解決問題即可,這里可以使用multiset具體操作和set是類似的,multiset內(nèi)部元素有序,允許出現(xiàn)重復(fù)元素,添加和刪除操作的都是logn,具體的操作可以看下面的代碼。

代碼部分(由于cf機(jī)子死掉了,我不確定我寫的有沒有細(xì)節(jié)問題,所以給大家放了jiangly大佬的代碼,寫的還是非常簡介,真的是太強(qiáng)了)





Codeforces Round 894 (Div. 3)(A-G)思路講解文字版的評論 (共 條)

分享到微博請遵守國家法律
卢氏县| 宜都市| 习水县| 济源市| 五莲县| 东安县| 九龙坡区| 黄骅市| 文昌市| 社会| 建平县| 石首市| 南陵县| 阿城市| 岳普湖县| 高密市| 上虞市| 自治县| 凤阳县| 临桂县| 施秉县| 柳江县| 高邑县| 上林县| 黄山市| 基隆市| 洛南县| 济阳县| 朝阳县| 安庆市| 海宁市| 沛县| 德格县| 怀来县| 古浪县| 渭南市| 荥经县| 黄陵县| 锡林浩特市| 泸州市| 赫章县|