2020 5 26習題訓練三

2022-06-19 17:33:11 字數 2536 閱讀 9690

題意:給乙個陣列,對他重新排序,使其相鄰兩數的差值不斷遞增

題解:給陣列從小到大排序,差值最小的是中間的兩個數,然後再向兩端延伸,能保證差值是增大的

然後再根據n的奇偶性判斷一下

#include#include

#include

#include

using

namespace

std;

int a[100010

];int

main()

sort(a+1,a+1+n);

intfront,back;

if(n&1

)else

while(front>=1||back<=n)

if(back<=n)

back++,front--;

}cout

<

}return0;

}

view code

題意:給陣列,在第x秒可以對陣列中任意元素加2x-1,求使陣列變成非遞減數列的最少秒數

題解:將陣列變成遞增數列,則陣列任意位置的元素都比它前面最大的元素大,所以找前面最大的元素

如果最大的元素比他小不用操作,比它大,求差值,找到所有差值裡最大的,再求所需要的時間

#include#include

#include

#include

using

namespace

std;

int a[100010

];int

main()

maxx=a[1

];

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

if(dff==0

)else}}

}return0;

}

view code

題意:**認為財產大於等於x就是富人,給n個人的財富狀況,**可以從中選人,把這些人的財產平均一下

求最多的富人數

題解:對這n個人的財富狀況進行從大到小的排序,對前i個人的財富值求平均值,若平均值大於等於x,則這i個

人可以變成富人,求最大的i

#include#include

#include

#include

using

namespace

std;

typedef

long

long

ll;ll a[

100010

];bool cmp(int a,int

b) int

main()

sort(a+1,a+1+n,cmp);

if(a[1]//

最大值小於x 沒有富人

cout<

<

}else

}

cout}}

return0;

}

view code

題意:有n個怪物圍成乙個圈,第i個怪物有a[i]滴血,每次射擊是怪物血量減一,死後**使第(i+1)怪物血量減b[i],

若第 (i+1) 個怪物也被炸死,也會對第(i+2)個怪物產生傷害,求使怪物全部死亡的最小射擊數

乙個怪物沒死,即c[i]>0就要補槍,找第乙個射殺的位置,使射擊數最小

#include#include

#include

#include

using

namespace

std;

typedef

long

long

ll;#define maxn 300010ll a[maxn],b[maxn],c[maxn];

intmain()

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

else

if(c[i]>0) sum+=c[i]; //

補槍數

}

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

else

}cout

}return0;

}

view code

題意:給陣列a,b;陣列a中的元素只能包含0,1,-1,a中的元素可以通過aj=aj+ai(1<=i題解:如果a[i]b[i],就要使a[i]變小,判斷a[i]前面有沒有-1

#include#include

#include

#include

using

namespace

std;

int a[100005],b[100005

];int

main()

for(int i=0;i)

for(int i=0;i)

else

if(b[i]0

)

if(a[i]==1

)

if(a[i]==-1

) }

if(flag)

else

}return0;

}

view code

訓練第三週之dp習題

個人感覺做dp題目就是求什麼就設什麼,dp i 陣列就是所求,然後找出子問題,寫出狀態轉移方程就差不多出來了這個題目思路很簡單,就是求子串最大和。但是就是要記錄開頭結尾還有如果相等記錄第乙個,讓我吃盡了苦頭。include include include include using namespac...

訓練3 習題10

題目 problem description 有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?input 輸入資料首先包含乙個整數n,表示測試例項的個數,然後是n行資料,每行包含乙個整數m 1 m 40 表示樓梯的級數。output 對於每個測試例項,請輸...

訓練3 習題16

題目 problem description 在一無限大的二維平面中,我們做如下假設 1 每次只能移動一格 2 不能向後走 假設你的目的地是 向上 那麼你可以向左走,可以向右走,也可以向上走,但是不可以向下走 3 走過的格仔立即塌陷無法再走第二次 求走n步不同的方案數 2種走法只要有一步不一樣,即被...