單子 錯題本 NOIP2012普及組初賽難點整理

2021-10-09 07:15:59 字數 1848 閱讀 6760

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

分析:構造法。

想象一下縱橫交錯的棋盤,每個交匯點的橫縱座標都是整數。如果存在三點共線(橫向、縱向、斜向),那麼一定存在其中兩個點連線的中點也是整點。如下圖所示:

要保證一定存在兩個點、它們連線的中點也是整點,那麼需要構造出最壞情況下至多選多少個點、不在一條直線上,此時再新增任意乙個點,則一定出現3點一線。構造方法如下:

在 noi 期間,主辦單位為了歡迎來自全國各地的選手,舉行了盛大的晚宴。在第十八桌,有 55 名大陸選手和 55 名港澳選手共同進膳。為了增進交流,他們決定相隔就坐,即每個大陸選手左右相鄰的都是港澳選手、每個港澳選手左右相鄰的都是大陸選手。那麼,這一桌共有____種不同的就坐方案。注意:如果在兩個方案中,每個選手左邊相鄰的選手均相同,則視為同乙個方案。

分析:圓排列問題。

5名大陸選手的排列方案數為:5!5!

5名港澳選手安排在大陸選手之間的5個空位的排列方案數為:5!5!

總的排列方案數為:5!×5!5!×5!。下圖是一種排列的方案:但每位選手左邊相鄰的選手均相同,為重複方案。

最終結果為:5!×5!÷5=28805!×5!÷5=2880

#include

using

namespace std;

int n, i, j, a[

100]

[100];

intsolve

(int x,

int y)

intmain()

遞迴求解數塔路徑和的最大值。答案為14。

#include

#include

using

namespace std;

int n, ans, i, j;

string s;

char

get(

int i)

intmain()

elseif(

get(i+j)

>

get(ans+j)

)break;}

for(j =

0; j <= n-

1; j++

) cout<<

get(ans+j)

; cout<

}

手動模擬

}}1.初始化flag變數

2.從最後乙個數字開始將data[i]設定成沒有使用過的

3.將i位置設定成數字j

4.列舉1~n所有數字

5.列舉出乙個方案就跳出當前迴圈

普及 NOIP 2012 擺花

題目描述 小明的花店新開張,為了吸引顧客,他想在花店的門口擺上一排花,共m盆。通過調查顧客的喜好,小明列出了顧客最喜歡的n種花,從1到n標號。為了在門口展出更多種花,規定第i種花不能超過ai盆,擺花時同一種花放在一起,且不同種類的花需按標號的從小到大的順序依次擺列。試程式設計計算,一共有多少種不同的...

NOIP2012普及 擺花

題解 最開始確實認為是一道動規題,但推不出狀態方程,然後想既然是方案數 那是否有乙個規律,然後也沒推出來,就跳過了 後來聽了講解,覺得還是挺好理解的,定義d i j 表示用i種花擺了j盆時的方案數 三層迴圈i為花的種數,j為擺花的個數,k為當前這一種花擺出來的個數 則不考慮當前這一種花時的總數為d ...

NOIP2012普及組 尋寶

這道實際難度入門的題做得真 要麻煩死我,由於摸不到電腦,在大腦裡調了3天都翻不轉!p1076 尋寶 思路 暴力模擬 這是基礎,單純暴力據說會全部tle 取模優化 這樣時間複雜度驟降到o nm ac includeusing namespace std long long n,m,t,a 10005 ...