ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2017沈阳站 M (概率)

2022-07-10 13:05:16  阅读:192  来源: 互联网

标签:概率 const 格子 int up down -- 2017 沈阳站


https://vjudge.net/problem/HDU-6229
题意: N* N的网格,有k个障碍,格子编号从(0,0)到(n-1, n-1), G7人从00开始每一步等概率的走到相邻可走的格子,求在(x,y)格,x+y>=n -1的概率
思路:

  • 题意中有个隐含条件,就是最后在某个格子上的概率是在无限时间后的
  • G7人从之前一个格子走到现在的格子,又可能走回之前的格子,又从之前的格子走回来,所以这题是没法递推的。要换一种方式思考
  • 在无限长的时间后,(x, y)格子有几种方式从周围走来
    如果没有障碍,3x3的格子是下面形式
    3 4 3
    4 5 3
    3 4 3
    以方式数的和做分子分母计算
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false) ,cin.tie(0), cout.tie(0);
//#pragma GCC optimize(3,"Ofast","inline")
#define ll long long
#define PII pair<int, int>
//#define int long long
const int N = 2e5 + 5;
const int M = 1e5 + 5;
const int INF = 0x3f3f3f3f;
const ll LNF = 0x3f3f3f3f3f3f3f3f;
const int mod = 998244353;
const double PI = acos(-1.0);
int dx[5] = {0, 0, 0, 1, -1};
int dy[5] = {0, 1, -1, 0, 0}; 
void solve() {
   int n, k; cin >> n >> k;
  vector<pair<int,int> > a(k);
   	set<PII> vis;
   	for (int i = 0; i < k; i++) {
   		int x, y;
   		cin >> x >> y;
   		vis.insert({x, y});
   		a[i] = {x, y};
   	} 

   int down = 0, up = 0;
   	down = (n - 2) * (n - 2) * 5 + (n - 2) * 4 * 4 + 3 * 4;
   	up = (n - 1) * 2 + (n - 2) * 3 + 4 + n * (n - 1) / 2 * 5 - (n - 2) * 2 - 2;
       
for ( auto i : vis ) {
       for ( int j = 0; j <5; ++ j ) {
           int nx = i.first + dx[j], ny = i.second + dy[j]; 
           if ( nx >= 0 && nx <= n-1 && ny >= 0 && ny <= n-1 ) {
               -- down; if ( nx + ny >= n -1 ) -- up;
               if ( vis.count({nx, ny}) == 0 ){
                   -- down; if ( i.second + i.first >= n - 1) -- up;
               }
           } 
       }

   }
   int d = __gcd(down, up);

   	down /= d, up /= d;
   	 cout << up << "/" << down << '\n';
}
int main() {
   IOS
   int t; cin >> t; int tt = 0;
   while( t -- ) {
       cout << "Case #" << ++tt << ": ";
       solve();
   }
   return 0;    
}

标签:概率,const,格子,int,up,down,--,2017,沈阳站
来源: https://www.cnblogs.com/muscletear/p/16462984.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有