码迷,mamicode.com
首页 > 其他好文 > 详细

877C

时间:2017-10-24 11:22:22      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:opened   时间   closed   names   can   print   using   view   dfs   

构造

想了好长时间。。。

答案是n+n/2

我们这么想,先把偶数位置炸一遍,所有坦克都在奇数位置,然后再把奇数炸一遍,坦克都到偶数去了,然后再炸一次偶数就都炸掉了。。。

好巧妙啊 奇偶讨论很重要

技术分享
#include<cstdio>
#include<cmath>
using namespace std;
const int N = 1005;
int n, m;
double dp[N][N], a[N][N][3];
double dfs(int x, int y)
{
    if(x == n && y == m) return 0.0;
    if(x > n || y > m) return 0.0;
    if(fabs(1.0 - a[x][y][0]) < 1e-8) return 0.0;
    if(dp[x][y] >= 0.0) return dp[x][y];
    dp[x][y] = dfs(x, y + 1) * a[x][y][1] + dfs(x + 1, y) * a[x][y][2] + 2.0;
    dp[x][y] /= 1.0 - a[x][y][0];
    return dp[x][y]; 
}
int main()
{
    while(scanf("%d%d", &n, &m) != EOF)
    {        
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= m; ++j)    
            {
                dp[i][j] = -1.0;
                for(int k = 0; k < 3; ++k) scanf("%lf", &a[i][j][k]);
            }
        printf("%.3f\n", dfs(1, 1));        
    }    
    return 0;
}
View Code

 

877C

标签:opened   时间   closed   names   can   print   using   view   dfs   

原文地址:http://www.cnblogs.com/19992147orz/p/7722087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!