刷题总结——ball(ssoj)
2024-08-27 02:30:25
题目:
题目背景
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
备注
【样例说明】
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 ;
}
最新文章
- Ionic2系列-将beta升级到RC1
- Linux From Scratch - Version 7.7-systemd (中文)
- 管理node的版本
- HTML5 Web 客户端五种离线存储方式汇总
- 第 20 章 CSS3 前缀和 rem
- Codeforces Round #344 (Div. 2)
- Javascript访问css样式信息
- C#细节忽略的问题:int 与 int?
- [转]MVC模式已死?何不试试MOVE
- 经典面试题: 从输入URL到页面加载的过程发生了什么?
- 爬虫下载City Scape数据
- JavaScript高级程序设计学习(四)之引用类型(续)
- BZOJ 4009: [HNOI2015]接水果
- Python实现进度条功能
- 关于tomcat session机制梳理
- myeclipse项目 不能打开
- 解题10(LongestSubStrBetweenAB)
- Iframe 父页面自动获取子页面的高度
- ipython与sublime调用其shell出现的问题
- pm2 知识点
热门文章
- css实现页面文字不换行、自动换行、强制换行
- FTPClient:enterLocalPassiveMode()方法简单说明
- Oracle 闪回 找回数据的实现方法
- 反射中 invoke方法 getMethod方法 getClass()方法
- Java基础面试题: 份证号码组成规则是前4位是代表省份和地区 编写一个程序,通过身份证号码判断某人是否是武汉人以及其性别。
- Java面向对象基础 ——面试题
- cppoop作业:Inheritance+Composition 關係下的構造和析構
- mysql中的的按小数位截取
- Java AES加密解密工具 -- GUI 、在线传输文件
- Python爬虫系列-Selenium详解