程式設計 Week4 作業

2021-10-06 21:23:04 字數 3547 閱讀 9381

題意:

zjm 有 n 個作業,每個作業都有自己的 ddl,如果 zjm 沒有在 ddl 前做完這個作業,那麼老師會扣掉這個作業的全部平時分。

所以 zjm 想知道如何安排做作業的順序,才能盡可能少扣一點分。

請你幫幫他吧!

input

輸入包含t個測試用例。輸入的第一行是單個整數t,為測試用例的數量。

每個測試用例以乙個正整數n開頭(1<=n<=1000),表示作業的數量。

然後兩行。第一行包含n個整數,表示ddl,下一行包含n個整數,表示扣的分。

output

對於每個測試用例,您應該輸出最小的總降低分數,每個測試用例一行。

sample input33

3 3 3

10 5 1

31 3 1

6 2 3

71 4 6 4 2 4 3

3 2 1 7 6 5 4

sample output03

5思路:

對ddl進行降序排序。

從最後一天開始,給最後一天前面的每一天安排要寫的作業。

將列舉到第i天時,將所有ddl=i的作業加入大根堆,大根堆的排序是根據平時分來排序,然後從大根堆裡選出平時分最大的作業安排在當天。

**:

#include

#include

#include

#include

using

namespace std;

struct work

;bool

cmp(work& w1,work& w2)

struct cmp1};

intmain()

if(!q.empty()

)}while

(!q.

empty()

) q.

pop();

return0;

}

題意:

zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。

當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。

請你幫幫他吧!

input:

第一行:n(代表數列中數字的個數) (1≤n≤4000)

接下來的 n 行中,第 i 行有四個數字,分別表示數列 a,b,c,d 中的第 i 個數字(數字不超過 2 的 28 次方)

output:

輸出不同組合的個數。

sampel input:

6-45 22 42 -16

-41 -27 56 30

-36 53 -37 77

-36 30 -75 -46

26 -38 -10 62

-32 -54 -6 45

sample output:

5思路:

列舉a和b數列,將兩數和儲存在ab陣列中,然後將ab陣列公升序排序。

同時列舉c和d的兩數和,計算它的相反數在ab**現多少次用sum來記錄,出現一次相反數的答案,sum++。

然後計算ele在ab**現多少次方法:

通過二分尋找ab[1:indexab]中》=ele第乙個大於ele的值first。

**:

#include

#include

using

namespace std;

int a[

4000

],b[

4000

],c[

4000

],d[

4000];

int ab[

8002000];

int sum=0;

intfindfirst

(int x,

int indexab0)

else l=mid+1;

}return ans;

}int

findlast

(int x,

int indexab0)

else

if(ab[mid]

>x) r=mid-1;

else l=mid+1;

}return ans;

}int

main()

sort

(ab+

1,ab+indexab)

;for

(int i=

0;i)for

(int j=

0;j) cout<}

題意:

tt 是一位重度愛貓人士,每日沉溺於 b 站上的貓咪頻道。

有一天,tt 的好友 zjm 決定交給 tt 乙個難題,如果 tt 能夠解決這個難題,zjm 就會買乙隻可愛貓咪送給 tt。

任務內容是,給定乙個 n 個數的陣列 cat[i],並用這個陣列生成乙個新陣列 ans[i]。新陣列定義為對於任意的 i, j 且 i != j,均有 ans = abs(cat[i] - cat[j]),1 <= i < j <= n。試求出這個新陣列的中位數,中位數即為排序之後 (len+1)/2 位置對應的數字,』/』 為下取整。

tt 非常想得到那只可愛的貓咪,你能幫幫他嗎?

input

多組輸入,每次輸入乙個 n,表示有 n 個數,之後輸入乙個長度為 n 的序列 cat, cat[i] <= 1e9 , 3 <= n <= 1e5

output

輸出新陣列 ans 的中位數

sample input4

1 3 2 4

31 10 2

sample output1

8**:

#include

#include

#include

using

namespace std;

int n;

intsort1

(int p,

int*cat)

//求在陣列ans中的每次

else r = mid -1;

}if(answer ==-1

)continue

;else

}return mc;

}int

main()

}printf

("%d\n"

,res)

;delete

cat;

}return0;

}

程式設計思維與實踐 Week4 作業

a ddl 的恐懼 zjm 有 n 個作業,每個作業都有自己的 ddl,如果 zjm 沒有在 ddl 前做完這個作業,那麼老師會扣掉這個作業的全部平時分。所以 zjm 想知道如何安排做作業的順序,才能盡可能少扣一點分。請你幫幫他吧!input 輸入包含t個測試用例。輸入的第一行是單個整數t,為測試用...

程式設計思維week4 作業題

n 個作業,每個作業都有自己的 ddl,如在ddl之前完不成作業需要扣除相應的分數。求輸入作業安排的最少減分。輸入包含t個測試用例。輸入的第一行是單個整數t,為測試用例的數量。每個測試用例以乙個正整數n開頭 1 n 1000 表示作業的數量。然後兩行。第一行包含n個整數,表示ddl,下一行包含n個整...

程式設計思維與實踐 Week4作業

題目 zjm 有 n 個作業,每個作業都有自己的 ddl,如果 zjm 沒有在 ddl 前做完這個作業,那麼老師會扣掉這個作業的全部平時分。所以 zjm 想知道如何安排做作業的順序,才能盡可能少扣一點分。請你幫幫他吧!input 輸入包含t個測試用例。輸入的第一行是單個整數t,為測試用例的數量。每個...