Pk武林盟主(C++)
2011-08-06 11:48
204 查看
#include<iostream>
#include<cmath>
#include<iomanip>
#include<windows.h>
using namespace std;
struct node
{
int hp1;
int ap1;
int hp2;
int ap2;
}seq[1<<16];
int front = 0;
int rear = 0;
void push(node n)
{
seq[rear].hp1 = n.hp1;
seq[rear].ap1 = n.ap1;
seq[rear].hp2 = n.hp2;
seq[rear].ap2 = n.ap2;
rear++;
}
void pop(node &n)
{
n.hp1 = seq[front].hp1;
n.ap1 = seq[front].ap1;
n.hp2 = seq[front].hp2;
n.ap2 = seq[front].ap2;
front++;
}
int main()
{
int floor = 0;
float sum = 0;
int count[1<<15] = {0};
count[0] = 1;
node n,t;
cin>>n.hp1>>n.ap1>>n.hp2>>n.ap2;
if((n.hp1<1||n.hp1>32767)&&(n.ap1<1||n.ap1>32767)&&(n.hp2<1||n.hp2>32767)&&(n.ap2<1||n.ap2>32767))
return 0;
push(n);
while(front!=rear)
{
pop(n);
if(count[floor] == 0)
floor++;
count[floor]--;
if(n.hp1<=0)
;
else if(n.hp2<=0)
{
sum += 1.0/pow(2,(double)floor);
}else
{
count[floor+1] = count[floor+1] + 2;
t.hp1 = n.hp1 - n.ap2;
t.ap1 = n.ap1;
t.hp2 = n.hp2;
t.ap2 = n.ap2;
push(t);
t.hp1 = n.hp1;
t.hp2 = n.hp2 - n.ap1;
push(t);
}
}
cout<<setprecision(4)<<setiosflags(ios::fixed)<<sum<<endl;
return 0;
}
#include<cmath>
#include<iomanip>
#include<windows.h>
using namespace std;
struct node
{
int hp1;
int ap1;
int hp2;
int ap2;
}seq[1<<16];
int front = 0;
int rear = 0;
void push(node n)
{
seq[rear].hp1 = n.hp1;
seq[rear].ap1 = n.ap1;
seq[rear].hp2 = n.hp2;
seq[rear].ap2 = n.ap2;
rear++;
}
void pop(node &n)
{
n.hp1 = seq[front].hp1;
n.ap1 = seq[front].ap1;
n.hp2 = seq[front].hp2;
n.ap2 = seq[front].ap2;
front++;
}
int main()
{
int floor = 0;
float sum = 0;
int count[1<<15] = {0};
count[0] = 1;
node n,t;
cin>>n.hp1>>n.ap1>>n.hp2>>n.ap2;
if((n.hp1<1||n.hp1>32767)&&(n.ap1<1||n.ap1>32767)&&(n.hp2<1||n.hp2>32767)&&(n.ap2<1||n.ap2>32767))
return 0;
push(n);
while(front!=rear)
{
pop(n);
if(count[floor] == 0)
floor++;
count[floor]--;
if(n.hp1<=0)
;
else if(n.hp2<=0)
{
sum += 1.0/pow(2,(double)floor);
}else
{
count[floor+1] = count[floor+1] + 2;
t.hp1 = n.hp1 - n.ap2;
t.ap1 = n.ap1;
t.hp2 = n.hp2;
t.ap2 = n.ap2;
push(t);
t.hp1 = n.hp1;
t.hp2 = n.hp2 - n.ap1;
push(t);
}
}
cout<<setprecision(4)<<setiosflags(ios::fixed)<<sum<<endl;
return 0;
}
相关文章推荐
- HDU 1410 PK武林盟主
- HDU 1410 PK武林盟主【组合数+log优化】
- HDU1410-PK武林盟主
- 一场武林盟主争霸赛-观察者模式PK委托事件技术
- [简单DP] COJ 1123 PK武林盟主
- 创立达摩院,马云是想当武林盟主吗?
- 并查集--武林盟主版
- 关于ARM处理器的华山论剑 首推谁为武林盟主请看分解
- 谁能做Oracle培训界武林盟主?
- hdu 1410PK武林盟主
- 飞信重出江湖,还能圆当年的“武林盟主”梦吗?
- Kotlin学习笔记(一)—基础语法与Java全面PK
- 解决PK_约束重复
- 关于PK的N种解释
- cmp-ProductPK.java
- Google工程师PK微软工程师
- 外行PK solaris8
- Java,C++和Ruby的性能PK(续文)--关于凸包算法(convex hull)的效率
- 男人PK女人
- 盖茨VS.乔布斯:左脑和右脑模式的PK(转)