Flea Circus(Project Euler 213)
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)的更多相关文章
- 微信公众平台java开发具体解释(project代码+解析)
说明: 本次的教程主要是对微信公众平台开发人员模式的解说,网络上非常多类似文章,但非常多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行解说分 ...
- 项目启动会(project initiating meeting)与项目开工会(kick-off meeting)区别
一.项目启动会initiating meeting 召开时间:是启动阶段结束时召开的会议:主要任务:发布项目章程,并任命项目经理,赋予项目经理动用组织资源的权力:注意事项:(1)会议召开前已经对干系人 ...
- 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇
续:软件项目量化管理(CMMI高成熟度)实践经验谈--之概述篇 二.项目管理过程 软件开发项目管理过程,从项目全视角来看,分为售前.售中.售后等三个大的阶段.本文所谈的是售中阶段项目管理过程,在售中阶 ...
- PMP十五至尊图(第六版)
PMP(Project Management Professinoal)项目经理专业资格认证,由美国项目管理学会PMI(Project Management Institute)发起并组织的一种资格认 ...
- 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. ...
- HDU2824 The Euler function(欧拉函数)
题目求φ(a)+φ(a+1)+...+φ(b-1)+φ(b). 用欧拉筛选法O(n)计算出n以内的φ值,存个前缀和即可. φ(p)=p-1(p是质数),小于这个质数且与其互质的个数就是p-1: φ(p ...
- 主计划MPS禁止改写项目编号(PROJECT)
应用 Oracle Manufacturing Planning 层 Level Function 函数名 Funcgtion Name MRPFSDMS-253 表单名 Form Name MR ...
- 2-13. 平均两个有序序列(25)(ZJU_PAT 名单 | 排列 )
主题链接:http://pat.zju.edu.cn/contests/ds/2-13 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0, A1-AN-1的中位 ...
- GitHub看板系统(Project)
/********************************************************************** * GitHub看板系统(Project) * 说明: ...
随机推荐
- tomcat中server.xml配置详解(转载)(三)
转载自:https://www.cnblogs.com/starhu/p/5599773.html 一. <Engine>元素 每个Service元素只能有一个Engine元素.处理在同 ...
- Linux打包解压
tar tar命令可以用来压缩打包单文件.多个文件.单个目录.多个目录. 常用格式: 单个文件压缩打包: tar czvf my.tar file1 多个文件压缩打包: tar czvf my.tar ...
- PagerAdapter刷新问题
一.PagerAdapter介绍 PagerAdapter简介 ListView 大家应该都很熟悉吧!ListView 一般都需要一个 Adapter 来填充数据,如 ArrayAdapter.Sim ...
- 二维纹理 Texture 2D
Textures bring your Meshes, Particles, and interfaces to life! They are image or movie files that yo ...
- 百度地图JS--2
转载请注明出处 本文为原创 作者:injuer 严禁用于商业用途,仅学习交流 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transiti ...
- SQL&EF优化第一篇 各种情况下的性能测试之count函数篇
测试环境 mssql 08 +win7 数据 30W条 二〇一六年十月二十九日 09:04:43 结论:1>主键> *>可空列 推测未论证: 根据情况优先选择 顺便提 ...
- Django中使用haystack进行全文检索时需要注意的坑
对于haystack的配置什么的我在这里就不必说什么了,毕竟一搜一大把. 直接说重点 1 当你通过继承haystack的views来自定义django 应用的views 时,你要注意heystack ...
- Scroller应用:ListView滑动删除
1.设计思路 在Scroller的应用--滑屏实现中使用Scroller实现滑屏效果,这里使用Scroller与ListView实现相似QQ滑动.然后点击删除功能.设计思路是Item使用Scrolle ...
- Win7下更改iTunes备份路径最便捷的方法
① 先删除C:\Users\你的用户名\AppData\Roaming\Apple Computer里的 MobileSync文件夹(首次安装iTunes要先运行一次itunes,才有这个文件夹,如果 ...
- Springboot读取配置文件的两种方法
第一种: application.yml配置中的参数: zip: Hello Springboot 方法读取: @RestController public class ControllerTest ...