藍橋杯選拔

2021-10-13 02:39:23 字數 2206 閱讀 7346

三重for迴圈列舉即可

這是一道dp題,設狀態dp[i]為長度為i的完美字串,所以有:

所以狀態轉移方程:dp[i]=dp[i-1]+dp[i-2].

stl**,將每個字串放入的集合set裡,然後輸出集合的大小即可。

貪心,要這樣想,如果你們進行了m個回合,這m個回合你都贏了,且第i回合你出的牌為b1,b2,bm,你的摯友出的牌為a1,a2,am,則有你的得分(b1+b2+,+bm)-(a1+a2+,+am);所以你要最大化盡可能增大(b1+b2+,+bm)的同時要盡可能減小(a1+a2+,+am)。要如何實現這種貪心,只需要將b的逆序和a的正序比較即可。

核心**:

sort

(a+1

,a+1

+n);

sort

(b+1

,b+1

+n,cmp)

;//cmp是逆序比較函式

long

long num=0;

for(

int i=

1;i<=n;i++)}

cout<經典的bfs題型,如果是因為不熟悉bfs的實現而導致沒能把這道題解出來,那還是能夠理解,如果是想不到用bfs或不知道如何去bfs,那你此時就應該去學習一下bfs等相關知識了。

從起始位置一直bfs,如果能走到目標點,便可提前退出bfs,到達某乙個點需要的能量是上乙個點的能量+1.所以可以開乙個陣列記錄馬到達每個點消耗的能量。

int next1[8]

[2]=

,,,,

,,,}

;//馬能走的八個方向

struct point //點

;queueq;

//佇列,用於bfs

int arr[

405]

[405];

//記錄每個點耗費的能量

q.push()

;arr[a]

[b]=1;

//將初始位置消耗的能量置為1而不是0,這是乙個小技巧,

//因為bfs需要判斷有沒有走過重複的點,所以置一則可以避免再開乙個陣列去記錄該點有沒有被走過

//因此,輸出時需要輸出arr[x][y]-1.

bool f=0;

while

(!q.

empty()

)); arr[nx]

[ny]

=arr[p.x]

[p.y]+1

;if(nx==x&&ny==y)}if

(f)break;}

cout<[y]-

1<這是道較為麻煩的模擬題,雖然題目叫做「對稱日」,但其實是求回文日期。那麼便可以遍歷年份,依據年份得到乙個日期,該日期是否合法。例如2023年,那麼它對應的回文日期理論是12344321,顯然這個時期不合法(沒有2023年43月21號這個日期),則現在繼續遍歷直到找到乙個合法的日期。而xy對稱日則是增加了年份必須為xyxy形式(形如2020,2121,1212)的限定。

所以該題需要解決的問題便是根據年份求出回文日期,判斷該日期是否合法。

因為資料範圍的原因,所以不能用最長上公升子串行來解(o(n^2)會超時)。當然oi賽制應該還是可以用這個解來騙一些分的(嘻嘻)。那麼需要換一種思路,我們觀察滿足題意的子串行形式,一定為00…0011…11。前面一堆0加後面一堆1。那麼我們便需要找到這個0和1的交界點。我們對0求字首和和對1求字尾和,列舉交界點找出最大的那個。

作為壓軸題,這道題確實有難度。這道題有興趣的可以看我的**自己琢磨一下。後面花時間我講一下。

#include

#include

using

namespace std;

int dp[

2505];

intmain()

sort

(a,a+n)

;int ans1=

0,ans2=0;

for(

int i=

1;i<=

2500

;i++)}

if(f)

else}if

(maxn) cout<<

"inf"

cout

}

記錄藍橋杯校內選拔複習

總體來講,假複習。回顧了筆記和演算法競賽入門的ppt和自己大二第一學期寫的演算法題,但都是大概去理解了下,感覺就像高中考數學似的,去看看概念,然後到考試之後啥都不會。儘管是假複習,但還是有點心得的。三 演算法理解 1 動態規劃 自下而上,大問題分解為小問題,且大小問題有關聯。例題 石子合併,割繩子,...

藍橋杯校園選拔之位平方和

把乙個整數的每個數字都平方後求和,又得到乙個整數,我們稱這個整數為 位平方和。對新得到的整數仍然可以繼續這一運算過程。比如,給定整數為4,則一系列的運算結果為 16,37,58,89,本題的要求是,已知乙個整數x,求第n步的運算結果。資料格式要求 輸入,兩個整數x n,中間以空格分開。表示求x的第n...

藍橋杯校內選拔賽C C 高職組

二項式的係數規律,我國數學家很早就發現了。如 圖1.png 我國南宋數學家楊輝1261年所著的 詳解九章演算法 一書裡就出現了。其排列規律 11 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 ...