original version

hackerrank programming version

题目大意是N*N的格子,每个格子一开始有1个跳蚤,每过单位时间跳蚤会等概率向四周跳,问M秒后空格子的期望个数。

题解:

对于每个跳蚤暴力模拟每一秒,算出M秒后它到各个格子的概率最后统计就好了,hackerrank上的版本需要常数优化,比如根据对称性只考虑左上四分之一块矩形.

 #include <bits/stdc++.h>
using namespace std; typedef long long LL;
const int mod = 1e9 + ;
#define MAXN 42
#define MP make_pair
const int INF = 1e9 + ; int n, m;
int s[MAXN][MAXN], tmp[MAXN][MAXN], cnt[MAXN][MAXN];
LL p[MAXN][MAXN];
int dx[] = {, , -, };
int dy[] = {, -, , };
int inv[]; int power(int x, int p)
{
int res = ;
for (; p; p >>= )
{
if (p & ) res = 1LL * res * x % mod;
x = 1LL * x * x % mod;
}
return res;
} void work(int sx, int sy)
{
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
s[i][j] = ;
s[sx][sy] = ; int x, y;
for (int _m = ; _m <= m; ++_m)
{
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
tmp[i][j] = ;
for (int i = ; i <= n; ++i)
{
for (int j = ; j <= n; ++j)
{
for (int d = ; d < ; ++d)
{
x = i + dx[d];
y = j + dy[d];
(tmp[x][y] += 1LL * cnt[i][j] * s[i][j] % mod) %= mod;
}
}
}
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
s[i][j] = tmp[i][j];
}
int t;
for (int i = ; i <= n; ++i)
{
for (int j = ; j <= n; ++j)
{
t = - s[i][j] + mod;
(p[i][j] *= t) %= mod;
(p[n + - i][j] *= t) %= mod;
(p[i][n + - j] *= t) %= mod;
(p[n + - i][n + - j] *= t) %= mod;
}
}
} int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout); inv[] = ;
inv[] = power(, mod - );
inv[] = power(, mod - );
inv[] = power(, mod - ); int T, x, y;
scanf("%d", &T);
while (T--)
{
scanf("%d %d", &n, &m);
for (int i = ; i <= n; ++i)
{
for (int j = ; j <= n; ++j)
{
cnt[i][j] = ;
for (int d = ; d < ; ++d)
{
x = i + dx[d];
y = j + dy[d];
if (x >= && x <= n && y >= && y <= n)
++cnt[i][j];
}
cnt[i][j] = inv[cnt[i][j]];
} }
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
p[i][j] = ;
LL ans = ;
for (int i = ; i <= n / ; ++i)
for (int j = ; j <= n / ; ++j)
work(i, j);
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
ans += p[i][j];
ans %= mod;
cout << ans << endl;
} return ;
}

Flea Circus(Project Euler 213)的更多相关文章

  1. 微信公众平台java开发具体解释(project代码+解析)

    说明: 本次的教程主要是对微信公众平台开发人员模式的解说,网络上非常多类似文章,但非常多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行解说分 ...

  2. 项目启动会(project initiating meeting)与项目开工会(kick-off meeting)区别

    一.项目启动会initiating meeting 召开时间:是启动阶段结束时召开的会议:主要任务:发布项目章程,并任命项目经理,赋予项目经理动用组织资源的权力:注意事项:(1)会议召开前已经对干系人 ...

  3. 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇

    续:软件项目量化管理(CMMI高成熟度)实践经验谈--之概述篇 二.项目管理过程 软件开发项目管理过程,从项目全视角来看,分为售前.售中.售后等三个大的阶段.本文所谈的是售中阶段项目管理过程,在售中阶 ...

  4. PMP十五至尊图(第六版)

    PMP(Project Management Professinoal)项目经理专业资格认证,由美国项目管理学会PMI(Project Management Institute)发起并组织的一种资格认 ...

  5. Project Euler 21 Distinct primes factors( 整数因子和 )

    题意: 记d(n)为n的所有真因数(小于n且整除n的正整数)之和. 如果d(a) = b且d(b) = a,且a ≠ b,那么a和b构成一个亲和数对,a和b被称为亲和数. 例如,220的真因数包括1. ...

  6. HDU2824 The Euler function(欧拉函数)

    题目求φ(a)+φ(a+1)+...+φ(b-1)+φ(b). 用欧拉筛选法O(n)计算出n以内的φ值,存个前缀和即可. φ(p)=p-1(p是质数),小于这个质数且与其互质的个数就是p-1: φ(p ...

  7. 主计划MPS禁止改写项目编号(PROJECT)

    应用 Oracle   Manufacturing Planning 层 Level Function 函数名 Funcgtion Name MRPFSDMS-253 表单名 Form Name MR ...

  8. 2-13. 平均两个有序序列(25)(ZJU_PAT 名单 | 排列 )

    主题链接:http://pat.zju.edu.cn/contests/ds/2-13 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0, A1-AN-1的中位 ...

  9. GitHub看板系统(Project)

    /********************************************************************** * GitHub看板系统(Project) * 说明: ...

随机推荐

  1. tomcat中server.xml配置详解(转载)(三)

     转载自:https://www.cnblogs.com/starhu/p/5599773.html 一. <Engine>元素 每个Service元素只能有一个Engine元素.处理在同 ...

  2. Linux打包解压

    tar tar命令可以用来压缩打包单文件.多个文件.单个目录.多个目录. 常用格式: 单个文件压缩打包: tar czvf my.tar file1 多个文件压缩打包: tar czvf my.tar ...

  3. PagerAdapter刷新问题

    一.PagerAdapter介绍 PagerAdapter简介 ListView 大家应该都很熟悉吧!ListView 一般都需要一个 Adapter 来填充数据,如 ArrayAdapter.Sim ...

  4. 二维纹理 Texture 2D

    Textures bring your Meshes, Particles, and interfaces to life! They are image or movie files that yo ...

  5. 百度地图JS--2

    转载请注明出处 本文为原创 作者:injuer 严禁用于商业用途,仅学习交流 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transiti ...

  6. SQL&EF优化第一篇 各种情况下的性能测试之count函数篇

    测试环境  mssql 08  +win7    数据 30W条 二〇一六年十月二十九日 09:04:43 结论:1>主键> *>可空列    推测未论证: 根据情况优先选择 顺便提 ...

  7. Django中使用haystack进行全文检索时需要注意的坑

    对于haystack的配置什么的我在这里就不必说什么了,毕竟一搜一大把. 直接说重点 1 当你通过继承haystack的views来自定义django 应用的views 时,你要注意heystack ...

  8. Scroller应用:ListView滑动删除

    1.设计思路 在Scroller的应用--滑屏实现中使用Scroller实现滑屏效果,这里使用Scroller与ListView实现相似QQ滑动.然后点击删除功能.设计思路是Item使用Scrolle ...

  9. Win7下更改iTunes备份路径最便捷的方法

    ① 先删除C:\Users\你的用户名\AppData\Roaming\Apple Computer里的 MobileSync文件夹(首次安装iTunes要先运行一次itunes,才有这个文件夹,如果 ...

  10. Springboot读取配置文件的两种方法

    第一种: application.yml配置中的参数: zip: Hello Springboot 方法读取: @RestController public class ControllerTest ...