http://codeforces.com/gym/100240 J


【分析】

  这题我搞了好久才搞出样例的11.76。。。。【期望没学好

  然后好不容易弄成分数形式。然后我‘+’没打。。【于是爆0。。。

  好桑心。。

  对于x^2这样的期望,是不能直接求x的期望然后平方的!

  为什么呢?因为意义就是不对的,你的概率有可能乘了两次什么的。。。

  我的方法是:

  先把每天分离出来,对于某一天,假设你前i部番的x^2的期望求了出来,然后新的一部翻在这天放的概率是p,

  新的答案就是$x^{2}*(1-p)+p*(x+1)^2$

  即$x^{2}+p*(2*x+1)$

  这样就可以求了。【实测是对的啊!!

  所以你还要维护x的期望【这个很容易的啦。

  然后你会发现,你的分数是a/(n^2)+b/n,这种形式的,a很小不会超过n,我就用两个东西来存这两个分子。

  每超过分母就把它加进整数部分,这样用long long就不会爆了。

  对于n很大,发现d<=10000,dmx~n这一段的期望其实是完全一样的,所以只需要求1~dmx就好了。

  如果d也很大的话,还可以把d离散,中间的点的期望跟前面最近的点的期望是一样的。

  男神的方法好像有点不一样?但是我觉得这个更容易想啊!

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Maxn 10010
#define LL long long int b[][];
LL d[Maxn],c[Maxn];
int mymax(LL x,LL y) {return x>y?x:y;} struct node
{
LL x,y,z;
}A[Maxn]; LL gcd(LL a,LL b)
{
if(b==) return a;
return gcd(b,a%b);
} LL n;
void add(LL x,LL a,LL b)
{
A[x].x+=a;A[x].y+=b;
A[x].z+=A[x].x/(n*n);A[x].z+=A[x].y/n;
A[x].x%=(n*n);A[x].y%=n;
} int main()
{
int m,mx=;
scanf("%lld%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d",&b[i][]);
for(LL j=;j<=b[i][];j++)
{
scanf("%d",&b[i][j]);
mx=mymax(mx,b[i][j]);
}
}
for(int i=;i<=mx;i++) A[i].x=,A[i].y=,A[i].z=;
for(int i=;i<=mx;i++) c[i]=;
for(int i=;i<=m;i++)
{
for(int j=;j<=mx;j++) d[j]=;
for(int j=;j<=mx;j++)
{
for(int k=;k<=b[i][];k++)
{
if(j+b[i][k]->mx) break;
d[j+b[i][k]-]++;
}
}
for(int i=;i<=mx;i++)
{
add(i,d[i]**c[i],d[i]);
c[i]+=d[i];
}
}
if(n<=mx)
{
for(int i=;i<=n;i++)
{
A[].z+=A[i].z;
add(,A[i].x,A[i].y);
}
}
else
{
for(int i=;i<=mx;i++)
{
A[].z+=A[i].z;
add(,A[i].x,A[i].y);
}
A[].z+=(n-mx)*A[mx].z;
add(,A[mx].x*(n-mx),A[mx].y*(n-mx));
}
A[].x+=A[].y*n;
A[].z+=A[].x/(n*n);
A[].x%=(n*n);
LL g=gcd(A[].x,n*n);
A[].x/=g;A[].y=n*n/g;
printf("%lld+%lld/%lld\n",A[].z,A[].x,A[].y);
return ;
}

2017-04-19 10:16:51

【codeforces.com/gym/100240 J】的更多相关文章

  1. 【Codeforces Round #406 (Div. 2)】题解

    The Monster 签到题,算一下b+=a和d+=c,然后卡一下次数就可以了. Not Afraid 只要一组出现一对相反数就是安全的. Berzerk 题意:[1,n],两个人轮流走,谁能走到1 ...

  2. 【Codeforces Global Round 1 C】Meaningless Operations

    [链接] 我是链接,点我呀:) [题意] 给你一个a 让你从1..a-1的范围中选择一个b 使得gcd(a^b,a&b)的值最大 [题解] 显然如果a的二进制中有0的话. 那么我们就让选择的b ...

  3. 【 Codeforces Global Round 1 B】Tape

    [链接] 我是链接,点我呀:) [题意] x轴上有m个连续的点,从1标号到m. 其中有n个点是特殊点. 让你用k段区间将这n个点覆盖. 要求区间的总长度最小. [题解] 一开始假设我们需要n个胶带(即 ...

  4. 【Codeforces Beta Round #45 D】Permutations

    [题目链接]:http://codeforces.com/problemset/problem/48/D [题意] 给你n个数字; 然后让你确定,这n个数字是否能由若干个(1..x)的排列连在一起打乱 ...

  5. 【codeforces 434 div 1 A】Did you mean...

    [链接]h在这里写链接 [题意] 让你维护一段序列. 这段序列,不会出现连续3个以上的辅音. (或者一块全是辅音则也可以) (用空格可以断开连续次数); 要求空格最小. [题解] 模拟着,别让它出现连 ...

  6. 【Codeforces Beta Round #88 C】Cycle

    [Link]:http://codeforces.com/problemset/problem/117/C [Description] 问你一张图里面有没有一个三元环,有的话就输出. [Solutio ...

  7. 【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup

    [链接]h在这里写链接 [题意]     k是最高级别的分数,最高界别的分数最多只能有x个.     1<=k<=m;     和k相邻的点的分数只能小于k;     n个点的树,问你每个 ...

  8. 【Codeforces自我陶醉水题篇~】(差17C code....)

    Codeforces17A 题意: 有一种素数会等于两个相邻的素数相加 如果在2~n的范围内有至少k个这样的素数,就YES,否则就NO; 思路: 采用直接打表,后面判断一下就好了.那个预处理素数表还是 ...

  9. 【Codeforces Global Round 1 E】Magic Stones

    [链接] 我是链接,点我呀:) [题意] 你可以把c[i]改成c[i+1]+c[i-1]-c[i] (2<=i<=n-1) 问你能不能把每一个c[i]都换成对应的t[i]; [题解] d[ ...

随机推荐

  1. Elasticsearch——QueryBuilder简单查询

    elasticsearch中存储的全部文档 1.matchAllQuery() matchAllQuery()方法用来匹配全部文档 public class QueryTest {       pub ...

  2. Freemarker代码生成器原理说明

    一.Freemarker基本原理: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用 ...

  3. maven使用过程中遇到的问题总汇

    1:web.xml is missing and <failOnMissingWebXml> is set to true 造成原因: 使用maven创建项目时有时在pom.xml的war ...

  4. Metasploit 一些重要模块使用介绍

    本文是"T00LS Metasploit(第一季)"的文档版,是个人在观看视频动手操作的一个记录,仅供学习.文中会介绍Metasploit的一些基本使用:端口扫描.smb扫描.服务 ...

  5. html中插入其他html,并实现动态效果!

    <html> <body> 倒计时开始...... <span id="s1">888</span> <!--在html中先做 ...

  6. android 图片旋转 移动 放大缩小

    图片的变化主要是matrix的变化,对matrix不懂的可以先了解下matrxi. public class FunnyView extends View { /* * 手指按下时可能是移动 也可能是 ...

  7. Linux下搜索命令

    linux下用于查找文件的5个命令,有需要的朋友可以参考下.包括find,whereis,locate,which与type. linux下用于查找文件的5个命令,有需要的朋友可以参考下.包括find ...

  8. 用C#实现对MSSqlServer数据库的增删改查---Server层(WaterLevelSetServer.cs、DeviceSetServer.cs)

    在Server层定义WaterLevelSetServer和WaterLevelRecordServer两个子类,分别继承DeviceSetServer和DeviceRecordServer. usi ...

  9. mysql开启GTID跳过错误的方法【转】

    1.数据库版本 MySQL> select version()    -> ;+-------------------------------------------+| version( ...

  10. Codeforces 351D Jeff and Removing Periods(莫队+区间等差数列更新)

    题目链接:http://codeforces.com/problemset/problem/351/D 题目大意:有n个数,每次可以删除掉数值相同并且所在位置成等差数列的数(只删2个数或者只删1个数应 ...