1. 程式人生 > >【用腳趾頭解決NOIP】(1):NOIP2010~NOIP2015普及組問題求解

【用腳趾頭解決NOIP】(1):NOIP2010~NOIP2015普及組問題求解

(溫馨提示:老司機即將開始飈靈車)

NOIP2010問題求解

第一題:迷之(LZW)編碼

LZW編碼正解√

題面描述:
LZW編碼是一種自適應詞典編碼。在編碼的過程中,開始時只有一部基礎構造元素的編碼詞典,如果在編碼的過程中遇到一個新的詞條,則該詞條及一個新的編碼會被追加到詞典中,並用於後繼資訊的編碼。
舉例說明,考慮一個待編碼的資訊串:“xyx yy yy xyx”。初始詞典只有3個條目,第一個為x,編碼為1;第二個為y,編碼為2;第三個為空格,編碼為3;於是串“xyx”的編碼為1-2-1(其中-為編碼分隔符),加上後面的一個空格就是1-2-1-3。但由於有了一個空格,我們就知道前面的“xyx”是一個單詞,而由於該單詞沒有在詞典中,我們就可以自適應的把這個詞條新增到詞典裡,編碼為4,然後按照新的詞典對後繼資訊進行編碼,以此類推。於是,最後得到編碼:1-2-1-3-2-2-3-5-3-4。
現在已知初始詞典的3個條目如上述,則資訊串“yyxy xx yyxy xyx xx xyx”的編碼是:
你猜!


此題分類: 天下之大

思路描述:這道題毫無任何“思路”可言,只要記住:空格的編碼不能忘啊!

本題答案: 2-2-1-2-3-1-1-3-4-3-1-2-1-3-5-3-6

第二題:佇列拍(快)照

題面描述:
佇列快照是指某一時刻佇列中的元素組成的有序序列。例如,當元素1、2、3入隊,元素1出隊後,此刻的佇列快照“2 3”。當元素2、3也出隊後,佇列快照是“ ”,即為空。現有3個正整數元素依次入隊、出隊。已知它們的和為8,則共有____種可能的不同的佇列快照。
(不同佇列的相同快照只計一次)。例如,“5 1”,“4 2 2”,“”都是可能的佇列快照;而“7”不是可能的佇列快照,因為剩下的2個正整數的和不可能為1。

此題分類:佇列(queue)

思路描述:
我們從頭開始。首先,數字8必須得分給3個整數,共計21個排列。
這裡寫圖片描述
依次取掉隊頭 , 得到一堆新佇列,再一次衍生出21個排列
這裡寫圖片描述
同理,再一次去掉隊頭,此時得到的排列需要去重,只有6個。
這裡寫圖片描述
但這裡有一個陷阱:空佇列依舊算一個快照!所以說最後答案需要加1
那麼全部加起來就是我們所求。即ans=21+21+6+1=49

本題答案: 49

NOIP2011問題求解

第一題:期末考卷的編碼
(溫馨提示:以下全程高能)
題面描述: 每份考卷都有一個8位二進位制序列號。當且僅當一個序列號含有偶數個1時,它才是有效的。例如,0000000、01010011都是有效的序列號,而11111110不是。那麼,有效的序列號共有__

個。

此題分類:愉快的進位制轉換

思路描述:
這道題依舊是模擬,注意一下1是可以為0個的(0是偶數√)
然後還有一點:列舉所有無效的序列號,因為有效的序列號會列舉到你想死。
(列舉過程我就不給了,畢竟初賽賽場很良心的,時間多到你可以去列舉)

本題答案: 128

第二題:字串亂搞

定義字串的基本操作為:刪除一個字元\插入一個字元和將一個字元修改成另外一個字元這三種操作。將字串A變成字串B的最少操作步數,稱為字串A到字串B的編輯距離。字串“ABCDEFG”到字串“BADECG”的編輯距離為__

本題分類: 字串操作

思路描述: 這裡有一點點小技巧。我們注意觀察A、B字串就會發現:

===========

①:字元A、B交換了位置
②:C取代了F的位置,F被刪去
③:其餘的字串沒有改變

===========
我們一步一步簡化:
暴力操作:交換A、B(2步),刪去C、F(2步),插入C(1步),共5步
簡化:交換A、B(2步),刪去C(1步),將F修改為C(1步),共4步。
這裡看上去是最簡了,但是我們會發現,我們可以將C刪除操作改為用A替換,刪去原A,就只花了2步。
正解:刪去A(1步),用A替換C(1步),用C替換F(1步),共3步

本題答案: 3

NOIP2012問題求解

第一題:奇怪的中♂線

題面描述:
如果平面上任取n個整點(橫縱座標都是整數),其中一定存在兩個點,它們連線的中點也是整點,那麼n至少是____

本題分類: 數論

思路描述: 有什麼是一個“幾何畫板”或者草稿紙不能解決的呢?
這道題我們需要搞一個向量。
我們設在平面上有兩點A,B,連一條向量。AB
然後設向量的中點M。
我們知道,向量的加減法做法是:
AB=a,CD=b,:a+b=(xa+xb,ya+yb)
那麼對於向量得出的結果共有4種:
即:
(xa+xb,ya+yb)
(xa+xb,ya+yb)
(xa+xb,ya+yb)
(xa+xb,ya+yb)
只要上面的情況中滿足兩個情況,就能滿足中點為整點。
根據抽屜原理,那麼這裡需要5個點,在最壞的情況下滿足中點為整點。

本題答案: 5

第二題:吃♂晚餐

題面描述:
在NOI(plus)期間,主辦單位為了歡迎來自各國的選手,舉行了盛大的晚宴。在第十八桌,有5名大陸選手和5名港澳選手共同進膳。為了增進交♂流,他們決定相隔就坐,即每個大陸選手左右旁都是港澳選手,每個港澳選手左右旁都是大陸選手。那麼,這一桌一共有__種不同的就坐方案。
注:如果在兩個方案中,每個選手左右相鄰的選手相同,則視為同一種方案。

思路描述:這裡所有的就坐方案中有5!5!,其中的第一個5!為大陸選手的就坐方案,第二個5!代表港澳選手的就坐方案。那麼其中還有重複的方案,除以5即可。
那麼本題答案就為:5!5!5=2880

本題答案: 2880

NOIP2013問題求解

第一題:做♂成一個圓圈

題面描述:
7個同學圍坐一圈,要選2個不相鄰的作為代表,有___種不同的選法。

本題分類:(即使不會做也要強)(的)(出這道題的結果來騙點分)

思路描述
小朋友們是坐成這樣的
這裡寫圖片描述
那麼這道題就變成了另外一個問題:求七邊形的對角線數。
即:
這裡寫圖片描述
那麼對角線公式為(設有n條邊)
n(n3)2
所以答案… 7*4/2=14

本題答案: 14

第二題:黑客公司

題面描述:
某系統自稱使用了一種防竊聽的方式驗證使用者密碼。密碼是n個數s1, s2, …, sn,均為0
或1。該系統每次隨機生成n個數a1, a2, …, an,均為0或1,請使用者回答(s1a1 + s2a2 + … + snan)除以2的餘數。如果多次的回答總是正確,即認為掌握密碼。該系統認為,即使問答的過程被洩露,也無助於破解密碼——因為使用者並沒有直接傳送密碼。
然而,事與願違。例如,當n = 4時,有人竊聽了以下5次問答:
這裡寫圖片描述
那麼,該使用者的密碼是:___________________

思路描述:
這裡我們設密碼的四位分別是:
n1,n2,n3,n4
那麼就有:
這裡寫圖片描述
那麼可以得出:
(接下來有一個規律:奇數加奇數為奇數,偶數加偶數為偶數,奇數加偶數為奇數)

n1+n2是奇數,n3+n4是偶數,n1+n2+n4是偶數,n1是偶,即0
n1是奇數倒推回去得:n2是奇數,即1
n1+n2帶入n1+n2+n4 得:n4也是奇數,即1
n4帶入n3+n4得:n3為奇數,也為1
那麼得到密碼為:0111

*本題答案:*0,1,1,1

NOIP2014問題求解

第一題:放球♂

題面描述:
把M個同樣的球放到N個同樣的袋子裡,允許有的袋子空著不放,問當m=8,n=5時,共有多少種不同的放置方法?

思路描述:直接列舉就ok了。如下圖:
這裡寫圖片描述

本題答案: 18

第二題:最短路

題面描述:
這裡寫圖片描述
求A到E的最短路。

本題分類:圖論

思路描述:……這個麼。。我們強行心算就能找到最短路了。
最短路如下:
這裡寫圖片描述

本題答案: 11

NOIP2015問題求解

第一題:1234の4321
題面描述:
重新排列1234使得每一個數字都不在原來的位置上,一共有___種排法。

本題分類:又是模擬

思路描述:說實話,這種題目還是純列舉(畢竟賽場上時間多的是)
那麼列舉如下圖:
這裡寫圖片描述

本題答案: 9(種)

第二題:二叉樹的葉子

題面描述:
一棵結點數為2015的二叉樹最多有___個葉子結點。

這裡寫圖片描述

思路描述
一個二叉樹,如果擁有最多的葉子節點,那麼這棵樹一定是完全二叉樹。這樣才會有更多的節點擁有子節點,從而衍生出最多的葉子節點。
用完了概念,開始用公式。二叉樹的葉子節點個數是度為2的節點個數+1,那麼完全二叉樹上度只有三種情況:0,1,2。
那麼葉子節點就為度為0的點。若設度為0的節點個數為T

相關推薦

腳趾解決NOIP(1):NOIP2010~NOIP2015普及問題求解

(溫馨提示:老司機即將開始飈靈車) NOIP2010問題求解 第一題:迷之(LZW)編碼 題面描述: LZW編碼是一種自適應詞典編碼。在編碼的過程中,開始時只有一部基礎構造元素的編碼詞典,如果在編碼的過程中遇到一個新的詞條,則該詞

腳趾解決NOIP(2)NOIP2009~NOIP2015普及完善程式

文章索引: 這一篇部落格,算是我的作業吧。 根據難度與時間,我從完善程式的第一題開始,從NOIP2009到NOIP2015年,逐題寫出思考思想。 NOIP2009(完善程式第一題):最大連續欄位和 題意描述: 給出一個數列(元素個數不多於100),數列元素均為負整數、正

資料結構與演算法分析1.2 編寫程式解決字謎問題

原博:http://blog.csdn.net/u013667086/article/details/49179741 問題描述:       從已知的字謎中找出在字典中的單詞 解決思路:        1、用指標陣列存放字謎和字典單詞        2、將字典單

react實戰·菜鳥版1. dva + antd 寫一個todolist

在新公司實習,面試的java開發,結果讓先搞一波react(群裡有個ios開發讓寫js的,已經懵逼的無以復加了,哈哈哈哈)。。所以只能硬著頭皮學了,學了兩天,感覺中文資料不是很多,而且大多數資料要麼一點都不適合初學者,要麼就已經過時了。感覺很苦惱,下午強行

Python 基於Flask的Web開發1戶登錄 註冊

html 追蹤 filter 數據庫對象 建數據庫 ali src 密碼錯誤 需要 實現目標 基於Flask實現用戶的登錄/註冊。 設計思路 前端1.編寫登錄和註冊表單2.編寫視圖函數3.編寫相應的html文件4.頁面測試 後臺1.創建數據庫2.修改配置文件3.編寫數據

深度復制的坑1、對象assign復制的假深度,2、數slice復制的坑,3、還有數map復制的坑

map 淺復制 跟著 turn spa ice 屬性 arr slice 1、對象復制的坑 Object.assign() Object.assign() //淺復制 基本沒用 跟直接用= 一樣 Object.assign(true,{}) // 以為是深拷貝,其實只

vue開發問題-解決方法(四)vue Element UI使用中.$scopedSlots.default is not a function 報錯

判斷 元素 技術分享 error: class 解決 nbsp AR peer 當使用elementUI中v-if來判斷顯示元素時,會報錯。 vue.js:600 [Vue warn]: Error in render: "TypeError: l.$scopedSl

vue開發問題-解決方法(四)vue Element UI 日期選擇器獲取日期格式問題 t.getTime is not a function

format PE man UNC cti bubuko 圖片 orm ID 現有一表單需要填寫日期,采用了elementUI中日期選擇器,但是獲取到的數據格式是 Mon Jun 18 2018 00:00:00 GMT+0800 (中國標準時間) 而我需要的數

一、django2.0來開發 環境部署和初始化項目

text pro use name 支持 art 簡易 發布 server 一、【用django2.0來開發】 環境部署和初始化項目 發現網上沒有什麽比較好的django系列的教程, 所以打算寫一整套教程來教會大家如何使用django2.0 整個教程都會圍繞一個開發一個項目

django2.0來開發 後臺會員管理

分享 == page one not ble -i 技術 信息 【用django2.0來開發】 後臺會員管理 項目地址:https://gitee.com/ccnv07/django_example這一篇主要是要完成django 後臺的會員管理功能, 會涉及到model,

django2.0來開發會員註冊登錄

技術 復雜 html ffffff processor emp phone 表單元 jpg github地址:https://gitee.com/ccnv07/django_example 本章主要講如何實現會員的前臺註冊登錄, 會涉及到以下模塊 簡單的路由設置 簡單的模

django2.0來開發後臺會員管理(二) ModelForm表單的使用方法以及數據驗證

第一步 根據 cor 默認 日期時間 return dig 最大 quest 上一節我們講完了ModelAdmin的使用, 但是在操作中也發現, 新增編輯會員時, 我們無法驗證數據是否正確, 比如 用戶名、手機號、郵箱都應該是唯一的 用戶名和密碼長度的驗證 編輯用戶信息時

django2.0來開發實現會員註冊功能

odi 記得 Language 會員 ffffff extends gist processor url跳轉 上一節我們完成了會員功能的後臺管理, 這一節我們需要完成會員註冊功能, 涉及到以下幾個模塊 URL配置 views視圖模塊 模板 Request/Response

Docker的安裝過程試錯以及解決過程

自序 經常聽別人說起docker ,自己工作中也有用到docker,但是因為做外包的原因,只是在使用jar包,呼叫介面都是別人封裝好的,只要根據介面拿到你需要的系統配置資訊就行了,所以一直沒有自己學習docker怎麼安裝,配置 最近辭職面試的時候,覺得自己有必要學習些新的東西,所以把docker 試著安裝

ArcGIS|空間分析|網路分析1 建立網路資料集

連通性、屬性 參考ArcGIS幫助文件 文章目錄 準備 建立網路資料集 1、網路資料集的名稱 2、網路資料集的版本 3、網路資料集的源 4、網路中構建轉彎模型 5、通性模型 6、高程欄位

迅為iTop4412學習筆記1. 最簡linux驅動

本節目標 載入、解除安裝驅動的時候列印一段話(總不是HelloWorld…之類的) 簡單的Makefile編譯 一、標頭檔案 // 載入,解除安裝的初始化需要包含此標頭檔案 #include <linux/init.h> /

python資料採集練習 根據指定av號下載bilibili視訊(三)selenium操縱瀏覽器行為

selenium庫可以控制瀏覽器行為。我們用selenium庫可以抓取我們所需的網頁全部資訊。 注意:要選擇與你瀏覽器相相容版本的驅動配合使用 關於selenium詳細教程這裡不累述,本程式使用的是Chrome瀏覽器,並且中會用到如下幾個函式: from sel

從零開始學日文#1 日語50音的發音和寫法簡單教學!(平假名篇)

平假名是日語使用的一種表音文字,除一兩個平假名之外,均由漢字的草書演化而來,形成於公元9世紀。 圖片: 具體發音請觀看Youtube https://www.youtube.com/watch?v=GmRdUUVgSAA&index=1&list=PL

python學數學建模scipy.optimize.linprog實現線性規劃

因為近期要參加一個建模比賽,沒有安裝MATLAB,所以熟悉下演算法的python實現,本篇為用scipy.optimize.linprog線性規劃。 線性規劃主要解決下面這種問題: (第一次用LaTex,公式做的不好看,不是這樣要轉化一下,如求最大值) scipy.

高併發簡單解決方案redis快取佇列+mysql 批量入庫+php離線整合

需求背景:有個呼叫統計日誌儲存和統計需求,要求儲存到mysql中;儲存資料高峰能達到日均千萬,瓶頸在於直接入庫併發太高,可能會把mysql幹垮。 問題分析 思考:應用網站架構的衍化過程中,應用最新的框架和工具技術固然是最優選擇;但是,如果能在現有的框架的基礎上提