題解 合併果子 三種方法

2021-07-26 03:42:51 字數 1973 閱讀 6923

博主與合併果子鬥爭許久了,最初接觸到的便是貪心。

於是就有如下雙佇列的方法。

#include #include #include #include #include #include #include #include #include #include #define re return

#define s(a) sizeof(a)

#define maxx(a,b,c) max(max(a,b),c)

#define minx(a,b,c) min(min(a,b),c)

#define up(i,m,n) for(int i=m;i<=n;i++)

#define down(i,m,n) for(int i=n;i>=m;i--)

using namespace std;

const int maxn=30005;

int a[maxn],b[maxn],n;

inline int init()

inline int solve() }

int get()

re tot;

}int main()

cout<

但是,但是,博主昨晚睡覺是yy出了很強的方法,有受堆的思想的影響;

若每次都是取最小的乙個,為什麼不把最小的放在隊尾,每次去最後乙個,放入時用乙個sort不就好了麼

於是#include #include #include #include #include #include #include #include #include #include #define re return

#define clr(a,b) memset(b,a,s(a))

#define s(a) sizeof(a)

#define maxx(a,b,c) max(max(a,b),c)

#define minx(a,b,c) min(min(a,b),c)

#define up(i,m,n) for(int i=m;i<=n;i++)

#define down(i,m,n) for(int i=n;i>=m;i--)

using namespace std;

const int maxn=30005;

int f[maxn],n;

bool cmp(const int &a,const int &b)

void init()

int make()

int push(int x)

int main()

cout<

汗!!!

於是改進,

時間複雜度驟降(log n (不知是否算錯)),大家注重理解;(有讀入優化可以copy走)

#include #include #include #include #include #include #include #include #include #include #define re return

#define s(a) sizeof(a)

#define maxx(a,b,c) max(max(a,b),c)

#define minx(a,b,c) min(min(a,b),c)

#define up(i,m,n) for(int i=m;i<=n;i++)

#define down(i,m,n) for(int i=n;i>=m;i--)

using namespace std;

const int maxn=30005;

int f[maxn],n;

template inline int read(t &x)

while(ch>='0' && ch<='9')

x *= flag;

return 1;

}int make(int x)

{ int t;

t=x;

for(int i=t+1;i<=n;i++)

if(f[i]

合併石子(三種方法)

在乙個操場上一排地擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。請設計乙個程式,計算出將n堆石子合併成一堆的最小得分。每組資料第1行為乙個正整數n 2 n 100 以下n行,每行乙個正整數,小於10000,分別表示第i...

三種方法 2020 11 23

利用連線類,例項化得到連線物件 連線類 連線物件 new 連線類 cmd.executescalar cmd.excutereader 關注其中一條資料 物件名.read 獲取關注列所對應的值 console.writeline 物件名 name while 物件名.read 功能,聚焦下一行資料。...

LeetCode題解兩數之和(三種方法)

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。題目分析 題中會給出乙個nums整數陣列和乙個target值,在陣列中找到2個數之和等於ta...