牛客小白月賽94 解題報告 | 珂學家 | 茴字有36種寫法


前言

很久沒寫題解了,有幸參加了94小白月賽內測,反饋是很nice,AK場。

爭議的焦點在于哪題最難

  • D題
  • E題(沒有F題)
  • F題(沒有E題)

你選哪題呢?

alt



題解


歡迎關注

珂朵莉 牛客周賽專欄

珂朵莉 牛客小白月賽專欄


A. 小苯的九宮格

思路: 映射 + 模擬

grid = []
for _ in range(3):arr = input().split()grid.append(arr)s = input()
r = []
for c in s:p = ord(c) - ord('0')h = (p - 1) // 3w = (p - 1) % 3r.append(grid[h][w])
print (''.join(r))

B. 小苯的好數組

切入點: 尋找相鄰元素的逆序對

n = int(input())
arr = list(map(int, input().split()))flag = False
for i in range(n - 1):if arr[i] > arr[i + 1]:flag = Truebreakprint (n if flag else 0)

C. 小苯的數字合并

思路: 貪心+枚舉

從貪心的角度,因為數組的數都是非負數,所以最小數一定是數組中的某個元素,最大數則是左右兩側和的最大值

如果這題數組中存在負數,那該如何解?

n = int(input())arr = list(map(int, input().split()))res = 0
s = arr[0]
for i in range(1, n - 1):s += arr[i]res = max(res, abs(s - arr[i + 1]))s = arr[n - 1]
for i in range(n - 2, 0, -1):s += arr[i]res = max(res, abs(s - arr[i - 1]))print (res)

D. 小苯的排列構造

1~N的排列,其GCD一定收斂很快

A 數列的不同元素個數不會超過 l o g 2 ( 1 0 5 ) = 16 個 A數列的不同元素個數不會超過 log_2(10^5) = 16 個 A數列的不同元素個數不會超過log2?(105)=16

這就是貪心的核心點:

所以大部分 A 數列,尾巴一定都是 1 ,所以后續 P 序列的數其順序就不重要的 所以大部分A數列,尾巴一定都是1,所以后續P序列的數其順序就不重要的 所以大部分A數列,尾巴一定都是1,所以后續P序列的數其順序就不重要的

那如何構造呢?

可以從分組的角度,然后按倍數遞增

所以這樣的時間復雜度 O ( c n ) , c ≤ 18 O(cn), c\le18 O(cn),c18

也可以引入驗證函數,來快速過濾無解的情況

def check():prev = arr[0]for i in range(1, n):if prev < arr[i] or prev % arr[i] != 0:return Falseprev = arr[i]return Truedef solve():vis = [False] * (n + 1)res = []# 分組循環i = 0while i < n:j = i + 1while j < n and arr[i] == arr[j]:j += 1k = 1tmp = []while len(tmp) < j - i and k * arr[i] <= n:if not vis[k * arr[i]]:vis[k * arr[i]] = Truetmp.append(k *arr[i])k += 1if len(tmp) != j - i:return [-1]res.extend(tmp)    i = jreturn resn = int(input())
arr = list(map(int, input().split()))if check():res = solve()print (*res)
else:print (-1)

E. 小苯的01背包(easy)

方法一: 期望法貪心

從價值的角度出發

枚舉期望的價值(從大到小),然后嘗試去構造

由于與操作的特點,越與越小,所以全部都要(小孩子才做選擇題)。

純思維題,也是最簡單的解法

n, k = list(map(int, input().split()))pack = []
for _ in range(n):v, w = list(map(int, input().split()))pack.append((v, w))def solve():for s in range(2000, 0, -1):tmp = 0xfffffffor (v, w) in pack:if (s & w) == s:tmp &= vif tmp <= k:return sreturn 0print (solve())

方法二:BFS + 最優性剪枝

也是欺負數據小

看著像 O ( n 3 ) O(n^3) O(n3), 但是hack不掉。

n, k = list(map(int, input().split()))res = 0
pack = []
for _ in range(n):v, w = list(map(int, input().split()))pack.append((v, w))if v <= k:res = max(res, w)pack.sort(key=lambda x: -x[0])
st = set()
st.add((0x0ffffffff, 0x0ffffffff))for (v, w) in pack:if v <= k:continueif w <= res:continuest2 = set()st2.add((v, w))for (k1, v1) in st:if (v & k1) <= k:res = max(res, w & v1)elif (w & v1) > res:st2.add((k1&v, w&v1))if v1 > res:st2.add((k1, v1))st = st2
print (res)

這個解法,輕松過easy范圍

alt

甚至在hard的值域范圍下,也是很無敵的存在

alt


方法三: 試填法

位運算相關的題,很經典的解法和思路

n, k = list(map(int, input().split()))res = 0
pack = []
for _ in range(n):v, w = list(map(int, input().split()))pack.append((v, w))if v <= k:res = max(res, w)# 試填法
mask = 0
for i in range(29, -1, -1):mask += 1 << ifv = (1 << 30) - 1for (v, w) in pack:if (mask & w) == mask:fv &= vif fv <= k:passelse:mask -= 1 << iprint (mask)

F. 小苯的01背包(hard)

詳見 E 中的方法三: 試填法

剩下的33種方法,只有聰明的人才能看到…


寫在最后

alt

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15871.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手機相冊的照片徹底刪除了怎么恢復?刪除照片恢復的5種方法

在數字化時代&#xff0c;手機相冊里裝滿了我們的生活點滴和珍貴回憶。然而&#xff0c;一不小心就可能誤刪那些意義非凡的照片。別擔心&#xff0c;今天小編就給大家介紹5種恢復誤刪照片的方法&#xff0c;讓你的回憶不再丟失&#xff01; 方法一&#xff1a;相冊App的“最近刪…

Docker Compose使用

Docker-Compose是什么 docker建議我們每一個容器中只運行一個服務,因為doker容器本身占用資源極少&#xff0c;所以最好是將每個服務單獨分割開來&#xff0c;但是這樣我們又面臨了一個問題&#xff1a; 如果我需要同時部署好多個服務&#xff0c;難道要每個服務單獨寫Docker…

P4097 【模板】李超線段樹 / [HEOI2013] Segment 題解

題意 有一個平面直角坐標系&#xff0c;總共 n n n 個操作&#xff0c;每個操作有兩種&#xff1a; 給定正整數 x 0 , y 0 , x 1 , y 1 x_0,y_0,x_1,y_1 x0?,y0?,x1?,y1? 表示一條線段的兩個端點。你需要在平面上加入這一條線段&#xff0c;第 i i i 條被插入的線段的標…

Photoshop插件(UXP)編寫過程中,如何更新sp-checkbox的選中狀態

?問題說明 sp-checkbox是uxpSpectrum UXP Widgets下的一個小組件&#xff0c;內置樣式大概是這樣&#xff1a; 那么&#xff0c;如果用js動態的改變選中的狀態&#xff0c;應該如何做呢&#xff1f; 如果直接是html來寫&#xff1a; <sp-checkbox checked>Checked<…

特斯拉FSD的「端到端」到底能不能成?

引言 近年來&#xff0c;特斯拉的全自動駕駛&#xff08;Full Self-Driving&#xff0c;FSD&#xff09;技術備受關注&#xff0c;尤其是其「端到端」的AI軟件框架更是引發了廣泛討論。端到端技術到底是一條正確的路徑嗎&#xff1f;它能否真正實現完全自動駕駛&#xff1f;本…

LangChain 0.2 - 矢量存儲和檢索器

本文翻譯整理自&#xff1a;Vector stores and retrievers https://python.langchain.com/v0.2/docs/tutorials/retrievers/ 文章目錄 一、說明概念 二、文件三、Vector stores示例 四、Retrievers五、了解更多 一、說明 本教程將讓您熟悉 LangChain 的向量存儲和檢索器抽象。…

大語言模型LLM 相關知識匯總

大型語言模型&#xff08;LLM&#xff09;在設計和應用時需要遵守一系列的道德和法律標準&#xff0c;以確保不會輸出不當內容。以下是一些LLM通常不應該對外輸出的內容類型&#xff1a; 個人隱私信息&#xff1a;包括但不限于個人身份信息&#xff08;PII&#xff09;&#x…

Echarts 實現將X軸放在圖表頂部并且自動播放展示提示信息內容

文章目錄 需求分析效果預覽需求 如下圖所示,實現柱狀圖中反轉倒著繪制 分析 使用 ECharts 來實現對 Y 軸的倒序排序時,可以通過設置 yAxis 的 inverse 屬性為 true 來實現。以下是一個簡單的示例,演示了如何使用 ECharts 來創建一個柱狀圖,并將 Y 軸進行倒序排序:并且…

前綴和算法:提升編程效率的秘密武器(Java版)

本篇會加入個人的所謂魚式瘋言 ??????魚式瘋言:??????此瘋言非彼瘋言 而是理解過并總結出來通俗易懂的大白話, 小編會盡可能的在每個概念后插入魚式瘋言,幫助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能說的不是那么嚴謹.但小編初心是能讓更多人能接…

代碼審計--一道簡單的文件包含題目的多種利用方式

NO.1 傳統方法 首先來看下代碼 <?php error_reporting(0); if(isset($_GET["file"])){include($_GET["file"]); }else{highlight_file(__FILE__);phpinfo(); } ?>看完代碼后再來學習學習函數吧&#xff0c;畢竟菜啊&#xff01;&#xff01;&…

IronPython和C#交互

在C#環境中動態調用IronPython腳本&#xff0c;可以通過以下步驟實現&#xff1a; 安裝IronPython: 首先&#xff0c;確保你的項目中已經安裝了IronPython。可以通過NuGet包管理器來安裝IronPython。 創建IronPython運行環境: 在C#代碼中&#xff0c;你需要創建一個ScriptEngi…

NASA數據集——阿爾法噴氣式大氣實驗甲醛(HCHO)數據

Alpha Jet Atmospheric eXperiment Formaldehyde Data 簡介 阿爾法噴氣式大氣實驗甲醛數據 阿爾法噴氣式大氣實驗&#xff08;AJAX&#xff09;是美國國家航空航天局艾姆斯研究中心與 H211, L.L.C. 公司的合作項目&#xff0c;旨在促進對加利福尼亞、內華達和太平洋沿岸地區的…

【NOIP2014普及組復賽】題4:子矩陣

題3&#xff1a;子矩陣 【題目描述】 給出如下定義&#xff1a; 1.子矩陣&#xff1a;從一個矩陣當中選取某些行和某些列交叉位置所組成的新矩陣&#xff08;保持行與列的相對順序&#xff09;被稱為原矩陣的一個子矩陣。 例如&#xff0c;下面左圖中選取第 2 、 4 2、4 2、…

vue項目中使用json編輯器

實現效果&#xff1a; 借助插件json-editor-vue3實現效果如圖一&#xff0c;如果嫌丑可以通過類名改一下樣式如圖二。 實現過程&#xff1a; 安裝插件&#xff1a;npm install json-editor-vue3 文檔鏈接&#xff1a;GitCode - 開發者的代碼家園 <script setup name&quo…

Golang發送POST請求并傳遞JSON數據

客戶端 package mainimport ("c02_get_param/common""fmt""zdpgo_resty" )func main() {// Create a Resty Clientclient : zdpgo_resty.New()// 設置字符串resp, err : client.R().SetHeader("Content-Type", "application/jso…

AcWing 3466. 清點代碼庫(STL:map,vector)

3466. 清點代碼庫 需要求有幾種不同數列&#xff0c;每種有多少個&#xff0c;可以想到用map。它的鍵是一個數列&#xff0c;可以把它放在vector里。也就是map<vector<int>,int> 要滿足要求的輸出序列&#xff0c;就要想把它放在其他容器&#xff0c;或數組里&…

mac清理緩存的命令

mac清理緩存的命令 在macOS中&#xff0c;你可以使用以下命令來清理緩存&#xff1a; 清理DNS緩存&#xff1a; sudo killall -HUP mDNSResponder 清理Metal緩存&#xff1a; mkdir ~/Library/Caches/com.apple.Metal 清理文件系統元數據緩存&#xff1a; sudo find /private/…

Vite + Vue3 部署 GitHub

因為靜態資源是可以部署到 GitHub 上&#xff0c;自己順便學習部署網站 因為我使用的是 Vite 工具&#xff0c;官方有提供相應 Demo 部署靜態站點 | Vite 官方中文文檔 新建文件夾 .github 然后再建一個文件夾 workflows 新建文件 main.yml 文件 直接使用官方文檔 demo #…

什么是spring 的組件掃描?

Spring的組件掃描&#xff08;Component Scanning&#xff09;是Spring框架提供的一種機制&#xff0c;用于自動尋找和注冊應用程序中的組件&#xff0c;進而減少顯式的配置。這些組件通常是標有特定注解&#xff08;如Component, Service, Repository, Controller等&#xff0…

如何處理時間序列的缺失數據

您是否應該刪除、插入或估算&#xff1f; 世界上沒有完美的數據集。每個數據科學家在數據探索過程中都會有這樣的感覺&#xff1a; df.info()看到類似這樣的內容&#xff1a; 大多數 ML 模型無法處理 NaN 或空值&#xff0c;因此如果您的特征或目標包含這些值&#xff0c;則在…