Rikka with Nash Equilibrium

Time Limit: / MS (Java/Others)    Memory Limit: / K (Java/Others)
Total Submission(s): Accepted Submission(s): Problem Description
Nash Equilibrium is an important concept in game theory. Rikka and Yuta are playing a simple matrix game. At the beginning of the game, Rikka shows an n×m integer matrix A. And then Yuta needs to choose an integer in [,n], Rikka needs to choose an integer in [,m]. Let i be Yuta's number and j be Rikka's number, the final score of the game is Ai,j. In the remaining part of this statement, we use (i,j) to denote the strategy of Yuta and Rikka. For example, when n=m= and matrix A is
⎡⎣⎢⎢⎤⎦⎥⎥ If the strategy is (,), the score will be ; if the strategy is (,), the score will be . A pure strategy Nash equilibrium of this game is a strategy (x,y) which satisfies neither Rikka nor Yuta can make the score higher by changing his(her) strategy unilaterally. Formally, (x,y) is a Nash equilibrium if and only if:
{Ax,y≥Ai,y ∀i∈[,n]Ax,y≥Ax,j ∀j∈[,m] In the previous example, there are two pure strategy Nash equilibriums: (,) and (,). To make the game more interesting, Rikka wants to construct a matrix A for this game which satisfies the following conditions:
. Each integer in [,nm] occurs exactly once in A.
. The game has at most one pure strategy Nash equilibriums. Now, Rikka wants you to count the number of matrixes with size n×m which satisfy the conditions. Input
The first line contains a single integer t(≤t≤), the number of the testcases. The first line of each testcase contains three numbers n,m and K(≤n,m≤,≤K≤). The input guarantees that there are at most testcases with max(n,m)>. Output
For each testcase, output a single line with a single number: the answer modulo K. Sample Input Sample Output Source
Multi-University Training Contest Recommend
chendu

从大到小填。每次填进去的数都是要在被管住的里面。
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
#define ll long long
ll dp[][][*];
ll n,m,mod;
ll dfs(ll x,ll y,ll z)
{
if(dp[x][y][z]!=-)
return dp[x][y][z];
ll temp=;
if(x<n)
temp=(temp+(y*(n-x)%mod)*dfs(x+,y,z+))%mod;
if(y<m)
temp=(temp+(x*(m-y)%mod)*dfs(x,y+,z+))%mod;
if(x*y>z)
temp=(temp+(x*y-z)%mod*dfs(x,y,z+))%mod;
return dp[x][y][z]=temp;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{ scanf("%lld%lld%lld",&n,&m,&mod);
memset(dp,-,sizeof dp);
dp[n][m][n*m]=;
ll ans=((n*m)%mod*dfs(,,)%mod);
printf("%lld\n",ans); } return ;
}

找规律看https://www.cnblogs.com/solvit/p/9507207.html

 

hdu6415 记忆化搜索或找规律的更多相关文章

  1. hdu1331&&hdu1579记忆化搜索(DP+DFS)

    这两题是一模一样的``` 题意:给了一系列递推关系,但是由于这些递推很复杂,所以递推起来要花费很长的时间,所以我要编程序在有限的时间内输出答案. w(a, b, c): 如果a,b,c中有一个值小于等 ...

  2. 牛客国庆集训派对Day2 F、平衡二叉树 【构造+记忆化搜索】

    任意门:https://www.nowcoder.com/acm/contest/202/F 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 1048576K,其他语言2097152K6 ...

  3. 记忆化搜索 codevs 2241 排序二叉树

    codevs 2241 排序二叉树 ★   输入文件:bstree.in   输出文件:bstree.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 一个边长为n的正三 ...

  4. UVA1629Cake slicing(记忆化搜索)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51190 紫书P305 题意分析:一个矩形蛋糕上有好多个樱桃,现在要 ...

  5. ZOJ3795 Grouping(强连通分量+缩点+记忆化搜索)

    题目给一张有向图,要把点分组,问最少要几个组使得同组内的任意两点不连通. 首先考虑找出强连通分量缩点后形成DAG,强连通分量内的点肯定各自一组,两个强连通分量的拓扑序能确定的也得各自一组. 能在同一组 ...

  6. LightOJ1417 Forwarding Emails(强连通分量+缩点+记忆化搜索)

    题目大概是,每个人收到信息后会把信息发给他认识的一个人如此下去,问一开始要把信息发送给谁这样看到信息的人数最多. 首先找出图中的SCC并记录每个SCC里面的点数,如果传到一个SCC,那么里面的人都可以 ...

  7. HDU 1142 A Walk Through the Forest(SPFA+记忆化搜索DFS)

    题目链接 题意 :办公室编号为1,家编号为2,问从办公室到家有多少条路径,当然路径要短,从A走到B的条件是,A到家比B到家要远,所以可以从A走向B . 思路 : 先以终点为起点求最短路,然后记忆化搜索 ...

  8. poj 1085 Triangle War 博弈论+记忆化搜索

    思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: #include<ios ...

  9. Codevs_1017_乘积最大_(划分型动态规划/记忆化搜索)

    描述 http://codevs.cn/problem/1017/ 给出一个n位数,在数字中间添加k个乘号,使得最终的乘积最大. 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提 ...

随机推荐

  1. shell编辑器vi的常用命令

    一:翻页 ctrl+u向上翻半页 ctrl+f向上翻一页 ctrl+d 向下翻半页 ctrl+b 向下翻一页 二:移动光标指令 0: 光标移至当前行首 $: 光标移至当前行尾 三:常用插入.删除指令 ...

  2. 移动端开发调试工具神器--Weinre使用方法

    前端开发调试必备: DOM操作断点调试: debugger断点调试: native方法hook(个人暂时还没有试过,不知效果如何): 远程映射本地测试: Weinre移动调试(详细介绍): 像Dom断 ...

  3. SQL*Plus命令

    简介set命令 一般使用SQL PLUS导出数据时一般使用以下参数就可以了. set echo off; -- 不显示脚本中的每个sql命令(缺省为on)set feedback off; -- 禁止 ...

  4. docker17.03.2安装

    之前安装过docker 卸载 yum -y remove docker docker-common docker-selinux docker-engine docker-engine-selinux ...

  5. [C++ Primer Plus] 第11章、使用类(一)程序清单——重载 P408

    程序清单11.4~11.6(运算符重载——添加加法运算符) //1.h class Time { private: int hours; int minutes; public: Time(); Ti ...

  6. 用PIL库进行图像处理

    一.如果系统里没有安装PIL库的,请先到命令提示符输入“pip install pillow”进行安装 二.之后就可以参考以下的代码 from PIL import Image from pylab ...

  7. CenOS 6.4下安装中文输入法

    1.使用root登录 输入:yum install "@Chinese Support" 2.回到桌面设置添加输入法 参考链接:http://www.linuxidc.com/Li ...

  8. Python模块 3

    time模块 在计算中时间共有三种方式: 1.时间戳: 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time())”,返回的是flo ...

  9. Nuget安装包

    Selenium.WebDriver Selenium.WebDriver.ChromeDriver Selenium.Firefox.WebDriver Selenium.WebDriver.IED ...

  10. POJ 3311 Hie with the Pie 【状压DP】

    Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possi ...