ZOJ 3757 Alice and Bob and Cue Sports(模拟)
题意 : 玩台球。Alice 和 Bob,一共可以进行m次,Alice 先打。有一个白球和n个标有不同标号的球,称目标球为当前在桌子上的除了白球以外的数值最小的球,默认白球的标号为0。如果白球落入洞中,要把白球拿出来放在桌子上,如果是其他的球就不拿哪怕是犯规打进去的。每打一局(每一局代表每人打一杆)时当发生以下三种行为时算是犯规,会将相应的罚分加给对方,自己不减分。
- 白球没有打中任何球。将目标球的数值加到对方的分数上。
- 白球没有入洞且至少打中一个球,一开始没有打中目标球或者一开始同时打中不止一个球。就把一开始打中的球中数值最大的加到对方的分数上。
- 白球入洞且至少打中一个球。就把一开始打中的球中数值最大的加到对方的分数上。
如果没有犯规的话,就把洞里所有的球的数值总和加到自己的分数上。但如果是犯了规才把目标球打入洞中,或者是打入洞中的球没有目标球,上边这个数值总和就要再加给对方而不是自己。
思路 : 模拟了好几个小时没模拟出来。。。。。。。其实就是注意细节的问题,该怎么处理什么的。一开始没有把数值总和再加给对方,以为这个是在不犯规的情况下才加的,直接错了好几遍。。。。。。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm> using namespace std; int AP,BP;
int ap[],aq[];
int a[];
int hashh[]; int main()
{
int n,m;
int p,q;
while(scanf("%d %d",&n,&m)!=EOF)
{
AP = ;
BP = ;
memset(hashh,,sizeof (hashh));
for(int i = ; i <= n ; i++)
scanf("%d",&a[i]);
sort(a+ ,a++n);
int k = ;
bool flag = false ;
for(int i = ; i <= m ; i++)
{
bool flag1 = ,flag2 = ;
int maxx = - ;
int sum = ;
scanf("%d",&p);
while(hashh[a[k]])//找当前局的目标球
k++ ;
for(int i = ; i <= p ; i++)
{
scanf("%d",&ap[i]);
maxx = max(maxx,ap[i]) ;
if(ap[i] == a[k] && p == ) flag1 = ; //只有目标球入洞
}
scanf("%d",&q);
for(int i = ; i <= q ; i++)
{
scanf("%d",&aq[i]);
sum += aq[i];
hashh[aq[i]] ++ ;
if(aq[i] == ) flag2 = ;//cue球进洞了
}
if(!flag)
{
if(p == )
{
flag = true ;
BP += a[k];
}
else if(flag2 == && flag1 == )
{
flag = true ;
BP += maxx ;
BP += sum ;
}
else if(flag2 && p)
{
flag = true ;
BP += maxx;
BP += sum;
}
else if(hashh[a[k]] == )
{
flag = true ;
BP += sum;
}
else
AP += sum;
}
else
{
if(p == )
{
flag = false ;
AP += a[k];
}
else if(flag2 == && flag1 == )
{
flag = false ;
AP += maxx ;
AP += sum ;
}
else if(flag2 && p)
{
flag = false ;
AP += maxx;
AP += sum;
}
else if(hashh[a[k]] == )//目标球未进洞
{
flag = false ;
AP += sum;
}
else
BP += sum;
}
}
printf("%d : %d\n",AP,BP);
}
return ;
}
ZOJ 3757 Alice and Bob and Cue Sports(模拟)的更多相关文章
- zoj 3757 Alice and Bob and Cue Sports 模拟
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757 #include<cstdio> #incl ...
- zoj 3757 Alice and Bob and Cue Sports 月赛A 模拟
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757 题意:根据所给的台球规则,按照每次的结果计算最终两人的得分 ...
- ZOJ 3757 Alice and Bod 模拟
上次的ZJU月赛题,规则比较复杂,当时就连题意都没摸清楚,只觉得非常复杂 比完后敲啊敲啊敲,连续WA啊,该反思下自己,没按照题意来设置条件,题目中说了 白球入袋并且... 给对手加分 ,白球未入袋并且 ...
- ZOJ 3529 A Game Between Alice and Bob(博弈论-sg函数)
ZOJ 3529 - A Game Between Alice and Bob Time Limit:5000MS Memory Limit:262144KB 64bit IO For ...
- ZOJ 3529 A Game Between Alice and Bob 博弈好题
A Game Between Alice and Bob Time Limit: 5 Seconds Memory Limit: 262144 KB Alice and Bob play t ...
- 2014 Super Training #6 A Alice and Bob --SG函数
原题: ZOJ 3666 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3666 博弈问题. 题意:给你1~N个位置,N是最 ...
- 2016中国大学生程序设计竞赛 - 网络选拔赛 J. Alice and Bob
Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- bzoj4730: Alice和Bob又在玩游戏
Description Alice和Bob在玩游戏.有n个节点,m条边(0<=m<=n-1),构成若干棵有根树,每棵树的根节点是该连通块内编号最 小的点.Alice和Bob轮流操作,每回合 ...
- Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)
Alice and Bob Time Limit: 1000ms Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...
随机推荐
- SecureCRT相关设置
Technorati 标签: SecureCRT,设置 1. 使用SecureCRT对Linux vim进行颜色设置 Linux的控制台颜色很好设置:Options ->Session Opt ...
- Boost库实现线程池学习及线程实现的异步调用
A.Boost线程池实现 参考自: Boost库实现线程池实例 原理:使用boost的thread_group存储多个线程,使用bind方法将要处理的函数转换成线程可调用的函数进行执行:使用队列存储待 ...
- c++11:copy_n
copy_n: Copies exactly count values from the range beginning at first to the range beginning at resu ...
- svn不能更新也不能提交【svn A conflict in the working copy obstructs the current operation】
SVN不能提交解决方法: 最近发现了svn有一种特殊的冲突,跟svn版本库同步的时候,还提示代码没有不一样的,但是文件图标上又是一个特殊的冲突符号,不是那种大红的冲突符号.更新不了也 ...
- xml操作
一.LINQ to XML 编程基础 1.LINQ to XML类 System.Xml.Linq命名空间含有19个类,下表列出了它们的名称及其描述: 类 描述 XAttribute 表示一个 XML ...
- windows下apache配置https
1.下载带有openSSL的apache安装包,我下载的为apache_2.2.11-win32-x86-openssl-0.9.8i.msi,安装后确认一下bin路径下的openssl.exe,ss ...
- Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...
- JS预览图像将本地图片显示到浏览器上的代码
js代码实现: 从file域获取本地图片url并将本地图片显示到浏览器上. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...
- 两个Activity之间的交互startActivityForResult的使用
代码如下: package com.zzw.teststartintentforrequest; import android.app.Activity; import android.content ...
- CentOS如何分区
安装Linux CentOS时,需要在硬盘建立CentOS使用的分区,在大多情况下,至少需要为CentOS建立以下3个分区. (1)/boot分区(不是必须的):/boot分区用于引导系统,它包含了操 ...