Codeforces 351B Jeff and Furik】的更多相关文章

题目链接:http://codeforces.com/problemset/problem/351/B 题意: 给你一个1到n的排列a[i]. Jeff和Furik轮流操作,Jeff先手. Jeff每次会交换a[i]>a[i+1]的两个数. Furik每次有1/2的概率交换a[i]<a[i+1]的两个数,有1/2的概率交换a[i]>a[i+1]的两个数. 当这个排列变成升序时,游戏停止. 问你操作数的期望. 题解: 假设原序列中有t个逆序对. 那么将这个序列变成升序,就是将这t个逆序对一…
B. Jeff and Furik time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Jeff has become friends with Furik. Now these two are going to play one quite amusing game. At the beginning of the game Je…
http://codeforces.com/problemset/problem/351/B 题意:两个人轮流游戏,先手交换相邻两个数,后手先抛硬币,正面就左大右小换,反面就右大左小换,随机找到一对数,直到整个数列上升位置,求最小期望步数. 思路:由于第一个人每次都会减少一对逆序对,而后手会50%减少一对,50%增加一对,我们把两个人凑起来就是: 50%逆序对不变,50%减少2对 f[i]=f[i]*0.5+f[i-2]*0.5+2 算出来就是f[i]=f[i-2]+4,初值:f[0]=0,f[…
题意:给n个数,第一个人选取相邻两个递降的数交换顺序,第二个人一半的概率选取相邻两个递降的数交换顺序,一半的概率选取相邻两个递增的数交换顺序.两个人轮流操作,求整个数列变成递增数列所需交换次数的期望. 题解:首先显然要求逆序对数,记为cnt.想了很多计算概率加组合数等,没算出来= = 后来看了题解找规律,当cnt是奇数时,答案是cnt*2-1,当cnt是偶数时,答案是cnt*2 (自己算一下也能算出来,但是没有完全不知道怎么证明,解法就算了,但是以后知道这种题可以直接推公式了……) 代码: #i…
题意: 两人游戏, J先走. 给出一个1~n的排列, J选择一对相邻数[题意!!~囧], 交换. F接着走, 扔一硬币, 若正面朝上, 随机选择一对降序排列的相邻数, 交换. 若反面朝上, 随机选择一对升序排列的相邻数, 交换. 当数列成为严格升序的时候游戏结束. 求让游戏尽早结束的情况下, 移动次数的期望. 思路: 首先分析游戏结束的方法: 由于是排列, 严格升序就是1~n. J的话..直接按顺序将较小的数交换到目标位置即可. F的话...比较麻烦, 有两种可能, 每种可能都是随机的.....…
首先恋人操作过一轮之后逆序对不会变多,所以设f[i]为把i个逆序对消掉的期望次数,f[i]=0.5f[i-2]+0.5f[i]+2,化简然后递推即可 #include<iostream> #include<cstdio> using namespace std; const int N=3005; int n,m,a[N]; double f[N*N]; int main() { scanf("%d",&n); for(int i=1;i<=n;i…
http://codeforces.com/contest/351/problem/B 题意: 给出一个n的排列 第一个人任选两个相邻数交换位置 第二个人有一半的概率交换相邻的第一个数>第二个数的位置:有一半的概率交换相邻第一个数<第二个数的位置 然后两人轮换 问使序列升序,期望最少操作次数 序列升序即逆序对数为0 dp[i]表示 当前逆序对还剩i对时,先手期望最少操作次数 先手在最优解的情况下一定交换 第一个数>第二个数的位置,即减少1个逆序对 后手等概率增加或减少1个逆序对 dp[i…
D. Jeff and Furik time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Jeff has become friends with Furik. Now these two are going to play one quite amusing game. At the beginning of the game Je…
题目链接:http://codeforces.com/problemset/problem/352/B 题目意思:给出一个长度为n的序列   a1, a2, ..., an(序号i,1 <= i <= n).需要从这个序列中,找出符合这两个条件的数:1.这个数在序列 a1, a2, ..., an 中: 2.该数的所有位置(也就是序号i)构成等差数列.一旦有一个位置不满足(此时和上一个位置所求出的公差就与之前的公差不相等),这个数就不符合条件,不应该输出.找完之后,输出所有满足这两个条件的数的…
题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这个序列尽可能地大,并且能被90除尽. 做这道题目,是多次调试本场比赛的B,完全不成功后回头再做的,一开始什么思路都没有,因为觉得是考纯数学,直接看B......怎么说,很大程度是靠直觉的.只知道,这个序列肯定是这种形式:5xx...0 或者像题目所说的特殊情况:0(不过前提是0的个数不为0).其他就…