【数学】HDU 5753 Permutation Bo

题目链接:

  http://acm.hdu.edu.cn/showproblem.php?pid=5753

题目大意

  两个序列h和c,h为1~n的乱序。h[0]=h[n+1]=0,[A]表示A为真则为1,假为0.

  函数f(h)=(i=1~n)∑ci[hi>hi−1 && hi>hi+1]

  现在给定c的值,求f(h)的期望。

题目思路:

  【数学】

  头尾的概率为1/2,中间的概率为1/3,直接求和。

  

 1 //
 2 //by coolxxx
 3 //
 4 #include<iostream>
 5 #include<algorithm>
 6 #include<string>
 7 #include<iomanip>
 8 #include<memory.h>
 9 #include<time.h>
10 #include<stdio.h>
11 #include<stdlib.h>
12 #include<string.h>
13 //#include<stdbool.h>
14 #include<math.h>
15 #define min(a,b) ((a)<(b)?(a):(b))
16 #define max(a,b) ((a)>(b)?(a):(b))
17 #define abs(a) ((a)>0?(a):(-(a)))
18 #define lowbit(a) (a&(-a))
19 #define sqr(a) ((a)*(a))
20 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
21 #define eps (1e-8)
22 #define J 10000000
23 #define MAX 0x7f7f7f7f
24 #define PI 3.1415926535897
25 #define N 1004
26 using namespace std;
27 typedef long long LL;
28 int cas,cass;
29 int n,m,lll,ans;
30 int c[N];
31 double s;
32 int main()
33 {
34     #ifndef ONLINE_JUDGE
35 //    freopen("1.txt","r",stdin);
36 //    freopen("2.txt","w",stdout);
37     #endif
38     int i,j,l,r,x;
39 //    for(scanf("%d",&cas);cas;cas--)
40 //    for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
41 //    while(~scanf("%s",s))
42     while(~scanf("%d",&n))
43     {
44         s=0;
45         for(i=1;i<=n;i++)
46             scanf("%d",&c[i]);
47         s+=(c[1]+c[n])/2.0;
48         for(i=2;i<n;i++)
49             s+=c[i]/3.0;
50         printf("%lf\n",s);
51     }
52     return 0;
53 }
54 /*
55 //
56
57 //
58 */

时间: 2024-12-05 14:36:09

【数学】HDU 5753 Permutation Bo的相关文章

hdu 5753 Permutation Bo

这里是一个比较简单的问题:考虑每个数对和的贡献.先考虑数列两端的值,两端的摆放的值总计有2种,比如左端:0,大,小:0,小,大:有1/2的贡献度.右端同理. 中间的书总计有6种可能.小,中,大.其中有两种对答案有贡献,即1/3的贡献度.加和计算可得到答案. Permutation Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s):

HDU5753 Permutation Bo(2016多校训练)

Permutation Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 777    Accepted Submission(s): 468Special Judge Problem Description There are two sequences h1∼hn and c1∼cn . h1∼hn is a permutat

hdu 5758 Explorer Bo(树形dp)

题目链接:hdu 5758 Explorer Bo 题意: 给一棵n个点的树,每次任选两个点,然后覆盖两点间的所有边,要求以最少的次数覆盖所有的边,在保证次数最少的情况下要求覆盖边的总次数最小 题解: 详细题解传送门 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=(a);i<=(b);++i) 3 using namespace std; 4 5 const int N=1e5+7; 6 int t,n,x,y,sz[N],

hdu 2583 permutation 动态规划

Problem Description Permutation plays a very important role in Combinatorics. For example ,1 2 3 4  5 and 1 3 5 4 2 are both 5-permutations. As everyone's known, the number of n-permutations is n!. According to their magnitude relatives ,if we insert

HDU 4917 Permutation

题意: 一个序列p1.p2.p3--pn是由1.2.3--n这些数字组成的  现给出一些条件pi<pj  问满足所有条件的排列的个数 思路: 很容易想到用一条有向的线连接所有的pi和pj  那么就构成了有向无环图(题中说有解所以无环) 又因为pi各不相同  那么题目就变成了有向无环图的拓扑排序的种类数 题目中边数较少  所以可能出现不连通情况  我们先讨论一个连通集合内拓扑排序的种类数 题目中m较小  可以利用状压后的记忆化搜索解决 现在考虑如果知道了A和B两个集合各自的种类数  如果把它们合起

HDU 4917 Permutation 拓扑排序的计数

题意: 一个有n个数的排列,给你一些位置上数字的大小关系.求合法的排列有多少种. 思路: 数字的大小关系可以看做是一条有向边,这样以每个位置当点,就可以把整个排列当做一张有向图.而且题目保证有解,所以只一张有向无环图.这样子,我们就可以把排列计数的问题转化为一个图的拓扑排序计数问题. 拓扑排序的做法可以参见ZJU1346 . 因为题目中点的数量比较多,所以无法直接用状压DP. 但是题目中的边数较少,所以不是联通的,而一个连通块的点不超过21个,而且不同连通块之间可以看做相互独立的.所以我们可以对

【数学】HDU 5761 Rower Bo

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5761 题目大意: 船在(0,a),船速v1,水速v2沿x轴正向,船头始终指向(0,0),问到达(0,0)用时,无解输出Infinity. 题目思路: [数学] 说是数学其实更像物理. 很明显v1<=v2时无解. 这道题列积分方程然后解出来式子是t=a*v1/(v12-v22). 我列积分方程的时候少了一个式子没解出来. 可以看看半根毛线的.http://images2015.cnblogs.com

Permutation Bo (数学证明)

当在两端时:共有n * (n - 1)种组合,满足条件的有,计算可得, counter = n * (n - 1) / 2. 其他位置时:共有n * (n - 1) * (n - 2) 种组合,满足条件的有,利用平方和公式计算可得counter = n * (n - 1) * (n - 2)  / 3. #include<bits/stdc++.h> using namespace std; int main() { int n; while(~scanf("%d",&am

HDU 5752 Sqrt Bo【枚举,大水题】

Sqrt Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2221    Accepted Submission(s): 882 Problem Description Let's define the function f(n)=⌊n−−√⌋. Bo wanted to know the minimum number y wh