恩,好吧,今天开始写博客作为学习笔记。。。(第一篇博客啊这可是)
说下起因吧,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;
}