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 一樣。
13 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 ...