P1193 洛谷团队训练VS传统团队训练


原题链接

P2197
题目类型: 普 及 / 提 高 − {\color{yellow} 普及/提高-} /

题目大意

题目太长了,懒得手打,直接粘贴吧
XX中学的两位信息组的教练正在为学校信息组是否应当将洛谷作为主要的训练工具而争论不休,最后决定采取一个量化的办法来决定是否迁移。

该中学的原来训练方法是,在机房的教师机里面用 c e n a cena cena装载好测试数据,装载数据所需要 T a T_a Ta时间,每一道题目都要装载。学生写好代码后,可以跑到教师机上收取程序并进行评测。但由于需要往返的路程,因此每跑一次就要浪费 T b T_b Tb 时间。所以也允许学生在自己的机子上装载好测试数据,可以根据自己的需要选择装载的题目,这需要花费和在教师机装载数据一样的时间 T a T_a Ta ,但是每次评测花费的时间就减少为 T c T_c Tc。此外,该中学可能会用 e x c e l excel excel记录各位同学的训练情况,如果某位同学的某道题的得分高于表格里的记录,那就会花费 T d T_d Td 时间将这个成绩更新,否则就不必费那个事了,如果之前没有提交过这道题视为表格记录的程序为 0 0 0分。
而在洛谷中,只需要将题目和测试数据上传到洛谷,花费 T a T_a Ta 时间。每次评测学生只需花费 T c T_c Tc 时间即可。记录成绩?那是洛谷的事儿,一提交完就帮你整理好了表格根本不费时间。
看起来可以省下不少时间吧。然而,支持传统训练方法的教练认为,洛谷并非 100 % 100\% 100%稳定,在有的情况会无法提供服务,因此首先要将洛谷的耗时除以它的可用度(一个小于 100 % 100\% 100%的数字 A % A\% A%)并去掉小数点。又因为传统观念不易纠正,总是有不信任将题目数据交给洛谷这样的想法( k k k s c 03 kkksc03 kkksc03:怪我咯?),因此使用洛谷的耗时还要再加上一个罚时 H H H以做公平比较。
现在给出该中学的训练情况,希望你帮两位教练分析一下到底该如何选择。
S a m p l e \mathbf{Sample} Sample I n p u t \mathbf{Input} Input

4 4//题目个数和学生个数
501 502 503 504//题目号
2 3 5 7//学生号
50 30 10 5 93 50 1//Ta,Tb,Tc,Td,a,h,e
//其中e为1则要记录分数,e为0就不用记录分数
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

S a m p l e \mathbf{Sample} Sample O u t p u t \mathbf{Output} Output

480//cena成绩
372//luogu成绩
Use Luogu!//如果cena好就输出Forget it...,否则输出Use Luogu!

H i n t & E x p l a i n \mathbf{Hint\&Explain} Hint&Explain
洛谷的用时为:装载题目4*50=200单位时间,评测10*10=100单位时间,除去可信度(200+100)*100/93=322单位时间,加上罚时总共322+50=372单位时间。
而XX中学的用时为:装载题目4*50=200单位时间,评测题目分两类,一类是自己装载,另一类是在老师电脑上评测。 2 2 2号学生, 7 7 7号学生使用自己的电脑测试,用时50+10*3=8050+10*4=90单位时间。而 3 3 3号学生, 5 5 5号学生使用老师的电脑用时30*2=6030*1=30单位时间,加上记录分数4*5=20单位时间,总共200+80+90+60+30+20=480单位时间。

解题思路

这题就是一道妥妥的模拟题啊!题目都写了那么多,你只要按着题目打代码不就轻轻松松
请添加图片描述
吗?真不知道这是怎么变成黄题的
这里有一个细节,就是他的学号和题目号都是 ≤ 100000000 ( 1 e + 8 ) \le100000000(1e+8) 100000000(1e+8)的,所以这里就可以引出语言歧视问题 C++ STL库里面的 m a p map map

上代码

#include<iostream>
#include<map>
using namespace std;

int n,m,sco[1001][1001];
map<int,int> que,stu;
int ta,tb,tc,td,a,h,e;
int s1,s2,test[1001][1001];

int main()
{
    cin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        int x; cin>>x;
        que[x]=i;
    }
    for(int i=1; i<=m; i++)
    {
        int x; cin>>x;
        stu[x]=i;
    }
    cin>>ta>>tb>>tc>>td>>a>>h>>e;
    s1=s2=ta*n;
    int r;
    cin>>r;
    s2+=tc*r;
    while(r--)
    {
        int x,y,z;
        cin>>x>>y>>z;
        test[que[x]][stu[y]]++;
        if(e&&sco[que[x]][stu[y]]<z) s1+=td,sco[que[x]][stu[y]]=z;
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            int own,tea;
            tea=tb*test[i][j];
            own=ta+tc*test[i][j];
            s1+=min(tea,own);
        }
    }
    s2=(s2*100)/a+h;
    cout<<s1<<endl<<s2<<endl;
    if(s1<s2) cout<<"Forget it..."<<endl;
    else cout<<"Use Luogu!"<<endl;
    return 0;
}

完美切题 ∼ \sim

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值