HAPPY2020暑假訓練前複習

2021-10-07 15:46:10 字數 4553 閱讀 2471

輸出hello world

萬惡之源

全排列輸出

不要用stl的next_permutation,會超時

#include

using

namespace std;

const

int maxn=14;

int dt[maxn]

;int vis[maxn]

;int n;

void

dfs(

int depth)

cout

for(

int i=

1; i<=n;

++i)}}

intmain()

求斐波那契數列(不過比較大到1000)

用陣列來存每一位,模擬進製運算

#include

#include

#include

typedef

long

long ll;

using

namespace std;

int f[

1005][

605]

;void

init()

}while

(f[i]

[len+1]

) len ++

; f[i][0

]= len;}}

intmain()

return0;

}

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

intmain()

;for

(i=0

;i2;i++)if

(b[j]

>=

'0')

if(temp>=10)

else

c[j+1]

=1+'0';}

else

else

}else}}

strcpy

(a, b)

;strcpy

(b, c)

;memset

(c,0

,sizeof

(c));}

int len=

strlen

(b);

for(i=len-

1;i>=

0;i--

)printf

("\n");

}return0;

}

三維迷宮bfs搜就完事了

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn=32;

struct node

start,fin;

char a[maxn]

[maxn]

[maxn]

;bool vis[maxn]

[maxn]

[maxn]

;int dx=

;int dy=

;int dz=

;int l,r,c;

bool flag=

false

;queue q;

void

bfs(

)for

(int i=

0;i<

6;i++)}

}}intmain()

for(

int i=

0;i(a[i]

[j][k]

=='e')}

}} flag=0;

bfs();

if(!flag)

}return0;

}

跳石頭,經典二分題目, noip原題

#include

using

namespace std;

long

long

int a[

50004];

long

long

int d,n,m;

bool

judge

(int x)

if(tot>m)

return0;

else

return1;

}int

main()

a[n+1]

=d;int l=1;

int r=d;

int ans;

while

(l<=r)

else r=mid-1;

} cout<}

#include

#include

#include

#include

using

namespace std;

void

***(

int sum,

bool f)

else

else}}

while

(!q.

empty()

)q.pop()

;}else

else

else}}

while

(!s.

empty()

)s.pop()

;}}int

main()

return0;

}

詳細題解

求最大全1子矩陣的面積

題解

#include

#include

#include

using

namespace std;

const

int maxn =

2007

;int n,m;

int h[maxn]

,s[maxn]

,l[maxn]

,r[maxn]

;int

solve()

//找最左邊

t =0;

for(

int i = m-

1; i >=0;

--i)

//最右邊

int ret =0;

for(

int i =

0; i < m;

++i)

ret =

max(ret,h[i]

*(r[i]

-l[i]+1

));return ret;

}int

main()

res =

max(res,

solve()

);}printf

("%d\n"

,res);}

return0;

}/*4 50 1 1 0 1

0 1 1 1 1

0 0 1 1 0

0 0 1 1 1

*/

#include

#include

#include

#include

int n,m,ans;

int map[

2333][

2333];

int h[

2333][

2333

],sta[

2333

],l[

2333

],r[

2333];

//h[i][j]:第i行第j列元素往上最長的連續1長度

//維護單調非遞減棧

void

init

(int row)

l[j]

= tmp;

sta[

++top]

= j;

}for

(int j =

1;j <= m;j ++)}

intmain()

memset

(h,0

,sizeof

(h))

;for

(int j =

1;j <= m;j ++)}

}ans =0;

for(

int i =

1;i <= n;i ++

)init

(i);

printf

("%d\n"

,ans);}

return0;

}

2020HAUT 暑假新生訓練1 題解

題意 在二維座標系內,給你乙個起點,再給你乙個終點,外加乙個按週期迴圈的干擾因素 風,問你多少天能到達終點。簡單說,每天可以移動乙個單位,且要風力方向移動乙個單位。題解 統計在乙個週期內每天因風力移動的距離 分為兩個方向 和 可以自由移動的次數,當自由移動的次數不小於風力影響後的位置到終點的距離時即...

2020 牛客暑假訓練營補題 (第七場)

暑假還是不能摸魚了,盡量每天補一道題。這裡大部分的補題應該都是參考了大佬的題解,所以如果有大佬看到了自己的解法,請多多包涵。題目意思便是給出幾個數。對於每乙個數n進行乙個判斷,求1 n的平方和是不是乙個平方數。是則輸出一行fake news 不是則輸出nobody knows it better t...

2020 牛客暑假訓練營補題 (第八場)

暑假還是不能摸魚了,盡量每天補一道題。這裡大部分的補題應該都是參考了大佬的題解,所以如果有大佬看到了自己的解法,請多多包涵。這道題的意思是給你乙個n表示接下來給的資料組數。每組資料有a和b,每一輪需要處理一組資料。每一輪能進行以下三種操作的其中一種 什麼也不做 如果其中的a在之前沒有被選擇過,選擇a...