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 ...
随机推荐
- 使用CInternetSession CHttpFile下载网页链接地址的文件
思路很清晰,使用CInternetSession创建CHttpFile对象.然后对该对象获取文件信息.进行文件读写操作均可. void DownloadFile(LPCTSTR szURL, LPCT ...
- mac实现jni的demo
今天在看ArrayList 源码时看到了System.arraycopy 这个方法,但是这个方法没有java实现. 后面一通查询查找,才知道 如下图 native是一个java调用c语言来实现的操作的 ...
- VmodCam top verilog
`timescale 1ns / 1ps /////////////////////////////////////////////////////////////////////////////// ...
- JQuery之proxy实现绑定代理
在javascript中,this指代的对象时常会变化,这会造成程序,混乱,一般做法就是先将this保存在一个变量中,就不怕她变了,我们先看一个小例子 var A = function(){ this ...
- Windows7系统禁用USB和启用USB方法
被迫装了XX软件之后,无线网络和USB都被禁用了,XX软件还不能被卸载.只能用PE进去时候把XX软件安装目录进行删除,但是删除之后还是不能识别U盘,从网上找到办法一看是注册表的项被修改了. 注册表项为 ...
- 二,WPF的布局
所有WPF布局窗口都派生自System.WIndows.Controls.Panel抽象类的面板. 不能在布局容器中放置字符串内容,而是需要一个继承自UIElement的类对字符串进行包装,如Text ...
- Thinkphp常用的方法和技巧(转)
2012年09月26日 Thinkphp 里一些常用方法和技巧的整理,包括常用的快捷键以及在程序开发时用到的一些实用方法,关于快捷键用得不是很熟练,总之,掌握这些方法和技巧,对于我们开发 thinkp ...
- mysql简单操作一
MySQL的一些简单管理: 启动MySQL服务: sudo start mysql 停止MySQL服务: sudo stop mysql 修改 MySQL 的管理员密码: sudo mysqladmi ...
- IOS键盘样式风格有关设置
一.键盘风格 UIKit框架支持8种风格键盘. typedef enum { UIKeyboardTypeDefault, // 默认键盘:支持所有字符 UIKey ...
- Entity Framework(一) 映射
ADO.NET Entity Framework通过Modeel First和DataBase First,提供了几个把数据库表映射到对象上的曾.通过Database First,可以从一个数据库架构 ...