ZOJ3605-Find the Marble(可能性DP)
2015-07-13 18:45
323 查看
Find the Marble
Time Limit: 2 Seconds
Memory Limit: 65536 KB
Alice and Bob are playing a game. This game is played with several identical pots and one marble. When the game starts, Alice puts the pots in one line and puts the marble in one of the pots. After that, Bob cannot see the inside of the pots. Then Alice
makes a sequence of swappings and Bob guesses which pot the marble is in. In each of the swapping, Alice chooses two different pots and swaps their positions.
Unfortunately, Alice's actions are very fast, so Bob can only catch k ofm swappings and regard these
k swappings as all actions Alice has performed. Now given the initial pot the marble is in, and the sequence of swappings, you are asked to calculate which pot Bob most possibly guesses. You can assume that Bob missed any of the swappings with equal
possibility.
N cases follow.
The first line of each test case contains 4 integers n, m,
k and s(0 < s ≤ n ≤ 50, 0 ≤ k ≤ m ≤ 50), which are the number of pots, the number of swappings Alice makes, the number of swappings Bob catches and index of the initial pot the marble is in. Pots are indexed
from 1 to n. Then m lines follow, each of which contains two integersai and
bi (1 ≤ ai, bi ≤
n), telling the two pots Alice swaps in the i-th swapping.
[/code]
Time Limit: 2 Seconds
Memory Limit: 65536 KB
Alice and Bob are playing a game. This game is played with several identical pots and one marble. When the game starts, Alice puts the pots in one line and puts the marble in one of the pots. After that, Bob cannot see the inside of the pots. Then Alice
makes a sequence of swappings and Bob guesses which pot the marble is in. In each of the swapping, Alice chooses two different pots and swaps their positions.
Unfortunately, Alice's actions are very fast, so Bob can only catch k ofm swappings and regard these
k swappings as all actions Alice has performed. Now given the initial pot the marble is in, and the sequence of swappings, you are asked to calculate which pot Bob most possibly guesses. You can assume that Bob missed any of the swappings with equal
possibility.
Input
There are several test cases in the input file. The first line of the input file contains an integerN (N ≈ 100), thenN cases follow.
The first line of each test case contains 4 integers n, m,
k and s(0 < s ≤ n ≤ 50, 0 ≤ k ≤ m ≤ 50), which are the number of pots, the number of swappings Alice makes, the number of swappings Bob catches and index of the initial pot the marble is in. Pots are indexed
from 1 to n. Then m lines follow, each of which contains two integersai and
bi (1 ≤ ai, bi ≤
n), telling the two pots Alice swaps in the i-th swapping.
Outout
For each test case, output the pot that Bob most possibly guesses. If there is a tie, output the smallest one.Sample Input
3 3 1 1 1 1 2 3 1 0 1 1 2 3 3 2 2 2 3 3 2 1 2
Sample Output
2 1 3
题目大意:N个容器,M次两两交换。当中K次是能够知道的,一開始珠子放在当中一个容器里。问你交换完以后,珠子在哪个容器的概率最大
思路:用DP[m][k] 表示 m次交换,知道了当中的k次,结尾为n的方案数
#include <iostream> #include <cstdio> #include <cstring> #include <vector> using namespace std; typedef long long ll; const int maxn = 60; int n,m,k,s; int A[maxn],B[maxn]; ll dp[maxn][maxn][maxn]; int main(){ int ncase; cin >> ncase; while(ncase--){ scanf("%d%d%d%d",&n,&m,&k,&s); for(int i = 1; i <= m; i++){ scanf("%d%d",&A[i],&B[i]); } memset(dp,0,sizeof dp); dp[0][0][s] = 1; for(int i = 1; i <= m; i++){ dp[i][0][s] = 1; for(int j = 1; j <= i&&j <= k; j++){ dp[i][j][A[i]] = dp[i-1][j-1][B[i]]; dp[i][j][B[i]] = dp[i-1][j-1][A[i]]; for(int d = 1; d <= n; d++){ dp[i][j][d] += dp[i-1][j][d]; if(d!=A[i]&&d!=B[i]){ dp[i][j][d] += dp[i-1][j-1][d]; } } } } int idx = 1; for(int i = 2; i <= n; i++){ if(dp[m][k][i] > dp[m][k][idx]){ idx = i; } } cout<<idx<<endl; } return 0; }
[/code]
相关文章推荐
- 关于setuptools的版本问题
- Search Insert Position
- 依赖倒转原则--针对接口编程
- Hadoop编程实现之HDFS
- html中 让 ul 的多个 li 在一行内显示
- Java-异常总结
- easyui window refresh 刷新两次解决办法
- 事情各大厂商在战场上布局
- 页面自动刷新
- KMP算法实现
- 宽度优先搜索练习(二)
- XML文件操作类--创建XML文件
- C与C++中定义结构体的不同方式
- 【数据可视化】复杂高维多元数据的可视化
- java 基础知识及Servlet基础
- 系统升级
- Linux huge Page
- 对继承的浅理解
- css3 背景记
- 您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧