ACM练习之《奥运火炬到福州》

         恩,好吧,今天开始写博客作为学习笔记。。。(第一篇博客啊这可是大笑

    说下起因吧,5月7号一个学长突然打来一个电话让我参加一个安徽省的编程比赛,虽然知道自己很菜但不好意思拒绝学长就当免费出去玩两天啦,哈哈。直到几天后,我才直到这次比赛是要组队的。。。完了,要坑队友 - -。5.11号,接到一个陌生来电,额,原来是队友找上来了。。。经过一番了解……“卧槽,学长你怎么给我找了两个神级队友?”“额,不用紧张,以后我给你找些题做吧”

     就这样,从12号晚上开始我就开始在RQNOJ上找质量为“3星”的题开始做……

     第一道题《PID200/奥运火炬到福州》。

    看到题目给我的第一感觉是和之前没事的时候在hdoj上做的题目差不多啊,应该没什么难度。就开开心心的敲起代码……第一天晚上没多少时间,没做完,就留到了周二的物理课上,没多久便搞定,还模拟了下一题:《PID328/自然地谜语》 , 和去年做过的一道题差不多,用char型数组模拟完。后来突然想到用string类应该更简单啊,无奈string类的东西基本已经忘光,还是等回宿舍复习一下再试。

     回宿舍后赶快过去提交第一题,满怀信心……不过却看到WA60.。百度一下WA是WrongAnswer的缩写。常见的错误原因是数据类型开的不够大导致溢出,然后不得不复习一遍各种整数类型和其长度 - -, 据说double可避免大多数溢出,于是改,提交,错。。。然后将动态数组改成常规数组(因为之前做一道题还自学了二维动态数组,看了别人的答案发现都不用的,毕竟数组容易出问题,后来学长告诉我竞赛题都开最大数组)结果还是WA60。改了几个小时,依旧……终于在翻了好久的题目讨论之后才发现有输入 0 的情况我没考虑 - -。坑啊。再改了会,终于AC了 。。。

代码如下:

/******************************************************
*RQNOJ_PID328/自然地谜语
*******************************************************/
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int  n , m , i ;
    double tili1[18511] , tili2[18511] , A , B , C , D ;
    bool renshu , average , fangcha;
    while(cin >> n >> m )
    {
        if( n==0 && m != 0)
        {
            cout << "can't" << endl;
            continue;
        }
        else if(m==0)
        {
            cout << "can" << endl;
            continue;
        }

        A = B = C = D = 0;
        renshu = average = fangcha = false;

        for (i = 0 ; i < n ; i++)
            cin >> tili1[i];
        for (i = 0 ; i < m ; i++)
            cin >> tili2[i];

        if(n > m)
            renshu = true;

        for (i = 0 ; i < n ; i++)
            A += tili1[i];
        for (i = 0 ; i < m ; i++)
            B += tili2[i];
        A /= n;
        B /= m;
        if (A > B)
            average = true;

        for (i = 0 ; i < n ; i++)
            C += pow((A-tili1[i]),2);
        for (i = 0 ; i < m ; i++)
            D += pow((B-tili2[i]),2);
        C /= n;
        D /= m;
        if (C < D)
            fangcha = true;
        if(renshu && average && fangcha)
            cout << "can" << endl;
        else
            cout << "can't" << endl;
    }
    return 0;
}


另:留下此图以作纪念 - -。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值