题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757

题意:根据所给的台球规则,按照每次的结果计算最终两人的得分

单纯的模拟题,分支比较多写起来较繁琐

注意区分犯规与进球得分的规则:

只要有犯规行为,都要按照规则给对手加分。无论是否进球。

当进球时,如果有犯规行为,不仅分要加给对手,还要加上犯规惩罚

 #include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 10005
int v[];
int a,b;
bool flag;//碰谁了
bool flag1;//先碰的球ok
bool flag2;//有球进球
bool flag4;//没碰到球
bool flag3;//target
bool flag0;//白球进洞
int _min,_max;
int firsth;//最大的
int vis[maxn];
int low,high; int main()
{
int n,m,i;
flag=true;
while(~scanf("%d%d",&n,&m))
{
flag=true;
a=b=;
for(i=;i<=n;i++)
scanf("%d",&v[i]);
sort(v,v+n);
low=;//high=n;
_min=v[];//_max=v[n];
memset(vis,false,sizeof(vis));
while(m--)
{
int p,q;
scanf("%d",&p);
flag4=false;
if(p!=)
{
if(p==)
{
flag4=true;
}
else
{
flag1=false;
int x;
firsth=;
while(p--)
{
scanf("%d",&x);
if(x>firsth)
firsth=x;
}
}
}
else
{
scanf("%d",&p);
if(p!=_min)
flag1=false;
else
flag1=true;
firsth=p;
}
scanf("%d",&q);//进的球
if(q==)
flag2=false;
else
flag2=true;
int all=;
int y;
flag0=false;
flag3=false;
for(i=;i<q;i++)
{
scanf("%d",&y);
if(y==)
{
flag0=true;//白球进洞
}
if(y==_min)
{
flag3=true;//target
}
all+=y;
vis[y]=true;
}
if(flag4)//没碰到任何球
{
if(flag)
b+=_min;
else
a+=_min;
flag=!flag;
}
else//碰到球了
{
if(flag0)//白球进洞
{
if(flag)b+=firsth+all;
else a+=firsth+all;
flag=!flag;
}
else//白球没进洞
{
if(flag2)//有球进洞
{
if(flag3)//target
{
if(flag1)
{
if(flag)a+=all;
else b+=all;
}
else//没有先碰target进球了
{
if(flag)b+=all+firsth;
else a+=all+firsth;
flag=!flag;
}
}
else
{
if(!flag1)
{
if(flag)b+=firsth;
else a+=firsth;
}
if(flag)b+=all;
else a+=all;
flag=!flag;
}
}
else//没球进洞
{
if(!flag1)
{
if(flag)
b+=firsth;
else a+=firsth;
}
flag=!flag;
}
}
}
if(vis[_min])
{
while(vis[v[low]]&&low<=n)
{
low++;
}
_min=v[low];
}
}
printf("%d : %d\n",a,b);
}
return ;
}

(P.S.写的比较丑陋,分支可以优化)

zoj 3757 Alice and Bob and Cue Sports 月赛A 模拟的更多相关文章

  1. ZOJ 3757 Alice and Bob and Cue Sports(模拟)

    题目链接 题意 : 玩台球.Alice 和 Bob,一共可以进行m次,Alice 先打.有一个白球和n个标有不同标号的球,称目标球为当前在桌子上的除了白球以外的数值最小的球,默认白球的标号为0.如果白 ...

  2. zoj 3757 Alice and Bob and Cue Sports 模拟

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757 #include<cstdio> #incl ...

  3. ZOJ 3757 Alice and Bod 模拟

    上次的ZJU月赛题,规则比较复杂,当时就连题意都没摸清楚,只觉得非常复杂 比完后敲啊敲啊敲,连续WA啊,该反思下自己,没按照题意来设置条件,题目中说了 白球入袋并且... 给对手加分 ,白球未入袋并且 ...

  4. 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 ...

  5. 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 ...

  6. 2014 Super Training #6 A Alice and Bob --SG函数

    原题: ZOJ 3666 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3666 博弈问题. 题意:给你1~N个位置,N是最 ...

  7. 2016中国大学生程序设计竞赛 - 网络选拔赛 J. Alice and Bob

    Alice and Bob Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  8. bzoj4730: Alice和Bob又在玩游戏

    Description Alice和Bob在玩游戏.有n个节点,m条边(0<=m<=n-1),构成若干棵有根树,每棵树的根节点是该连通块内编号最 小的点.Alice和Bob轮流操作,每回合 ...

  9. Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)

    Alice and Bob Time Limit: 1000ms   Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...

随机推荐

  1. AngularJS code converage

    karma-coverage The easiest way is to keep karma-coverage as a devDependency in your package.json. Mo ...

  2. HDU 1114 Piggy-Bank(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题目大意:根据储钱罐的重量,求出里面钱最少有多少.给定储钱罐的初始重量,装硬币后重量,和每个对应 ...

  3. php 连接mysql数据库并显示数据 实例 转载

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  4. [lua]协同式多任务,统筹运用

    -- CPM:关键路径法(Critical Path Method) jobBase = { schedule = function ( self, job, task, ... ) --由具体job ...

  5. 8种CSS清除浮动的方法优缺点分析

    为什么清除CSS浮动这么难? 因为浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让 ...

  6. 或许有一两点你不知的C语言特性

    关键字篇 volatile关键字 鲜为人知的关键字之一volatile,表示变量是'易变的',之所以会有这个关键字,主要是消除编译优化带来的一些问题,看下面的代码 ; int b = a; int c ...

  7. yii1.1.15 accessRules的一个小bug

    public function accessRules() { return array( array( 'allow', 'actions'=>array('ajaxChangeImage', ...

  8. 开启/关闭ubuntu防火墙

    LInux原始的防火墙工具iptables由于过于繁琐,所以ubuntu系统默认提供了一个基于iptable之上的防火墙工具ufw.而UFW支持图形界面操作,只需在命令行运行ufw命令即能看到一系列的 ...

  9. Windows下配置g++的简单方法

    需要下载名为 Cygnus的软件.下载地址: http://www.claremontmckenna.edu/math/ALee/g++/full.exe 安装完成后配好环境变量就可以用gcc, g+ ...

  10. WPF 自定义路由事件

    如何:创建自定义路由事件 首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent ...