ZOJ 3605Find the Marble(dp)
大体意思就是 找出随机选了K个交换后 石子在第i个罐子里的概率最大
也就是可能的总数最大 这样就可以写出递推方程 dp[i][j][k] += dp[i-1][e][k]; (0<e<j&& k!=a[j]&&k!=b[j]) dp[i][j][a[j]]+=dp[i-1][e][b[j]] dp[i][j][b[j]]+=dp[i-1][e][a[j]];
dp[i][j][k]表示选第i次交换时 选的为第j个 而且石子在第K个罐子里的可能 这样有两种可能 1:石子在a[j]或b[j]中 也就是要交换的两个罐头里 那么可能数就交换相加,然后再加别的。
要么是不在 那么就加上上一步的可能总数 。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 100000
#define LL long long
#define INF 0xfffffff
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
LL dp[][][],sum[];
int a[],b[];
int main()
{
int s,g,e,t,i,j,k,n,m;
cin>>t;
while(t--)
{
cin>>n>>m>>k>>s;
memset(dp,,sizeof(dp));
memset(sum,,sizeof(sum));
for(i =; i <= m ;i++)
{
cin>>a[i]>>b[i];
if(a[i]==s)
dp[][i][b[i]] = ;
else if(b[i]==s)
dp[][i][a[i]] = ;
else
dp[][i][s] = ;
}
for(i = ; i<= k ;i++)
for(j = i; j <= m ;j++)
{
for(e = i- ; e < j; e++)
{
if(a[j]!=b[j])
{
dp[i][j][a[j]]+=dp[i-][e][b[j]];
dp[i][j][b[j]]+=dp[i-][e][a[j]];
}
else
dp[i][j][a[j]] += dp[i-][e][a[j]];
for(g = ; g <= n ;g++)
{
if(g==a[j]) continue;
if(g==b[j]) continue;
dp[i][j][g]+=dp[i-][e][g];
}
}
}
LL maxz=;
int ans = s;
for(i = k; i <= m ; i++)
{
for(j = ; j <= n ; j++)
{
sum[j]+=dp[k][i][j];
}
}
for(i = ; i <= n ;i++)
{
if(maxz<sum[i])
{
ans = i;
maxz = sum[i];
}
}
cout<<ans<<endl;
}
return ;
}
ZOJ 3605Find the Marble(dp)的更多相关文章
- ZOJ Problem Set - 3822Domination(DP)
ZOJ Problem Set - 3822Domination(DP) problemCode=3822">题目链接 题目大意: 给你一个n * m的棋盘,每天都在棋盘上面放一颗棋子 ...
- zoj 3537 Cake 区间DP (好题)
题意:切一个凸边行,如果不是凸包直接输出.然后输出最小代价的切割费用,把凸包都切割成三角形. 先判断是否是凸包,然后用三角形优化. dp[i][j]=min(dp[i][j],dp[i][k]+dp[ ...
- ZOJ 3623 Battle Ships DP
B - Battle Ships Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Subm ...
- zoj 2860 四边形优化dp
Breaking Strings Time Limit: 2 Seconds Memory Limit: 65536 KB A certain string-processing lan ...
- Problem Arrangement ZOJ - 3777(状压dp + 期望)
ZOJ - 3777 就是一个入门状压dp期望 dp[i][j] 当前状态为i,分数为j时的情况数然后看代码 有注释 #include <iostream> #include <cs ...
- ZOJ 3306 状压dp
转自:http://blog.csdn.net/a497406594/article/details/38442893 Kill the Monsters Time Limit: 7 Seconds ...
- [ACM] ZOJ 3725 Painting Storages (DP计数+组合)
Painting Storages Time Limit: 2 Seconds Memory Limit: 65536 KB There is a straight highway with ...
- zoj 3822(概率dp)
ZOJ Problem Set - 3822 Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Ju ...
- ZOJ 3329 【概率DP】
题意: 给你三个均匀k面筛子. 分别有k1 k2 k3个面,每个面朝上的概率是相等的. 如果第一个筛子出现a第二个筛子出现b第三个筛子出现c那么置零. 否则在当前和加上三个点数之和. 求当前和大于n需 ...
随机推荐
- HDU 5303 Delicious Apples (贪心 枚举 好题)
Delicious Apples Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
O(n)的算法就不说了,这题主要考查的是 O(logn)的算法. 有序数组easy想到使用二分查找解决.这题就是在二分基础上做一些调整.数组仅仅有一次翻转,能够知道原有序递增数组被分成两部分,这俩部分 ...
- vue 自定义 移动端筛选条件
1.创建组件 components/FilterBar/FilterBar.vue <template> <div class="filterbar" :styl ...
- 汝佳大神的紫书上写错了?uva10048
算法竞赛入门经典第二版的365页例题11-5噪音.应该是"之和"换成"取最大值","取最小值"还是取最小值 假设我错了,请大家务必指点小弟 ...
- Orange's_1_win7下搭建环境
工欲善其事,必先利其器. 由于公司电脑工作环境是win7,为了学习于渊的Orange,所以就在windows下配置环境: 1.nasm: nasm汇编 http://www.nasm.us/ ...
- ASP.NET MVC 原理
我出了份卷子做面试题,其中之一就是要求说说ASP.NET MVC的原理.感觉太空泛了,谁能说得准呢? 但是,如果站在我这个面试官立场,面试题好多时并不要求有标准答案,可能也没有什么标准答案,主要是通过 ...
- eclipse 显示行数
在左侧添加断点的 地方右击 选择 Show Line Numbers
- YTU 2979: MathBook类--多态
2979: MathBook类--多态 时间限制: 1 Sec 内存限制: 128 MB 提交: 51 解决: 31 题目描述 Book类将自己的display函数设计为虚函数,从而通过父类指针调 ...
- javascript正则找script标签, link标签里面的src或者 href属性
1. [代码]javascript 简单的search <script(?:(?:\s|.)+?)src=[\"\'](.+?)[\"\'](?!\<)(?:(? ...
- xcode 8.1 (8B62)真机调试配置
1.点击菜单栏中的Xcode->Preferences->Accounts,如图: 点击上图左下角中的“+”号,登陆一个Apple id(前提已经有了一个apple id账号), 2.然后 ...