洛谷P1193 洛谷團隊訓練VS傳統團隊訓練

2022-05-08 02:30:09 字數 3551 閱讀 6429

題目背景

「在中學的資訊學教育領域,洛谷無疑是乙個相當受歡迎的輔助**。同時有百餘所學校正在通過洛谷進行資訊學競賽(以後簡稱oi)的教育。洛谷之所以如此受歡迎,是因為洛谷創新的將oi教育的幾乎每乙個環節都搬到了線上,無論是學校的競賽教練還是學生,均可以僅僅使用這乙個**來進行練習,提公升自己的能力。」

——摘自《廈門中小學教育科學研究》,2023年2月號。

題目描述

xx中學的兩位資訊組的教練正在為學校資訊組是否應當將洛谷作為主要的訓練工具而爭論不休,最後決定採取乙個量化的辦法來決定是否遷移。

該中學的原來訓練方法是,在機房的教師機裡面用cena裝載好測試資料,裝載資料所需要ta時間,每一道題目都要裝載。學生寫好**後,可以跑到教師機上收取程式並進行評測。但由於需要往返的路程,因此每跑一次就要浪費tb時間。所以也允許學生在自己的機子上裝載好測試資料,可以根據自己的需要選擇裝載的題目,這需要花費和在教師機裝載資料一樣的時間ta,但是每次評測花費的時間就減少為tc。此外,該中學可能會用excel記錄各位同學的訓練情況,如果某位同學的某道題的得分高於**裡的記錄,那就會花費td時間將這個成績更新,否則就不必費那個事了,如果之前沒有提交過這道題視為**記錄的程式為0分。

而在洛谷中,只需要將題目和測試資料上傳到洛谷,花費ta時間。每次評測學生只需花費tc時間即可。記錄成績?那是洛谷的事兒,一提交完就幫你整理好了**根本不費時間。

看起來可以省下不少時間吧。。然而,支援傳統訓練方法的教練認為,洛谷並非100%的穩定,在有的情況會無法提供服務,因此首先要將洛谷的耗時除以它的可用度(乙個小於100%的數字a%)並去掉小數點。又因為傳統觀念不易糾正,總是有不信任將題目資料交給洛谷這樣的想法(kkksc03:怪我咯?),因此使用洛谷的耗時還要再加上乙個罰時h以做公平比較。

現在給出該中學的訓練情況,希望你幫兩位教練分析一下到底該如何選擇。

輸入輸出格式

輸入格式:

第一行兩個整數,n與m,代表題目數量與學生數量。

第二行n個整數,p_i,為涉及的題目編號。

第三行m個整數,s_i,為學生的學號。

第四行7個整數,ta,tb,tc,td,a,h,e,前6個數字的意義見題目描述,e如果是1那麼在excel中記錄成績,如果是0則不記錄。

第五行乙個整數r,代表評測數量

接下來r行,評測記錄,每行是pr_i,sr_i,sc_i分別為該次評測的題目號、學號以及成績。

輸出格式:

三行。第一行為傳統方法的的耗時。

第二行為使用洛谷包括罰時在內的耗時。

第三行是結論,如果使用洛谷的時間小於傳統方法的時間,那麼輸出「use luogu!」,不含引號。否則輸出「forget it…」。

輸入輸出樣例

輸入樣例#1:

4 4

501 502 503 504

2 3 5 7

50 30 10 5 93 50 1

10 501 2 10

501 2 80

501 2 70

502 3 0

502 3 0

504 5 100

503 7 0

503 7 0

503 7 0

503 7 10

輸出樣例#1:

480

372

use luogu!

輸入樣例#2:

2 3

101 102

1 2 3

70 60 50 1 80 100 0

6 101 1 100

101 2 100

101 3 100

102 1 100

102 2 100

102 3 100

輸出樣例#2:

500

650

forget it…

說明樣例1解釋

使用傳統方法的話,裝載4道題目需要4*50=200,2號同學和7號同學用教師機需要時分別30*3=90,30*4=120,但是明顯自己裝載cena只需要50+10*3=80,50+10*4=90更優。而3,5同學則使用教師機就好,耗時60,30。2號同學的前兩次評測單調遞增,所以額外花費2*5=10時間記錄,3號同學太弱了都是0分所以沒必要記錄了,5與7各耗費5時間。所以這種情況總時間耗費為200+80+90+60+30+10+5+5=480

使用洛谷的話,裝載題目耗費200,10次評測共耗費10*10=100,考慮穩定性時間為(200+100)/93%=322,所以最後總耗時為322+50=372,所以決定使用洛谷。

【資料範圍】

其中50%資料中,不需要進行成績的excel記錄。

其中50%資料中,題目編號和學號均大於等於0,小於等於1000。

(這兩種情況,可能會重疊)

對於100%的資料,保證0< n,m <=1000

0< ta,tb,tc,td,h < = 10000,r < 100000,0 < = sc_i < = 100,0 < a < = 100,學號和題目號在100000000(8個0)之內。

【題解】

只需要存下某個選手的某道題目的成績和次數,在自己電腦裝載資料還是去教師機評測由兩者的總時間大小比較決定。

然後,我應用了c++的語言優勢map(一種對映)去將(選手編號、題目編號)分別與成績、提交次數對應。

所以說,這題只是一道模擬題,估摸也就普及組第二題難度。

(~不過,這是全網第一篇題解,我還是很高興的。。。~)

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define re register

#define il inline

#define fp(i,a,b) for(register int i=a;i<=b;i++)

#define fq(i,a,b) for(register int i=a;i>=b;i--)

using

namespace

std;

mapt,x;//t用於將題目編號離散化,x用於將學生編號離散化

int n,m,r,ta,tb,tc,td,a,h,e,c,j[2005][2005]={},f[2005][2005]={};

ll ans1=0,ans2=0;//ans1是用傳統團隊訓練的時間,ans2是用洛谷團隊訓練的時間

int s1,s2;

il ll gi()//讀入優化

int main()

fp(i,1,n)

fp(j1,1,m)

//比較在自己電腦裝載資料和去教師機評測的時間,選其小者

ans2=(ll)((ans2+r*tc)/(a/100.0))+h;

printf("%lld\n%lld\n",ans1,ans2);

if(ans1<=ans2) printf("forget it...\n");

else

printf("use luogu!\n");

return

0;}

洛谷p2430 嚴酷的訓練

這個題有乙個很神奇的地方 嚴酷的訓練 傳送門 演算法標籤 顯然01揹包了最近一直在練 他居然沒寫 這個題啊,試了好幾遍沒a 最後發現在第二層迴圈的時候應該是j rqyt p i 而不是j rqyt i 因為時間t要大於的是做這個題所需要的時間 在下面迴圈想到上面沒想到 ac include incl...

洛谷 P2430 嚴酷的訓練

lj的朋友wky是一名神奇的少年,在同齡人之中有著極高的地位。他的老師老王對他的程式水平讚嘆不已,於是下決心培養這名小子。老王的訓練方式很奇怪,他會一口氣讓wky做很多道題,要求他在規定的時間完成。而老王為了讓自己的威信提高,自己也會把這些題都做一遍。wky和老王都有乙個水平值,他們水平值的比值和做...

洛谷 P2430 嚴酷的訓練

lj的朋友wky是一名神奇的少年,在同齡人之中有著極高的地位。他的老師老王對他的程式水平讚嘆不已,於是下決心培養這名小子。老王的訓練方式很奇怪,他會一口氣讓wky做很多道題,要求他在規定的時間完成。而老王為了讓自己的威信提高,自己也會把這些題都做一遍。wky和老王都有乙個水平值,他們水平值的比值和做...