POJ 3869 Headshot

Headshot

Time Limit: 1000ms

Memory Limit: 65536KB

This problem will be judged on PKU. Original ID: 3869
64-bit integer IO format: %lld      Java class name: Main

You have a revolver gun with a cylinder that has n chambers. Chambers are located in a circle on a cylinder. Each chamber can be empty or can contain a round. One chamber is aligned with the gun‘s barrel. When trigger of the gun is pulled, the gun‘s cylinder rotates, aligning the next chamber with the barrel, hammer strikes the round, making a shot by firing a bullet through the barrel. If the chamber is empty when the hammer strikes it, then there is no shot but just a "click". 
You have found a use for this gun. You are playing Russian Roulette with your friend. Your friend loads rounds into some chambers, randomly rotates the cylinder, aligning a random chamber with a gun‘s barrel, puts the gun to his head and pulls the trigger. You hear "click" and nothing else - the chamber was empty and the gun did not shoot. 
Now it is your turn to put the gun to your head and pull the trigger. You have a choice. You can either pull the trigger right away or you can randomly rotate the gun‘s cylinder and then pull the trigger. What should you choose to maximize the chances of your survival?

Input

The input file contains a single line with a string of n digits "0" and "1" (2 <= n <= 100). This line of digits represents the pattern of rounds that were loaded into the gun‘s chambers. "0" represent an empty chamber, "1" represent a loaded one. In this representation, when cylinder rotates before a shot, the next chamber to the right gets aligned with the barrel for a shot. Since the chambers are actually located on a circle, the first chamber in this string follows the last one. There is at least one "0" in this string.

Output

Write to the output file one of the following words (without quotes):

"SHOOT" - if pulling the trigger right away makes you less likely to be actually shot in the head with the bullet (more likely that the chamber will be empty). 
"ROTATE" - if randomly rotating the cylinder before pulling the trigger makes you less likely to be actually shot in the head with the bullet (more likely that the chamber will be empty). 
"EQUAL" - if both of the above choices are equal in terms of probability of being shot.

Sample Input

Sample Input #1:
0011

Sample Input #2:
0111

Sample Input #3:
000111

Sample Output

Sample Output #1:
EQUAL

Sample Output #2:
ROTATE

Sample Output #3:
SHOOT

Source

Northeastern Europe 2009

解题:英语阅读题。。。。条件概率什么的,意思就是当前是0了,那么后面是00的概率是多少,如果选择旋转,那么旋转得到0的概率又是多少,然后比较概率大小即可

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 const int maxn = 1000;
 5 char str[maxn];
 6 int main() {
 7     while(~scanf("%s",str)) {
 8         int len = strlen(str),a = 0,b = 0,c = 0;
 9         for(int i = 0; i < len; ++i)
10             if(str[i] == ‘0‘) {
11                 if(str[(i+1)%len] == ‘0‘) a++;
12                 else if(str[(i+1)%len] == ‘1‘) b++;
13             } else c++;
14         if(len*a == (len - c)*(a + b)) puts("EQUAL");
15         else if(len*a < (len - c)*(a + b)) puts("ROTATE");
16         else puts("SHOOT");
17     }
18     return 0;
19 }

时间: 2024-08-01 12:35:45

POJ 3869 Headshot的相关文章

poj 3869 Headshot 全概率公式

//poj 3869 //sep9 #include <iostream> using namespace std; char s[128]; int main() { scanf("%s",s); int l=strlen(s); int a=0,b=0,c=0,d=0; for(int i=0;i<l;++i) if(s[i]=='1') ++c; d=l; for(int i=0;i<l;++i) if(s[i]=='0'&&s[(i+1)

POJ - 3186 Treats for the Cows (区间DP)

题目链接:http://poj.org/problem?id=3186 题意:给定一组序列,取n次,每次可以取序列最前面的数或最后面的数,第n次出来就乘n,然后求和的最大值. 题解:用dp[i][j]表示i~j区间和的最大值,然后根据这个状态可以从删前和删后转移过来,推出状态转移方程: dp[i][j]=max(dp[i+1][j]+value[i]*k,dp[i][j-1]+value[j]*k) 1 #include <iostream> 2 #include <algorithm&

POJ 2533 - Longest Ordered Subsequence(最长上升子序列) 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:http://poj.org/problem?id=2533 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., aiK)

POJ——T2271 Guardian of Decency

http://poj.org/problem?id=2771 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5932   Accepted: 2463 Description Frank N. Stein is a very conservative high-school teacher. He wants to take some of his students on an excursion, but he is

POJ——T2446 Chessboard

http://poj.org/problem?id=2446 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 18560   Accepted: 5857 Description Alice and Bob often play games on chessboard. One day, Alice draws a board with size M * N. She wants Bob to use a lot of c

poj 1088 滑雪 DP(dfs的记忆化搜索)

题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 求最大的下滑路径 分析:因为只能从高峰滑到低峰,无后效性,所以每个点都可以找到自己的最长下滑距离(只与自己高度有关).记忆每个点的最长下滑距离,当有另一个点的下滑路径遇到这个点的时候,直接加上这个点的最长下滑距离. dp递推式是,dp[x][y] = max(dp[x][y],dp[x+1][y]+

POJ 1385 计算几何 多边形重心

链接: http://poj.org/problem?id=1385 题意: 给你一个多边形,求它的重心 题解: 模板题,但是不知道为啥我的结果输出的确是-0.00 -0.00 所以我又写了个 if (ans.x == 0) ans.x = 0 感觉好傻逼 代码: 1 #include <map> 2 #include <set> 3 #include <cmath> 4 #include <queue> 5 #include <stack> 6

POJ 1741 Tree(树的点分治,入门题)

Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 21357   Accepted: 7006 Description Give a tree with n vertices,each edge has a length(positive integer less than 1001).Define dist(u,v)=The min distance between node u and v.Give an in

poj 1655 树的重心

Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13178   Accepted: 5565 Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any node from the tree yields a forest: a collection of one or m