Sicily 1389. Linear Pachinko
来源:互联网 发布:淘宝达人登录 编辑:程序博客网 时间:2024/05/17 04:18
1389. Linear Pachinko
Constraints
Time Limit: 1 secs, Memory Limit: 32 MB
Description
This problem is inspired by Pachinko, a popular game in Japan. A traditional Pachinko machine is a cross between a vertical pinball machine and a slot machine. The player launches small steel balls to the top of the machine using a plunger as in pinball. A ball drops through a maze of pins that deflect the ball, and eventually the ball either exits at a hole in the bottom and is lost, or lands in one of many gates scattered throughout the machine which reward the player with more balls in varying amounts. Players who collect enough balls can trade them in for prizes.
For the purposes of this problem, a linear Pachinko machine is a sequence of one or more of the following: holes ("."), floor tiles ("_"), walls ("|"), and mountains ("/\"). A wall or mountain will never be adjacent to another wall or mountain. To play the game, a ball is dropped at random over some character within a machine. A ball dropped into a hole falls through. A ball dropped onto a floor tile stops immediately. A ball dropped onto the left side of a mountain rolls to the left across any number of consecutive floor tiles until it falls into a hole, falls off the left end of the machine, or stops by hitting a wall or mountain. A ball dropped onto the right side of a mountain behaves similarly. A ball dropped onto a wall behaves as if it were dropped onto the left or right side of a mountain, with a 50% chance for each. If a ball is dropped at random over the machine, with all starting positions being equally likely, what is the probability that the ball will fall either through a hole or off an end?
For example, consider the following machine, where the numbers just indicate character positions and are not part of the machine itself:
123456789
/\.|__/\.
The probabilities that a ball will fall through a hole or off the end of the machine are as follows, by position: 1=100%, 2=100%, 3=100%, 4=50%, 5=0%, 6=0%, 7=0%, 8=100%, 9=100%. The combined probability for the whole machine is just the average, which is approximately 61.111%.
Input
The input consists of one or more linear Pachinko machines, each 1–79 characters long and on a line by itself, followed by a line containing only "#" that signals the end of the input.
Output
For each machine, compute as accurately as possible the probability that a ball will fall through a hole or off the end when dropped at random, then output a single line containing that percentage truncatedto an integer by dropping any fractional part.
Sample Input
/\.|__/\._._/\_|.__/\./\_...___./\._/\__|.|_|.|_|.|_____|_____#
Sample Output
61531000100505310
比较水的模拟题,注意下特殊情况就好,0s:
#include <stdio.h>#include <string.h>char a[85];int calculate(char dir, int pos) { if (pos == 0 && dir == 'l') return 1;//注意直接从边缘滚下也算成功的,下同 else if (pos == (int)strlen(a) - 1 && dir == 'r') return 1; else if (dir == 'l') { for (int i = pos - 1; i >= 0; i--) { if (a[i] == '.') return 1; else if (a[i] == '\\' || a[i] == '|') return 0; } return 1;//当循环结束的时候,说明都是'_',那么最后是从边缘滚下去了,下同 } else if (dir == 'r') { for (int i = pos + 1; i < (int)strlen(a); i++) { if (a[i] == '.') return 1; else if (a[i] == '|' || a[i] == '/') return 0; } return 1;// }}int main() { while (gets(a) && a[0] != '#') { float sum = 0; for (int i = 0; i < (int)strlen(a); i++) { if (a[i] == '.') sum += 1; else if (a[i] == '_') sum += 0; else if (a[i] == '/') sum += calculate('l', i); else if (a[i] == '\\') sum += calculate('r', i); else if (a[i] == '|') sum += 0.5 * calculate('l', i) + 0.5 * calculate('r', i); } int int_sum = sum * 100 / (float)strlen(a);//去尾 printf("%d\n", int_sum); memset(a, '\0', sizeof(a)); } return 0;}
- Sicily 1389. Linear Pachinko
- Linear Pachinko
- POJ3095 Linear Pachinko
- POJ 3095 Linear Pachinko 笔记
- POJ 3095 Linear Pachinko 字符串模拟
- poj 3095 Linear Pachinko 模拟水题
- BZOJ 4079 [Wf2014] Pachinko
- Linear regression
- Linear Road
- linear regression
- Linear combination
- linear regression
- linear-gradient
- linear regression
- Linear Regression
- linear regression
- Linear Decoders
- linear regression
- 解决校园网无法使用vpngate
- 数字升序
- JAX-WS简单例子
- HDU 5195 线段树
- JavaScript异步编程 回调函数
- Sicily 1389. Linear Pachinko
- 第四周项目一---三角类函数构造4
- Best time to buy and sell stock III --- LeetCode
- C++虚函数及虚函数表解析
- 拓扑排序+线段树(hdu5195)
- LeetCode Best Time to Buy and Sell Stock
- DB2的sql函数
- Android之ViewPager(实现应用程序只启动一次引导界面 )(四)
- java加密技术-双向加密