藍橋杯第九屆決賽

2021-09-30 20:39:28 字數 3104 閱讀 6393

x星球的鈔票的面額只有:100元,5元,2元,1元,共4種。

小明去x星旅遊,他手裡只有2張100元的x星幣,太不方便,恰好路過x星銀行就去換零錢。

小明有點強迫症,他堅持要求200元換出的零鈔中2元的張數剛好是1元的張數的10倍,

剩下的當然都是5元面額的。

銀行的工作人員有點為難,你能幫助算出:在滿足小明要求的前提下,最少要換給他多少張鈔票嗎?

(5元,2元,1元面額的必須都有,不能是0)

注意,需要提交的是乙個整數,不要填寫任何多餘的內容。

(200-x-10*2*x)/5

(200-21x)/574

x星球的盛大節日為增加氣氛,用30台機光器一字排開,向太空中打出光柱。

安裝除錯的時候才發現,不知什麼原因,相鄰的兩台雷射器不能同時開啟!

國王很想知道,在目前這種bug存在的情況下,一共能打出多少種雷射效果?

顯然,如果只有3臺機器,一共可以成5種樣式,即:

全都關上(sorry, 此時無聲勝有聲,這也算一種)

開一台,共3種

開兩台,只1種

30臺就不好算了,國王只好請你幫忙了。

要求提交乙個整數,表示30臺雷射器能形成的樣式種數。

注意,只提交乙個整數,不要填寫任何多餘的內容。

直接dp(可以dfs check一下)  2178309 

格雷碼是以n位的二進位制來表示數。

與普通的二進位制表示不同的是,它要求相鄰兩個數字只能有1個數字不同。

首尾兩個數字也要求只有1位之差。

有很多演算法來生成格雷碼。以下是較常見的一種:

從編碼全0開始生成。

當產生第奇數個數時,只把當前數字最末位改變(0變1,1變0)

當產生第偶數個數時,先找到最右邊的乙個1,把它左邊的數字改變。

用這個規則產生的4位格雷碼序列如下:

0000 

0001 4

0011

0010 3

0110

0111 4

0101

0100 2

1100

1101 4

1111

1110 3

1010

1011 4

1001

1000 

以下是實現**,仔細分析其中邏輯,並填寫劃線部分缺少的**。

#include

void show(int a,int n)

printf("\n");

} void f(int n)

請注意:只需要填寫劃線部分缺少的內容,不要抄寫已有的**或符號。

樹狀陣列 i&-i 得到最後一位1(-i的二進位制就是i的反碼+1,如1010,反碼0101,+1=0110),那麼答案就是 a = (a & -a)<<1 ^ a;

小明買了塊高階大氣上檔次的電子手錶,他正準備調時間呢。

在 m78 星雲,時間的計量單位和地球上不同,m78 星雲的乙個小時有 n 分鐘。

大家都知道,手錶只有乙個按鈕可以把當前的數加一。在調分鐘的時候,如果當前顯示的數是 0 ,那麼按一下按鈕就會變成 1,再按一次變成 2 。如果當前的數是 n - 1,按一次後會變成 0 。

作為強迫症患者,小明一定要把手錶的時間調對。如果手錶上的時間比當前時間多1,則要按 n - 1 次加一按鈕才能調回正確時間。

小明想,如果手錶可以再新增乙個按鈕,表示把當前的數加 k 該多好啊……

他想知道,如果有了這個 +k 按鈕,按照最優策略按鍵,從任意乙個分鐘數調到另外任意乙個分鐘數最多要按多少次。

注意,按 +k 按鈕時,如果加k後數字超過n-1,則會對n取模。

比如,n=10, k=6 的時候,假設當前時間是0,連按2次 +k 按鈕,則調為2。

「輸入格式」

一行兩個整數 n, k ,意義如題。

「輸出格式」

一行乙個整數

表示:按照最優策略按鍵,從乙個時間調到另乙個時間最多要按多少次。

「樣例輸入」

5 3「樣例輸出」

2「樣例解釋」

如果時間正確則按0次。否則要按的次數和操作系列之間的關係如下:

1:+1

2:+1, +1

3:+3

4:+3, +1

「資料範圍」

對於 30% 的資料 0 < k < n <= 5

對於 60% 的資料 0 < k < n <= 100

對於 100% 的資料 0 < k < n <= 100000

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

直接bfs,儲存到達每個差x時校準的最小步數。

#include#include#include#include#include#includeusing namespace std;

#define ll long long

const int mx = 1e5+5;

struct nozz;

int dp[mx];

int bfs(int n,int k)

if(dp[(now.v+k)%n]==-1)

}} int main();int n,m;

ll dp[105][105][2];/*01是否減少過*/

void gettop()

top[i+1]=n-tag;

//cout<>mp[i];

gettop();

dp[0][0][0]=1;ll ans=0;

for(int i=1;i<=m;i++)

dp[i][j][1]+=dp[i-1][j][1],dp[i][j][1]%=mod;

for(int k=j+1;k<=n;k++)

if(i==m)ans=(ans+dp[i][j][1]+dp[i][j][0])%mod;

} }cout<6 似乎是個莫比烏斯反演,對我來說不可能了 

第九屆藍橋杯決賽之旅

3月份,參加的藍橋杯省賽,沒怎麼準備,意料之外的拿了個省一,於是才有了這次藍橋盃國賽之旅。雖然對於藍橋杯的詬病的聲音一直都有,但a組的國賽的選手清北和其他牛校的還真佔了不少。乙個二等獎基本被他們包攬了。而我只做出了三道題不幸打鐵,除了最後幾秒鐘有道41份的填空題沒有交上去挺遺憾意外,其他的體驗都很好...

第九屆藍橋杯決賽大學A組

已知三角形三個頂點在直角座標系下的座標分別為 2.3,2.5 6.4,3.1 5.1,7.2 求該三角形的面積。注意,要提交的是乙個小數形式表示的浮點數。要求精確到小數後3位,如不足3位,需要補零。答案 include include using namespace std struct dian ...

第九屆藍橋杯決賽(C B組) 搭積木

搭積木 題目描述 小明對搭積木非常感興趣。他的積木都是同樣大小的正立方體。在搭積木時,小明選取 m 塊積木作為地基,將他們在桌子上一字排開,中間不留空隙,並稱其為第0層。隨後,小明可以在上面擺放第1層,第2層,最多擺放至第n層。擺放積木必須遵循三條規則 其中,小明不喜歡的位置都被標在了圖紙上。圖紙共...