题目链接: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. LINQ 101——约束、投影、排序

    什么是LINQ:LINQ 是一组 .NET Framework 扩展模块集合,内含语言集成查询.集合以及转换操作.它使用查询的本机语言语法来扩展 C# 和 Visual Basic,并提供利用这些功能 ...

  2. Spring Boot笔记(一)

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  3. ACM HDU 1021 Fibonacci Again

    #include<iostream> using namespace std; int main() { int n; while(cin>>n) { if((n+1)%4== ...

  4. [学习笔记]设计模式之Chain of Responsibility

    为方便读者,本文已添加至索引: 设计模式 学习笔记索引 写在前面 最近时间比较紧,所以发文的速度相对较慢了.但是看到园子里有很多朋友对设计模式感兴趣,我感觉很高兴,能够和大家一起学习这些知识. 之前的 ...

  5. (转)log4j日志级别设置成DEBUG时输出Html代码等问题:

    log4j日志级别设置成DEBUG时输出Html代码等问题: 问题: log4j日志级别设置成DEBUG时会输出很多信息,包括一些Html代码 解决方案: log4j的控制是树形,所以在log4j.p ...

  6. js学习--DOM操作详解大全 前奏(认识DOM)

    一 . 节点属性 DOM 是树型结构,相应的,可以通过一些节点属性来遍历节点树: 方法 说明 nodeName 节点名称,相当于tagName.属性节点返回属性名,文本节点返回#text.nodeNa ...

  7. php 函数 array_slice

    array_slice array_slice -- 从数组中取出一段 <?php$input = array("a", );      // returns "c ...

  8. Docker Machine

    Docker Machine http://dockone.io/article/1485?utm_source=tuicool&utm_medium=referral 本地安装与使用 Doc ...

  9. spring- properties 读取的五种方式

    转至:http://www.cnblogs.com/hafiz/p/5876243.html 方式1.通过context:property-placeholder加载配置文件jdbc.properti ...

  10. [BZOJ 3680] 吊打XXX 【模拟退火】

    题目链接:BZOJ - 3680 题目分析 这道题是SLYZ的神犇把JSOI的平衡点那道题改了一下题面变成了吊打GTY神犇..Orz 第一次写模拟退火,只能照着别人的代码写,我看的是PoPoQQQ神犇 ...