• HDU 4576 Robot


    Robot

    Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)
    Total Submission(s): 2776    Accepted Submission(s): 948


    Problem Description
    Michael has a telecontrol robot. One day he put the robot on a loop with n cells. The cells are numbered from 1 to n clockwise.



    At first the robot is in cell 1. Then Michael uses a remote control to send m commands to the robot. A command will make the robot walk some distance. Unfortunately the direction part on the remote control is broken, so for every command the robot will chose a direction(clockwise or anticlockwise) randomly with equal possibility, and then walk w cells forward.
    Michael wants to know the possibility of the robot stopping in the cell that cell number >= l and <= r after m commands.
     
    Input
    There are multiple test cases. 
    Each test case contains several lines.
    The first line contains four integers: above mentioned n(1≤n≤200) ,m(0≤m≤1,000,000),l,r(1≤l≤r≤n).
    Then m lines follow, each representing a command. A command is a integer w(1≤w≤100) representing the cell length the robot will walk for this command.  
    The input end with n=0,m=0,l=0,r=0. You should not process this test case.
     
    Output
    For each test case in the input, you should output a line with the expected possibility. Output should be round to 4 digits after decimal points.
     
    Sample Input
     
    3 1 1 2
    1
    5 2 4 4
    1
    2
    0 0 0 0
     
    Sample Output
    0.5000
    0.2500
     
    Source
     

     解题:dp。。。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <climits>
     7 #include <vector>
     8 #include <queue>
     9 #include <cstdlib>
    10 #include <string>
    11 #include <set>
    12 #include <stack>
    13 #define LL long long
    14 #define pii pair<int,int>
    15 #define INF 0x3f3f3f3f
    16 using namespace std;
    17 double dp[2][210];
    18 int main() {
    19     int n,m,l,r,tmp,i,cur;
    20     double ans = 0.0;
    21     while(scanf("%d %d %d %d",&n,&m,&l,&r),n||m||l||r){
    22         dp[0][0] = 1;
    23         for(int i = 1; i < n; i++) dp[0][i] = 0;
    24         cur = 0;
    25         while(m--){
    26             scanf("%d",&tmp);
    27             for(i = 0; i < n; i++)
    28                 dp[cur^1][i] = 0.5*dp[cur][(i-tmp+n)%n] + 0.5*dp[cur][(i+tmp)%n];
    29             cur ^= 1;
    30         }
    31         ans = 0;
    32         for(i = l-1; i < r; i++)
    33             ans += dp[cur][i];
    34         printf("%.4f
    ",ans);
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    jQuery Colorpicker Spectrum api 中文 文档 属性 事件 方法
    java使用dbutils工具类实现小程序 管家婆记账软件
    java实现服务端开启多线程处理客户端的上传图片请求
    java 基于tcp客户端服务端发送接收数据
    java基于udp实现键盘录入聊天
    java实现udp发送端和接收端
    java通过读取本地文件获取反射方法参数,执行对象方法
    java通过反射获取私有的构造方法,及反射擦除泛型数据类型约束
    Java反射获取类对象的三种方式
    java使用DBCP连接池创建工具类
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/3949054.html
Copyright © 2020-2023  润新知