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("*****\n");
 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 }
时间: 2024-08-03 08:11:50

hdu 4023 2011上海赛区网络赛C 贪心+模拟的相关文章

hdu 4026 2011上海赛区网络赛F TSP ****

没看过TSP,先mark 1 //4838039 2011-10-27 23:04:15 Accepted 4026 2343MS 31044K 3143 B C++ Geners 2 //状态压缩DP的TSP问题 3 //优先级位运算小于判等 , 还有各种细节各种出错 4 #include <cstdio> 5 #include <cstring> 6 #include <stdlib.h> 7 #define mabs(a) (a>0?a:-(a)) 8 9

hdu 4025 2011上海赛区网络赛E 压缩 ***

直接T了,居然可以这么剪枝 题解链接:点我 1 #include<cstdio> 2 #include<map> 3 #include<cstring> 4 #define ll __int64 5 using namespace std; 6 ll a[23],x[23][5],ans; 7 map<ll,ll>p; 8 void dfs(int d,int n,ll res,int f) 9 { 10 if(d==n){ 11 if(f) p[res]+

hdu 4028 2011上海赛区网络赛H dp+map离散

一开始用搜索直接超时,看题解会的 1 #include<iostream> 2 #include<cstdio> 3 #include<map> 4 #include<cstring> 5 #include<cmath> 6 #include<vector> 7 #include<queue> 8 #include<algorithm> 9 #include<set> 10 #define inf

hdu 4027 2011上海赛区网络赛 线段树 成段平方根 ***

不能直接使用成段增减的那种,因为一段和的平方根不等于平方根的和,直接记录是否为1,是1就不需要更新了 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 #de

hdu 4035 2011成都赛区网络赛E 概率dp ****

太吊了,反正我不会 1 /* 2 HDU 4035 3 4 dp求期望的题. 5 题意: 6 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 7 从结点1出发,开始走,在每个结点i都有3种可能: 8 1.被杀死,回到结点1处(概率为ki) 9 2.找到出口,走出迷宫 (概率为ei) 10 3.和该点相连有m条边,随机走一条 11 求:走出迷宫所要走的边数的期望值. 12 13 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望.E[1]即为所求. 14 15 叶子结点: 16

hdu 4041 2011北京赛区网络赛F 组合数+斯特林数 ***

插板法基础知识 斯特林数见百科 1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 #define LL long long 6 #define eps 1e-7 7 #define MOD 1000000007 8 using namespace std; 9 int c[2001][2001]={1},stir2[1005][1005]={1};

hdu 4033 2011成都赛区网络赛 余弦定理+二分 **

二分边长,判断最后内角和是否为2pi,注意l与r的选取,保证能组成三角形 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 10000

hdu 4031 2011成都赛区网络赛A题 线段树 ***

就是不知道时间该怎么处理,想了好久,看了别人的题解发现原来是暴力,暴力也很巧妙啊,想不出来的那种  -_-! 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

hdu 4036 2011成都赛区网络赛F 模拟 **

为了确保能到达终点,我们需要满足下面两个条件 1.能够到达所有山顶 2.能够在遇到苦土豆时速度大于他 二者的速度可以用能量守恒定律做,苦土豆的坐标可通过三角形相似性来做 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using na