zoukankan      html  css  js  c++  java
  • hdu 4023 2011上海赛区网络赛C 贪心+模拟

    以为是贪心,结果不是,2333

    贪心最后对自己绝对有利的情况

    点我

      1 #include<cstdio>
      2 #include<iostream>
      3 #include<algorithm>
      4 #include<cstring>
      5 #include<cmath>
      6 #include<queue>
      7 #include<map>
      8 using namespace std;
      9 #define MOD 1000000007
     10 const int INF=0x3f3f3f3f;
     11 const double eps=1e-5;
     12 typedef long long ll;
     13 #define cl(a) memset(a,0,sizeof(a))
     14 #define ts printf("*****
    ");
     15 const int MAXN=1005;
     16 int n,m,tt;
     17 int a[MAXN];
     18 int main()
     19 {
     20     int i,j,k;
     21     #ifndef ONLINE_JUDGE
     22     freopen("1.in","r",stdin);
     23     #endif
     24     scanf("%d",&tt);
     25     int ca=1;
     26     while(tt--)
     27     {
     28         for(i=1;i<=15;i++)   scanf("%d",a+i);
     29         int st=0,sum[5],a1,a2;  //st记录当前轮到谁了,sum[0]记录的是A的稳定步数,sum[1]记录的是B的稳定步数
     30         cl(sum);
     31         sum[0]+=a[1]*2;
     32         sum[1]+=a[2]*2;
     33         if(a[15]!=0)    //只有一个的时候,谁先放谁的稳定步数会多一步
     34         {
     35             if(a[15]%2==1)
     36             {
     37                 sum[0]++;
     38                 st^=1;
     39             }
     40         }
     41         a1=a[5]+a[6];   //对A有利
     42         a2=a[3]+a[4];   //对B有利
     43         if(a1>a2)
     44         {
     45             int w=a1-a2;
     46             sum[0]+=w/2;    //A只能获得其中一半的稳定步数,B什么都得不到
     47             if(w%2==1)
     48             {
     49                 if(st==0)
     50                 {
     51                     sum[0]++;
     52                 }
     53                 st^=1;
     54             }
     55         }
     56         else if(a2>a1)
     57         {
     58             int w=a2-a1;
     59             sum[1]+=w/2;    //B只能获得其中一半的稳定步数,A什么都得不到
     60             if(w%2==1)
     61             {
     62                 if(st==1)
     63                 {
     64                     sum[1]++;
     65                 }
     66                 st^=1;
     67             }
     68         }
     69         a1=a[12]+a[11]+a[13]+a[14];
     70         st^=a1&1;  //仅仅改变步数
     71         a1=a[7]+a[8];   //对B最不利,B要多走这个
     72         a2=a[9]+a[10];  //对A最不利
     73         if(a1>a2)
     74         {
     75             int w=a1-a2;
     76             sum[0]+=w/2;    //A只能获得其中一半的稳定步数,B什么都得不到
     77             if(w%2==1)
     78             {
     79                 if(st==1)
     80                 {
     81                     sum[0]++;
     82                 }
     83                 st^=1;
     84             }
     85         }
     86         else if(a2>a1)
     87         {
     88             int w=a2-a1;
     89             sum[1]+=w/2;    //B只能获得其中一半的稳定步数,A什么都得不到
     90             if(w%2==1)
     91             {
     92                 if(st==0)
     93                 {
     94                     sum[1]++;
     95                 }
     96                 st^=1;
     97             }
     98         }
     99         printf("Case #%d: ",ca++);
    100         if(sum[0]==sum[1])
    101         {
    102             if(st)puts("Alice");
    103             else puts("Bob");
    104         }
    105         else if(sum[0]>sum[1])
    106             puts("Alice");
    107         else puts("Bob");
    108     }
    109 }
  • 相关阅读:
    #2019120500018-LG 小雨的数字游戏
    假期Noip笔记
    #2019120500016 逆序对与归并排序
    #2019120500015-LG 全排列
    #2019120500014-LG 采药
    #2019120500013-LG 合并果子
    二分与三分
    #2019120500012-LG 小鱼比可爱
    #2019120500011-LG 约瑟夫问题&玩具谜题
    HDU 5738 共线点集
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4690885.html
Copyright © 2011-2022 走看看