2023 Robocom 游記+題解

Robocom賽前一天熬夜打了一場edu,全程瞇瞇眼,三題滾粗了,前三題花了一小時才寫完,第四題寫了一小時也沒寫明白,好像預示著Robocom的結局?

早上七點醒了,感覺自己渾身無力,想睡覺但是又睡不著的折磨一直籠罩在我的身邊,還是強忍著自己的意識睡了一小時,一小時反復醒了五六次,把星期天網絡賽的板子整理了一下,然后又睡覺了。

12點,吃完飯了。

躺了一個小時,在睡覺和玩手機交題度過,然后一點半開始登錄。

開局看了
T1
一讀就是熟悉的味道,讓人難以接受的題面風格。但是吃了三次答辯的我已經見怪不怪。
看到輸入中有一個條件讓人耳目一新,當自己的輸入是"yourname"的時候要把賬號替換成你的名字,否則就禁賽處理???
想了一會這個題目的評測機制,感覺普通spj也實現不了的樣子,覺得很神奇。題面很簡單,照著要求模擬一下即可,也沒啥太惡心的東西。

T2
看了一下T2,此時我腦子里是? ? ? ? ? ? ? ? ?
莫非,是個cy出的大模擬??我先看看別的題吧

掃了一遍題目,咦這個T5題面這么短,我就讀了一遍,很快理解了題意,感覺T5的讀題風格顯然不同于別的題面,看完之后一臉懵逼,想了一會覺得很難,感覺想不明白,然后思考了一會,看了眼榜于是決定回來搞搞T2。

于是又回到了答辯,看著難以忍受的題面,我理清了題目想表達的意思,不過也是夠答辯的。總體題意就是:
六種顏色,八個牌號,問你自己的牌型有多少種,然后你可以詢問一次排除答案,詢問以問三種顏色和元素總和的方式詢問。排除答案的數量是min(k1,k2),k1,k2分別為回答是或不是排除的答案數量,問你詢問一次后你手里牌的可能數量(去掉排除的)。
看了眼數據范圍,模擬一下寫個dfs預處理C(6,3)的所有三元組,然后元素總和枚舉[3 , 24]即可,暴力算算排除的和未排除的,然后取一個min就做完了。

做完前兩題花了30min。
然后我看了一眼榜單,我發現有人過了T5,心里暗想著T5應該不難。
然后我就去看了T5,然后我手玩了一下,我發現一些好玩的性質:
第一個棧用了 i i i個,第二個棧用了 j j j個,此時留在數組里的數量好像是一個定值耶。我們采取這樣的策略,就是能刪就刪的策略就可以讓這個數組大小固定[因為我們肯定要盡可能的小]。
我們就定義 c n t [ i ] [ j ] cnt[i][j] cnt[i][j]為第一個棧用了 i i i個,第二個棧用了 j j j個,此時留在數組里的數量。這個轉移我們可以用一個類似于dp的轉移得到。
即考慮 c n t [ i ] [ j ] cnt[i][j] cnt[i][j] c n t [ i ? 1 ] [ j ] cnt[i-1][j] cnt[i?1][j]或者 c n t [ i ] [ j ? 1 ] cnt[i][j-1] cnt[i][j?1]轉移,接下來的問題就是怎么判斷數組是否有 k k k個相同的元素呢,如果我們要是加的是 a [ i ] a[i] a[i]元素,那我們就看看cnt[i - 1][j]這個狀態里面有多少個a[i],顯然這部分可以由處理得到,我賽場上用了一個vector配合upper_bound的做法去得到數組里面含有 a [ i ] a[i] a[i]的元素個數。
好了,現在這個 c n t [ i ] [ j ] cnt[i][j] cnt[i][j]可以由兩個狀態轉移了,我們就考慮dp一下轉移順序吧。我們dp方式就是 d p [ i ] [ j ] dp[i][j] dp[i][j]表示第一個棧用了 i i i個,第二個棧用了 j j j個此時數組使用的最大數量是多少。
那我們的轉移方式就是
1.從dp[i - 1][j]轉移
d p [ i ] [ j ] = m i n ( d p [ i ] [ j ] , m a x ( d p [ i ? 1 ] [ j ] , c n t [ i ? 1 ] [ j ] + 1 ) ) dp[i][j] = min(dp[i][j] , max(dp[i - 1][j] , cnt[i -1][j] + 1)) dp[i][j]=min(dp[i][j],max(dp[i?1][j],cnt[i?1][j]+1))
m a x ( d p [ i ? 1 ] [ j ] , c n t [ i ? 1 ] [ j ] + 1 ) max(dp[i - 1][j] , cnt[i -1][j] + 1) max(dp[i?1][j],cnt[i?1][j]+1)是什么含義呢,就是表示前面轉移取出來一個數的話,勢必要多用一個數組位置,然后我們看看和之前開的數組大小是否能裝下,不能裝下就"撐開"。
2.從dp[i][j - 1]轉移
同理
d p [ i ] [ j ] = m i n ( d p [ i ] [ j ] , m a x ( d p [ i ] [ j ? 1 ] , c n t [ i ] [ j ? 1 ] + 1 ) ) dp[i][j] = min(dp[i][j] , max(dp[i][j - 1] , cnt[i][j - 1] + 1)) dp[i][j]=min(dp[i][j],max(dp[i][j?1],cnt[i][j?1]+1))

然后過了樣例交了一發就1a了QaQ,我是本科組全場第二個過的qaq。

然后看T3,T4過了不少了,然后我就開始收拾爛攤子,心想有機會 a k ak ak

于是開看T3
T3顯然是一個很好寫的大模擬,用一個優先隊列維護結束位置,用戶編號,碗號就可以了。好的,我經常被這樣的題折磨了很多次!我知道一個好寫的寫法!就是提前先把 m m m個碗放進去,就少了很多不必要的判斷,即判斷優先隊列里面的元素個數是否小于等于 m m m。然后很快的就寫完了。

此時已經過去了 1 h 1h 1h
看了一眼榜, r k 1 rk1 rk1的那名老哥倒著開題,只差了 T 3 T3 T3了。

然后我去開T4
T4
一眼讀完是一個大模擬,感覺時間復雜度顯然不夠用!然后感覺有種拓撲性質,然后發現貌似兩個編號的拓撲關系只跟上面相鄰位置有關(邊界),要判斷相鄰位置即可。預處理的時候就是看看每個元素的上方,上面如果相鄰元素和自己一樣就不用管了,這兩個是一家人,如果不相同的話,那么肯定是上面的先拿走了,自己再拿走,那我們就加邊!然后我們按照這樣的方式加邊肯定得到一個有向圖,然后跑一次拓撲序,題目貌似還要求了最小字典序,這好辦,我們在跑拓撲序的時候用優先隊列維護!我們只拿出來最小的。這樣,你就獲得了一個26的好成績,然后我的做法在接下來的50min一直在mle和wa中度過。

不知道T4的神奇例子是什么,也許是我做法的問題,我覺得國賽的樣例還是比較神奇的,感覺騙騙也能騙很多分,我的T4應該不是正解,但是還是騙到了26分,沒有以 a k ak ak收尾,但是以 116 116 116收尾也是對得起自己的競賽生涯了。

下賽季加油!

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

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

相關文章

AutoSAR配置與實踐(基礎篇)3.3 BSW的通信功能

傳送門 -> AUTOSAR配置與實踐總目錄 AutoSAR配置與實踐(基礎篇)3.3 BSW的通信功能 一、收發過程概覽1.1 發送過程概覽1.2 接收過程概覽 二、BSW的通信功能模塊組成三、收發過程解析3.1 發送過程3.2 發送后的結果確認3.3 接收過程 一、收發過程概覽 1…

Airbnb開源數據可視化工具Visx

一、什么是visx visx 是用于 React 的富有表現力的底層可視化組件集合,結合了 d3 的強大功能來生成可視化,以及 React 更新 DOM 的諸多優勢。 在 Airbnb 內部,visx 的目標是統一整個公司的可視化堆棧,在此過程中,創建了 visx 項目,從而有效的將 D3 的強大功能與 React …

內核調試之devmem直接讀寫寄存器

今天分享一個內核調試實用工具——devmem。 相信很多做底層驅動的人都會經常用到。 什么是devmem? 在Linux系統,如果我們想要訪問某個寄存器,就需要寫一個驅動程序,在驅動中映射寄存器地址,轉為虛擬地址后就可以訪問…

windows電腦系統自帶的畫圖工具如何實現自由拼圖

1.首先選中你要拼接的第一張圖片,右鍵選著編輯,會自動打開自帶的畫圖工具 然后就是打開第一張圖片,如下圖所示 接著就是將畫布托大,如下圖所示。 然后點擊選擇,選擇下面的空白區域,選著區域的范圍要比準備拼…

05-微信小程序常用組件-表單組件

05-微信小程序常用組件-表單組件 文章目錄 表單組件button 按鈕案例代碼 form 表單案例代碼 image 圖片支持長按識別的碼案例代碼 微信小程序包含了六大組件: 視圖容器、 基礎內容、 導航、 表單、 互動和 導航。這些組件可以通過WXML和WXSS進行布局和樣式設…

jQuery第一次接觸

jQuery是一個輕量級js庫 1.下載jquery庫&#xff0c;網址Download jQuery | jQuery npm i jquery 2.還可以從cdn中載入jquery <script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> 3.j代表js&#xff0c;query代表查詢&#xff0c;jQu…

超實用的40道JAVA經典算法題(含答案)

作為一名Java程序員&#xff0c;想要拿到一份滿意的offer&#xff0c;就必須做好充足的準備。眾所周知&#xff0c;算法可以說是大廠面試Java程序員的必問題。好的算法可以讓性能得到萬倍提升&#xff0c;做到毫秒級處理千萬數據的程度。因此&#xff0c;算法的重要性不言而喻&…

fedora

about firewall well, I don’t know how to use fedora firewall,but it I come up with that I can use ubuntu’s ufw for blocking evil connection, download wps extremely boredness drove me to install fedora&#xff0c; It can use wps pdf&#xff0c;但我仍然…

PAT 1018 Public Bike Management

個人學習記錄&#xff0c;代碼難免不盡人意。 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and return it to any other stations in the city. The Pu…

【實用插件】ArcGIS for AutoCAD插件分享下載

ArcGIS包含一系列功能&#xff0c;其中ArcGIS for AutoCAD一個免費的可下載的AutoCAD插件&#xff0c;它可簡化將CAD和GIS數據整合在一起的過程提供互操作性。 ArcGIS for AutoCAD互操作性平臺將連接AutoCAD和 ArcGIS&#xff0c;以增強使用地理環境設計CAD工程圖時的用戶體驗…

Kubernetes 企業級高可用部署

目錄 1、Kubernetes高可用項目介紹 2、項目架構設計 2.1、項目主機信息 2.2、項目架構圖 2.3、項目實施思路 3、項目實施過程 3.1、系統初始化 3.2、配置部署keepalived服務 3.3、配置部署haproxy服務 3.4、配置部署Docker服務 3.5、部署kubelet kubeadm kubectl工具…

程序員你可長點心吧!代碼檢查你得用

代碼檢查的重要性不言而喻&#xff0c;很多重要的項目都要做代碼的檢查&#xff0c;及時糾正代碼中的錯誤&#xff0c;確保代碼的可讀性、可維護性和可拓展性&#xff0c;從而保證軟件的質量。 一、代碼檢查的定義 代碼檢查是指通過對程序代碼的獨立檢查來提高代碼質量和開發效…

論壇項目之用戶部分

注冊接口 實現思路 1.特殊字段檢查&#xff08;比如性別沒有給出需要給出默認值&#xff09; 2.對比檢查兩次輸入的密碼是否一致&#xff0c;不一致報錯 3.利用UUID生成隨機‘鹽’值&#xff0c;并使用密碼進行MD5加密后與‘鹽’進行拼接&#xff0c;生成加密后的密碼 4.創建U…

什么是P2P?

P2P (Peer-to-Peer) 是一種分布式的網絡架構&#xff0c;其中各個節點&#xff08;通常被稱為“peers”或“節點”&#xff09;直接進行數據共享和交換&#xff0c;而無需依賴中央服務器。P2P 網絡強調平等的參與和共享&#xff0c;每個節點既可以是數據的消費者&#xff08;下…

推進深度融合 打造智慧媒體

以下內容來自于易知微官網&#xff0c;點擊一下&#xff0c;即可進入官網了解詳情。 注意&#xff1a;案例數據均為虛擬數據 數字改革是一場波及經濟社會發展全局、涵蓋生產力到生產關系的全方位變革。在數字化時代&#xff0c;以數字改革賦能媒體深度融合已然成為時代所向、…

每日一題——連續子數組的最大和

題目 輸入一個長度為n的整型數組array&#xff0c;數組中的一個或連續多個整數組成一個子數組&#xff0c;子數組最小長度為1。求所有子數組的和的最大值。 數據范圍:1<n<2105 ?100<a[i]<100 要求:時間復雜度為 O(n)&#xff0c;空間復雜度為 O(n) 示例1 輸入…

ubuntu中安裝python

最簡單方便的是 apt 使用第三方的 ppa 源&#xff0c;然后直接 apt 安裝 python3.9 安裝 software-properties-common 獲取add-apt-repository命令&#xff1a;apt install -y software-properties-common添加第三方的 ppa 源&#xff1a;add-apt-repository ppa:deadsnakes/p…

Spring系列篇--關于Spring Bean完整的生命周期【附有流程圖,超級易懂】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下來看看由輝輝所寫的關于Spring的相關操作吧 目錄 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Spring Bean是單例模式還是多例模式 二…

Kafka如何保證消息?定能被消費

Kafka 通過多種機制來保證消息一定能被消費&#xff0c;從而實現數據的可靠性和持久性。 以下是一些常見的方法和策略來提高消息的可靠性&#xff1a; 復制機制&#xff1a; Kafka 使用了分區和副本的概念。每個分區可以有多個副本&#xff0c;分布在不同的 Broker 上。當消息…

k8s 自身原理 3

前面有分享到 master 主節點上的 四個組件&#xff0c;etcd&#xff0c;ApiServer&#xff0c;scheduler&#xff0c;controller manager 接下來我們分享一波 woker 節點上的組件&#xff0c;xdm 還記得 worker 節點上都有什么嗎&#xff1f; kubeletkube-proxy實際的服務對應…