黑龍江農墾科技職業學院喜迎寒假多校聯賽2部分題解

2021-10-17 09:35:50 字數 3844 閱讀 6174

題目不難,但是也要小心點,有乙個點要小心一下,排列出來的數字int 會裝不下,要用long long ,我做的時候就是卡這裡了

(-——-)!!

這題就用乙個全排序就好了,用algorithm標頭檔案裡的next_permutation就好了;

#include

#include

using

namespace std;

long

long n,k,a[12]

,ans,s;

intmain()

while

(next_permutation

(a,a+n));

if(ans==0)

cout <<-1

cout << ans << endl;

return0;

}

這題要判斷一下,直接加是會超時的;

判斷一下bi,bj的跨度,跨度大於n/2就用總和去減從bi到bj的數,反之就從bi開始加到bj結束

#include

#include

using

namespace std;

int a[

1000005];

intmain()

while

(m--

)else

printf

("%d\n"

,s1);}

return0;

}

這題我也不知道是啥,聽大佬說是單調棧,思想

我們要得到乙個刪除幾位後的最小值,那我們要保證刪除後數字的各位從大到小是乙個遞增的數列。

所以我們可以先從最大位開始往後搜,搜到了某一位不滿足遞增數列後把前面小於該位數的數刪除,這樣就可以保證我們得到的數是最小的了

本題的資料較大,所以要用字元陣列存資料

例如: 輸入: 12347897187194164979 10

就是從前面的數中刪除10位;

過程:12347897187194764979從頭開始往後讀直到讀到9後面的7,就刪除8和9;

12347897187194764979然後從7 後面的1開始讀,1<7 再又刪除比1大的;

12347897187194764979

···;

···;

一直直到可刪除次數用完,或者序列單調遞增;

如果是序列已經單調遞增了,且可刪除次數未用完,那就繼續從末尾把刪除次數用完;

因為在乙個陣列中實現刪除操作太麻煩,所以新建乙個陣列存我們要的數列;

還有一點要注意,因為我們這個是乙個數,所以不能出現數字最高位上為0的情況,出現就要刪掉0;

#include

using

namespace std;

const

int n =

20000010

;char a[n]

, b[n]

;int k;

int hh =

1, tt =0;

intmain()

tt -

= k;

while

(b[hh]

=='0'

&& hh < tt)

hh++

;//把頭上的0刪掉

for(

int i = hh; i <= tt; i++

)printf

("%c"

, b[i]);

}

這題只要知道異或運算是怎麼實現的就很容易做了;

二進位制的位上數字相同為0,不同為1;

比如:9: 其二進位制數為1001;

12: 其二進位制數為: 1100;

那麼9和12的異或計算結果=0101 也就是5;

本題給我們乙個數n,求1~n間任意兩個數的異或運算的最大值;

例:100;

將其轉化為二進位制為1100100

那麼必會存在乙個數0011011在1~n內;

所以一定會有最大值11111111

所以該例最大值可以算了,就是比100的二進位制高一位的10000000-1就可以得到答案1111111了;

#include

using

namespace std;

intmain()

這題順著題目思路就可以做,我就不說了,我也是這樣寫的,沒有好的方法分享;

#include

char s[

1005][

1005];

intmain()

else

break

;else

break;}

}}if(flag1==1)

sum+

=ans;

}printf

("%d\n"

,sum)

;return0;

}

同乙個題目,就是i的資料加強了一點;

這是乙個排序的問題;

建乙個結構體,存放資料 和 位置e;

struct proq[

1000005

];

用sort進行排序,有兩方法:1.寫乙個函式2,在結構體內過載運算子

寫函式:

#include

#include

#include

#include

using

namespace std;

struct proq[

1000005];

intcmp

(pro a,pro b)

return

strlen

(a.s)

<

strlen

(b.s);}

intmain()

sort

(q,q+n,cmp)

;for

(int i=

0;i)}

過載小於號:
#include

#include

#include

#include

using

namespace std;

struct pro

return

strlen

(s)<

strlen

(t.s);}

}q[1000005];

intmain()

sort

(q,q+n)

;for

(int i=

0;i)}

j-簽到題

這個就是找陣列內最小值的下標;

#include

using

namespace std;

int a[

10005];

intmain()

結束;

黑龍江農墾科技職業學院喜迎寒假多校聯賽2 題解

j題 比賽開始了清楚姐姐喊了一句 簽到了簽到了 選手們紛紛開始簽到,現在給出n個數字代表選手們簽到所用秒數 請給出第幾個選手最先簽到。同秒數先輸入的算快。不會吧 不會吧 不會有人用牛客不知道清楚姐姐吧 輸入描述 第一行輸入乙個整數n 1 n 10000 第二行輸入n個整數s 0 s 1000 輸出描...

讓科技融入黑龍江農業

時值金秋十月,正是秋收的季節。近日,國家考察了東北三省,指出應大力發展農業科技,努力完善黑龍江農業的機械化和智慧型化,邁向農業現代化的新時代。黑龍江作為農業大省,在偌大的農田中,如果僅憑傳統的人力播種與收割,效率自然是遠遠低於機械化與智慧型化的。那麼,對於實現以大力發展農業科技為中心,黑龍江農業都做...

黑龍江水系

作為乙個程式設計師,一直很是 不正經 專業技術書籍看的不多,倒喜歡經常看一些 課外書 前段時間剛斷斷續續看完了 絲綢之路 一部全新的世界史 感覺受益頗多 從一本歷史書中,學到了很多地理知識 最近在看袁庭棟的 大決戰 遼瀋戰役 看到其中的 三下江南 戰役中的 江 是指 第二松花江 作為乙個從小在黑龍江...