題目不難,但是也要小心點,有乙個點要小心一下,排列出來的數字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 輸出描...
讓科技融入黑龍江農業
時值金秋十月,正是秋收的季節。近日,國家考察了東北三省,指出應大力發展農業科技,努力完善黑龍江農業的機械化和智慧型化,邁向農業現代化的新時代。黑龍江作為農業大省,在偌大的農田中,如果僅憑傳統的人力播種與收割,效率自然是遠遠低於機械化與智慧型化的。那麼,對於實現以大力發展農業科技為中心,黑龍江農業都做...
黑龍江水系
作為乙個程式設計師,一直很是 不正經 專業技術書籍看的不多,倒喜歡經常看一些 課外書 前段時間剛斷斷續續看完了 絲綢之路 一部全新的世界史 感覺受益頗多 從一本歷史書中,學到了很多地理知識 最近在看袁庭棟的 大決戰 遼瀋戰役 看到其中的 三下江南 戰役中的 江 是指 第二松花江 作為乙個從小在黑龍江...