题目:

题目背景

SOURCE:NOIP2015-SHY-9

题目描述

Alice 与 Bob 在玩游戏。他们一共玩了 t 轮游戏。游戏中,他们分别获得了 n 个和 m 个小球。每个球上有一个分数。每个人的得分都为他所获得所有小球分数的乘积,分数小者获胜。问每轮游戏谁会获胜?请输出每轮游戏的胜者。数据保证不会出现平局,且两个人分数差异大于任意一个人分数的 1% 。

输入格式

第一行为两人玩的轮数 t(1≤t≤10)。
每一轮游戏的输入中:
第一行一个整数 n,代表 Alice 获得球的个数。
第二行为 n 个整数 ai,代表 Alice 每个球的分数。
第三行一个整数 m,代表 Bob 获得球的个数。
第四行为 m 个整数 bi,代表 Bob 每个球的分数。

输出格式

输出共 t 行,每行为该轮胜者的名字“Alice”或“Bob”。

样例数据 1

输入  [复制]

 



2 3 4 

1 3 4 5

输出

Alice

备注

【样例说明】
Alice:2 * 3 * 4 = 24
Bob: 1 * 3 * 4 * 5 = 60

【数据范围】
对于 40% 的数据:n,m,ai,bi≤10;
对于 100% 的数据:1≤n,m≤100000;-10000≤ai,bi≤10000。

题解:

由于乘积过大容易想到把乘积转换为加减形式····所以联想到了对每一个乘数取log然后相加比较··

注意判断负数和0的情况

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
inline int R()
{
char c;int f=,i=;
for(c=getchar();(c<''||c>'')&&c!='-';c=getchar());
if(c=='-') c=getchar(),i=-;
for(;c<=''&&c>='';c=getchar()) f=(f<<)+(f<<)+c-'';
return f*i;
}
int T,n,m,cnt1,cnt2;
double tot1,tot2;
inline double Abs(int a)
{
double t=a;
return t<?-t:t;
}
int main()
{
//freopen("a.in","r",stdin);
T=R();double a;
while(T--)
{
bool flag1=false,flag2=false;
tot1=tot2=;
n=R();cnt1=;
for(int i=;i<=n;i++)
{
a=R();if(a<) cnt1++;
else if(a==) flag1=true;
tot1+=log(Abs(a));
}
m=R();cnt2=;
for(int i=;i<=m;i++)
{
a=R();if(a<) cnt2++;
else if(a==) flag2=true;
tot2+=log(Abs(a));
}
if(flag1==true&&cnt2%==) cout<<"Alice"<<endl;
else if(flag1==true&&cnt2%==) cout<<"Bob"<<endl;
else if(flag2==true&&cnt1%==) cout<<"Bob"<<endl;
else if(flag2==true&&cnt1%==) cout<<"Alice"<<endl;
else if(cnt1%==&&cnt2%==) cout<<"Alice"<<endl;
else if(cnt1%==&&cnt2%==) cout<<"Bob"<<endl;
else if(cnt1%==&&cnt2%==)
{
if(tot1<tot2) cout<<"Alice"<<endl;
else cout<<"Bob"<<endl;
}
else if(cnt1%==&&cnt2%==)
{
if(tot1<tot2) cout<<"Bob"<<endl;
else cout<<"Alice"<<endl;
}
}
return ;
}

最新文章

  1. Ionic2系列-将beta升级到RC1
  2. Linux From Scratch - Version 7.7-systemd (中文)
  3. 管理node的版本
  4. HTML5 Web 客户端五种离线存储方式汇总
  5. 第 20 章 CSS3 前缀和 rem
  6. Codeforces Round #344 (Div. 2)
  7. Javascript访问css样式信息
  8. C#细节忽略的问题:int 与 int?
  9. [转]MVC模式已死?何不试试MOVE
  10. 经典面试题: 从输入URL到页面加载的过程发生了什么?
  11. 爬虫下载City Scape数据
  12. JavaScript高级程序设计学习(四)之引用类型(续)
  13. BZOJ 4009: [HNOI2015]接水果
  14. Python实现进度条功能
  15. 关于tomcat session机制梳理
  16. myeclipse项目 不能打开
  17. 解题10(LongestSubStrBetweenAB)
  18. Iframe 父页面自动获取子页面的高度
  19. ipython与sublime调用其shell出现的问题
  20. pm2 知识点

热门文章

  1. css实现页面文字不换行、自动换行、强制换行
  2. FTPClient:enterLocalPassiveMode()方法简单说明
  3. Oracle 闪回 找回数据的实现方法
  4. 反射中 invoke方法 getMethod方法 getClass()方法
  5. Java基础面试题: 份证号码组成规则是前4位是代表省份和地区 编写一个程序,通过身份证号码判断某人是否是武汉人以及其性别。
  6. Java面向对象基础 ——面试题
  7. cppoop作业:Inheritance+Composition 關係下的構造和析構
  8. mysql中的的按小数位截取
  9. Java AES加密解密工具 -- GUI 、在线传输文件
  10. Python爬虫系列-Selenium详解