計科院20201011藍橋訓練題解

2021-10-25 17:49:59 字數 3509 閱讀 6730

題目均**於dotcpp

bin巨出的題就是難啊啊啊

小明發現49很有趣,首先,它是個平方數。它可以拆分為4和9,拆分出來的部分也是平方數。169也有這個性質,我們權且稱它們為:拼接平方數。

100可拆分1 00,這有點勉強,我們規定,0 00 000 等都不算平方數。

小明想:還有哪些數字是這樣的呢?

你的任務出現了:找到某個區間的所有拼接平方數。

輸入兩個正整數 a b (a思路:有以下幾點需要注意:

1、首先這個數要滿足是平方數。

2、某個數就拆分成兩個數就行了!!!不會出現拆分成三個數以上的情況

3、所以挨個列舉遍歷即可。

注意 9025這樣的數也算(9 025就是25)

下面是ac**

const

int maxn=

1e6+10;

int a,b;

bool con[maxn]

;bool

judge

(int i)}}

intmain()

return0;

}

w星球的乙個種植園,被分成 m * n 個小格仔(東西方向m行,南北方向n列)。每個格仔裡種了一株合根植物。

這種植物有個特點,它的根可能會沿著南北或東西方向伸展,從而與另乙個格仔的植物合成為一體。

如果我們告訴你哪些小格仔間出現了連根現象,你能說出這個園中一共有多少株合根植物嗎?

輸入第一行,兩個整數m,n,用空格分開,表示格仔的行數、列數(1思路:並查集,不需要搜尋。並查集就行了。

下面是ac** 注意陣列要開到1e6!!!!

const

int maxn=

1000010

;int n,m,k,cnt;

int pre[maxn]

;bool con[maxn]

;set<

int> st;

inline

intid

(int i,

int j)

intfind

(int x)

void

join

(int a,

int b)

void

init()

st.clear()

;}intmain()

rep(i,

1,n)

}int cnt=0;

rep(i,

1,m*n)

printf

("%d\n"

,cnt)

;return0;

}

題目描述

給定乙個長度為 n 的陣列 a = [a1, a2, · · · an ],陣列中有可能有重複出現 的整數。

現在小明要按以下方法將其修改為沒有重複整數的陣列。小明會依次修改 a2,a3,··· ,an。

當修改 ai 時,小明會檢查 ai 是否在 a1 ∼ ai−1 **現過。如果出現過,則 小明會給 ai 加上 1 ;如果新的 ai 仍在之前出現過,小明會持續給 ai 加 1 ,直 到 ai 沒有在 a1 ∼ ai−1 **現過。

當 an 也經過上述修改之後,顯然 a 陣列中就沒有重複的整數了。 現在給定初始的 a 陣列,請你計算出最終的 a 陣列

輸入第一行包含乙個整數 n。 第二行包含n個整數a1,a2,··· ,an

輸出輸出n個整數,依次是最終的a1,a2,··· ,an。

樣例輸入

52 1 1 3 4

樣例輸出

2 1 3 4 5

思路:直接模擬會t 親測。

要用並查集!!!竟然要用並查集!!!

下面是關鍵**。

rep

(i,1

,1000000

) pre[i]

=i;rep

(i,1

,n)

解釋:先把所有的pre i 置 i

然後對於每乙個a[i] 都看看當前的祖先是誰,然後自己就是當前的祖先

然後因為這個已經用過了 就讓當前這個置tp+1為祖先。

挺巧妙的!!!

自己沒想到真的沒想到!!!

下面是ac**

using

namespace std;

const

int maxn=

1e5+10;

int n;

int a[maxn]

;int pre[maxn*10]

;int

find

(int x)

intmain()

rep(i,

1,n)

return0;

}

當敵方的小兵進入到我方防禦塔的範圍內,就會持續受到防禦塔造成的傷害;當然我方英雄也可以對它造成傷害。當小兵的血量降到了 0 或者更低,就會被擊殺。為了獲得經驗,uim 希望在防禦塔將這個小兵殺死之前,親自補刀將其擊殺。

為了簡化問題,我們假設這個小兵有 h 點的生命值。每次防禦塔的攻擊可以給小兵造成 x 點傷害,而你的英雄每次攻擊可以給小兵造成 y 點傷害。你的攻擊速度和防禦塔攻擊速度相同,所以你可以在防禦塔第一次攻擊小兵之前,或者每次防禦塔攻擊之後,選擇是否對小兵進行一次攻擊,當然你也可以選擇不攻擊。

現在想知道,給出這些資訊,判斷英雄是否有辦法將這個小兵擊殺?

輸入每個測試點由多組資料組成。

輸入第一行,包含乙個正整數 t,表示資料組數。

接下來 t 行,每行三個非負整數 h,x,y,其意義已經在題目描述中給出。

輸出輸出 t 行。對於每組資料,如果可以最後將小兵擊殺,輸出 yes 否則輸出 no

樣例輸入

5100 100 1

100 97 1

100 98 1

100 99 1

100 100 0

樣例輸出

nono

yesyes

no思路:

1、先考慮x=0或者y=0或者y>=h的情況 特判

2、否則計算出塔要打m次(還不能讓塔打完 如果整除了要剩一點)

3、然後判斷 人再打m+1次能不能打完h (直接判斷最大的 自己看的題解從1開始加 莫名其妙的真的是

下面是ac**:

using

namespace std;

intmain()

else

if(x==

0||y>=h)

bool flag=

false

; ll num=h/x;

if(h%x==

0) num--;if

(num*x+

(num+1)

*y>=h) flag=

true;if

(flag)

printf

("yes\n");

else

printf

("no\n");

}return0;

}

北郵計院13上機真題

accept 207 submit 852 time limit 1000ms memory limit 65536kb description 請你計算出第x年y月z日是第x年的第幾天。其中,1月1日是第一天,1月2日是第二天,以此類推。計算時請注意閏年的影響。對於非整百年,年數能整除4是閏年,否...

藍橋杯真題訓練 2019 2題

2019第二題 小明用字母 a 對應數字 1,b 對應 2,以此類推,用 z 對應 26。對於 27 以上的數字,小明用兩位或更長位的字串來對應,例如 aa 對應 27,ab 對 應 28,az 對應 52,lq 對應 329。請問 2019 對應的字串是什麼?答案提交 這是一道結果填空的題,你只需...

藍橋杯java訓練題(2)

1.乙個n位的十進位制正整數,如果它的每個位上的數字的n次方的和等於這個數本身,則稱其為花朵數。例如 當n 3時,153就滿足條件,因為1 3 5 3 3 3 153,這樣的數字也被稱為水仙花數 其中,表示乘方,5 3表示5的3次方,也就是立方 當n 4時,1634滿足條件,因為1 4 6 4 3 ...