zoukankan      html  css  js  c++  java
  • ZOJ 3757 Alice and Bob and Cue Sports(模拟)

    题目链接

    题意 : 玩台球。Alice 和 Bob,一共可以进行m次,Alice 先打。有一个白球和n个标有不同标号的球,称目标球为当前在桌子上的除了白球以外的数值最小的球,默认白球的标号为0。如果白球落入洞中,要把白球拿出来放在桌子上,如果是其他的球就不拿哪怕是犯规打进去的。每打一局(每一局代表每人打一杆)时当发生以下三种行为时算是犯规,会将相应的罚分加给对方,自己不减分。

    1. 白球没有打中任何球。将目标球的数值加到对方的分数上。
    2. 白球没有入洞且至少打中一个球,一开始没有打中目标球或者一开始同时打中不止一个球。就把一开始打中的球中数值最大的加到对方的分数上。
    3. 白球入洞且至少打中一个球。就把一开始打中的球中数值最大的加到对方的分数上。

    如果没有犯规的话,就把洞里所有的球的数值总和加到自己的分数上。但如果是犯了规才把目标球打入洞中,或者是打入洞中的球没有目标球,上边这个数值总和就要再加给对方而不是自己。

    思路 : 模拟了好几个小时没模拟出来。。。。。。。其实就是注意细节的问题,该怎么处理什么的。一开始没有把数值总和再加给对方,以为这个是在不犯规的情况下才加的,直接错了好几遍。。。。。。

      1 #include <iostream>
      2 #include <stdio.h>
      3 #include <string.h>
      4 #include <algorithm>
      5 
      6 using namespace std;
      7 
      8 int AP,BP;
      9 int ap[100010],aq[100010];
     10 int a[100010];
     11 int hashh[100010];
     12 
     13 int main()
     14 {
     15     int n,m;
     16     int p,q;
     17     while(scanf("%d %d",&n,&m)!=EOF)
     18     {
     19         AP = 0 ;
     20         BP = 0 ;
     21         memset(hashh,0,sizeof (hashh));
     22         for(int i = 1 ; i <= n ; i++)
     23             scanf("%d",&a[i]);
     24         sort(a+1 ,a+1+n);
     25         int k = 1 ;
     26         bool flag = false ;
     27         for(int i = 1 ; i <= m ; i++)
     28         {
     29             bool flag1 = 0 ,flag2 = 0 ;
     30             int maxx = -1 ;
     31             int sum = 0 ;
     32             scanf("%d",&p);
     33             while(hashh[a[k]])//找当前局的目标球
     34                 k++ ;
     35             for(int i = 1 ; i <= p ; i++)
     36             {
     37                 scanf("%d",&ap[i]);
     38                 maxx = max(maxx,ap[i]) ;
     39                 if(ap[i] == a[k] && p == 1 ) flag1 = 1 ; //只有目标球入洞
     40             }
     41             scanf("%d",&q);
     42             for(int i = 1 ; i <= q ; i++)
     43             {
     44                 scanf("%d",&aq[i]);
     45                 sum += aq[i];
     46                 hashh[aq[i]] ++ ;
     47                 if(aq[i] == 0 ) flag2 = 1 ;//cue球进洞了
     48             }
     49             if(!flag)
     50             {
     51                 if(p == 0)
     52                 {
     53                     flag = true ;
     54                     BP += a[k];
     55                 }
     56                 else if(flag2 == 0 && flag1 == 0 )
     57                 {
     58                     flag = true ;
     59                     BP += maxx ;
     60                     BP += sum ;
     61                 }
     62                 else if(flag2 && p)
     63                 {
     64                     flag = true ;
     65                     BP += maxx;
     66                     BP += sum;
     67                 }
     68                 else if(hashh[a[k]] == 0)
     69                 {
     70                     flag = true ;
     71                     BP += sum;
     72                 }
     73                 else
     74                     AP += sum;
     75             }
     76             else
     77             {
     78                 if(p == 0)
     79                 {
     80                     flag = false ;
     81                     AP += a[k];
     82                 }
     83                 else if(flag2 == 0 && flag1 == 0 )
     84                 {
     85                     flag = false ;
     86                     AP += maxx ;
     87                     AP += sum ;
     88                 }
     89                 else if(flag2 && p)
     90                 {
     91                     flag = false ;
     92                     AP += maxx;
     93                     AP += sum;
     94                 }
     95                 else if(hashh[a[k]] == 0)//目标球未进洞
     96                 {
     97                     flag = false ;
     98                     AP += sum;
     99                 }
    100                 else
    101                     BP += sum;
    102             }
    103         }
    104         printf("%d : %d
    ",AP,BP);
    105     }
    106     return 0;
    107 }
    View Code
  • 相关阅读:
    在eclipse中如何在大量项目中查找指定文件
    字体图标使用笔记
    微信扫码显示特效
    Flex 布局教程:实例篇
    Flex 布局教程:语法篇
    12月份前端资源分享
    什么样的技术能活下来?该如何筛选繁复的框架和工具
    web前端知识在乱花渐欲迷人眼的当下,如何分清主次和学习优先级呢?
    2015前端生态发展回顾(转)
    HDU1507 Uncle Tom's Inherited Land*
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3734554.html
Copyright © 2011-2022 走看看