熱身賽T3(獎學金評定)

2021-10-12 17:31:26 字數 3280 閱讀 8995

zpy 學習非常努力,想要評獎學金,而獎學金評定的一大標準就是績點(gpa)高低。

單個科目的 gpa 的計算公式如下:f(x)=min(5.0,(x−45)×0.1) ,其中 x 表示課程成績,眾所周知當 x<60 時 f(x)=0 。

在評定獎學金時用的是平均學分績點,簡而言之就是以學分為權重的績點。

假設你考了三門課,績點分別為 3.5,4.1,4.2 ,學分分別為 3,5,1 ,那麼最終的平均學分績點為 (3.5×3+4.1×5+4.2×1)/(3+5+1)=3.91 。

同時,在 hdu 存在兩種競賽類加分政策,第一種是學科類競賽加分,第二種是體育與藝術類競賽加分。

對於第一類加分,會直接在你的平均學分績點中加上獎勵績點;假設加分前你的 gpa 為 3.48 ,獎勵了 1.8 的績點,那麼你的最終平均學分績點為 5.28 (雖然學院檔案中說的最高績點是 5.0 封頂,但是實際評獎學金的時候是可以超過 5.0 的)。

第二類加分制度獎勵的不是績點,而是學分額度。具體來說,你可以選擇學分總和小於等於學分額度的若干門課程,將這些課程的成績通過如下公式更改。

hdu 存在新舊兩種公式(分別是改革前和改革後),第乙個是 g(x)=√x ×10 ,第二個是 t(x)=(x−70)×10/34+70 。不難發現第二個公式其實是根據第乙個改良而來的(兩個公式都可以讓你考 36 分就及格,但是第二個公式在大於 70 分時反而會使分數變少,所以 zpy 不會在成績大於等於 70 時使用第二個公式)。

依然假設你考了三門課,成績分別為 81,49,36 ,學分分別為 3,5,1 ,獎勵的學分額度為 5 分。

你可以選擇 1 分和 3 分的兩門課,也可以只選擇 5 分的那門課。為了方便起見,zpy 會優先選擇成績最低的課程,如果有多門課程成績一樣,他會優先選擇學分最少的課程。

如果以第一種公式計算,他最終的成績為 90,49,60 ,如果使用第二種,他的最終成績為 81,49,60 。

已知 zpy 所有課程的成績以及學分、他的第一類加分的獎勵績點、他的第二類加分的學分額度,以及全年級其他同學的最終平均學分績點。他想知道自己在改革前和改革後(也即使用第一種公式和第二種公式時)的年級排名。

第一行乙個整數 t(1≤t≤100) ,表示測試資料組數。接下來包含 t 組測試資料。

對於每組測試資料,第一行輸入兩個整數 n,d(1≤n≤50,0≤d≤24) 和乙個實數 c(0≤c≤1.8),表示 zpy 參加考試的課程數量、第二類加分的學分額度和第一類加分的獎勵績點。

接下來輸入 n 行,每行兩個整數 x,y(0≤x≤100,1≤y≤5) ,表示每門課程的成績和學分。

接下來一行輸入乙個整數 k(1≤k≤100) ,表示全年級除了 zpy 外還有多少同學。

最後一行輸入 k 個實數 ti(0≤ai≤5.0),表示每個人的最終平均學分績點。

對於每組測試資料,輸出兩個數表示改革前和改革後 zpy 的年級排名。

資料保證不會有人的績點和 zpy 一樣。

1

3 5 1.0

81 3

49 5

36 1

45.0 1.0 2.5 1.5

2 3

這道題的題目很長,給人的感覺很難,但是只要耐心的將題讀完並且理解題意,就會發現這道題非常簡單。

計算量很大,對**細節要求比較高。

#include

#include

#include

using

namespace std;

struct stu

ss[55];

bool

cmp(stu a,stu b)

else

}double

gs1(

int a)

//公式1函式,根號中應該為整形

double

gs2(

double a)

//公式2函式

double

jdhs

(double a)

//績點函式 眾所周知,當 x<60 時 f(x)=0

else

return res;

}int

main()

sort

(ss,ss+n,cmp)

;for

(int a=

0;a)//對公式1進行求解

ss[a]

.jd1=

jdhs

(ss[a]

.cj1)

; jdz1+

=ss[a]

.jd1*ss[a]

.xf;

}for

(int a=

0;a)//對公式2進行求解

ss[a]

.jd=

jdhs

(ss[a]

.cj2)

; jdz2+

=ss[a]

.jd*ss[a]

.xf;

}double pjfjd1=

(jdz1/zxf)

+c;double pjfjd2=

(jdz2/zxf)

+c;//coutcin>>xs;

//輸入比較學生人數

double arr;

int pdd=xs+1;

//加上zpy本人,不排除成為第5的可能

int pddd=xs+1;

//加上zpy本人,不排除成為第5的可能

for(

int a=

0;a)//進行比較

if(pjfjd2>arr)

} cout<" "<}}

YCH的模擬賽 T3

暴搜或者字典樹,但是因為輸出所有的方案而不是方案數,不管什麼做法都逃不過輸出,所以都差不多 sol1 記憶化搜尋 當列舉方案時,f i 表示已經把字串的前i個字母都拼好的情況下有多少方案 考慮從第i 1個字元開始到j是乙個給定的單詞 如果有這樣的j的話就可以轉移 然後開乙個vector把每乙個狀態下...

20180711模擬賽T3 聚變

檔名 fusion 題目型別 傳統題 時間限制 3秒 記憶體限制 256mb 編譯優化 無 知名科學家小a在2118年在計算機上實現了模擬聚變的過程。我們將她研究的過程簡化。核子共有26種,可以用a到z共26個字母表示。核子聚變的過程可以用乙個字串描述。按照順序從左到右的順序,假如有兩個相同核子相鄰...

熱身賽T1(這是乙個簽到題)

在一場比賽中,每道題都有乙個提交次數和通過次數,選手可以以此來觀察這道題的難度。小湯認為當且僅當一道題的提交次數大於 k 次,且通過率 通過次數 提交次數 大於等於 50 時,這道題是可做的,否則不可做。現在給出 n 道題的提交次數和通過次數,小湯想問問你有幾題是可做的。第一行乙個整數 t 1 t ...