题面在这里

题意

开始时袋中有\(t\)种小球,第\(i\)种小球有\(t_i\)个,之后每次等概率取出一个球,第\(i\)次取球时观察这个球的颜色\(c_i\)放回并向袋中加入\(d\)个颜色为\(c_i\)的球;
给出一组询问\([x_i,y_i](1\le i\le n)\),求同时满足第\(x_i\)次取球的颜色为\(y_i\)的概率

\(1≤t,n≤1000, 1≤a_k ,d≤10, 1≤x_1<x_2<…<x_n≤10000, 1≤y_k≤t\)

hint

有没有注意到\(1≤x_1<x_2<…<x_n≤10000\)这个条件?
感觉又鬼畜又没有用对么?
那么我们把这个条件删掉
其实这个条件仅仅是在给你一个提示

sol

其实我做题的时候也不知道这个条件有什么用...于是我就没有做出来
如果\(x_i=i\)你还不会做?直接模拟即可

所以这道题直接模拟就可以了。
!!!!!!是的很震惊对吧
给你\(1≤x_1<x_2<…<x_n≤10000\)这个条件,
就是让你考虑怎么把这个条件化成\(x_i=i\)的......

接下来我们开始证明,
如果仅仅考虑一次抽取的情况,每次抽到颜色\(c\)的概率都是一样的,
即第\(i\)次抽到颜色\(c\)的概率和第\(i+1\)次抽到颜色\(c\)的概率相同
设第\(i\)次抽之前,袋子里总共有\(tot\)个球,有\(a\)个颜色为\(c\)的球(update 4.4:感谢 @GuessYCB的更正 orz)
那么第\(i\)次抽抽到\(c\)的概率显然是\(P_i=\frac{a}{tot}\)
那么第\(i+1\)次抽抽到\(c\)的概率呢?
\[P_{i+1}=\frac{a}{tot}\times\frac{a+d}{tot+d}+(1-\frac{a}{tot})\times\frac{a}{tot+d}=\frac{a}{tot}=P_i\]
嗯是的

于是直接把\([x_1,x_2,x_3,...,x_n]\)转换为\([1,2,3,...,n]\)即可
注意高精(可以考虑先\(fact\),最后再化系数)

代码

#include<bits/stdc++.h>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cstring>
#include<complex>
#include<vector>
#include<cstdio>
#include<string>
#include<bitset>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define mp make_pair
#define pb push_back
#define RG register
#define il inline
using namespace std;
typedef unsigned long long ull;
typedef vector<int>VI;
typedef long long ll;
typedef double dd;
const dd eps=1e-10;
const int mod=1e9+7;
const int N=5010;
const int M=20010;
il ll read(){RG ll data=0,w=1;RG char ch=getchar();while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();if(ch=='-')w=-1,ch=getchar();while(ch<='9'&&ch>='0')data=data*10+ch-48,ch=getchar();return data*w;
}il void file(){//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);
}int t,n,d,a[N],y[N],sum;
int pri[M],vis[M];
il void sieve(){vis[1]=1;for(RG int i=2;i<M;i++){if(!vis[i])pri[++pri[0]]=i;for(RG int j=1;j<=pri[0]&&1ll*pri[j]*i<M;j++){vis[i*pri[j]]=1;if(i%pri[j]==0)break;}}
}int sys[3][M];
il void fact(int x,int id){for(RG int j=1;j<=pri[0]&&1ll*pri[j]*pri[j]<=x;j++)while(x%pri[j]==0)sys[id][j]++,x/=pri[j];for(RG int j=1;j<=pri[0]&&1ll*pri[j]<=x;j++){while(x%pri[j]==0)sys[id][j]++,x/=pri[j];if(x==1)break;}
}struct bignumber{int ws,s[5005];il void init(){ws=s[1]=1;}il void times(int x){if(!ws)init();for(RG int i=1;i<=ws;i++)s[i]*=x;for(RG int i=1;i<=ws;i++)if(s[i]>=10)s[i+1]+=s[i]/10,s[i]%=10;while(s[ws+1])ws++,s[ws+1]+=s[ws]/10,s[ws]%=10;}il void print(){for(RG int i=ws;i;i--)printf("%d",s[i]);}
}A[3];il void solve(){for(RG int i=1,minn;i<=pri[0];i++){minn=min(sys[1][i],sys[2][i]);sys[1][i]-=minn;sys[2][i]-=minn;}A[1].init();A[2].init();for(RG int id=1;id<=2;id++)for(RG int i=1;i<=pri[0];i++)for(RG int j=1;j<=sys[id][i];j++)A[id].times(pri[i]);A[2].print();printf("/");A[1].print();puts("");
}int main()
{t=read();n=read();d=read();sieve();for(RG int i=1;i<=t;i++)a[i]=read(),sum+=a[i];for(RG int i=1;i<=n;i++)read(),y[i]=read(),fact(a[y[i]],2),a[y[i]]+=d,fact(sum,1),sum+=d;solve();return 0;
}

转载于:https://www.cnblogs.com/cjfdf/p/8463649.html

[NOI2006]神奇口袋相关推荐

  1. Bzoj14981416: [NOI2006]神奇的口袋

    什么鬼双倍经验题??? Sol 考虑在第\(k\)次摸到\(y\)的概率 如果上次摸到\(y\),目前有\(sum\)个球,\(y\)有\(a[y]\)个,那么概率就是\(\frac{a[y]+d}{ ...

  2. 云现场 | 把开发者宠上天的节奏?恐怕也只有华为云啦!——记首次探访华为云“一日游...

    戳蓝字"CSDN云计算"关注我们哦! 作者:刘晶晶 不久之前,华为云首次举行媒体开放日,也是小编第一次探访传说中的华为总部,并同时感受坂田园区与松山湖园区截然不同的奇特,先上几张照 ...

  3. 【华为云动态】华为云开放日发布云专家激励计划,要将开发者“宠”上天

    文:砍柴网 华为最神秘的地方是哪里? 很多人一定会说是2012实验室,这个被称为"中国黑科技最多的地方"简直就是哆啦A梦的"神奇口袋",总是能源源不断地带来令人 ...

  4. 2060显卡驱动最新版本_聊一款现阶段性价比爆炸的显卡——铭瑄RTX2070 SUPER 电竞之心 OC...

    这两天,淘宝.天猫.京东都在借着3.8女神节的招牌搞促销,虽然买买买这个事情,各个年龄段的女性是当仁不让的主力,但这些促销活动也惠及到了一些数码产品,比如今天要说的这一款,机器猫强力推荐有需求的同学可 ...

  5. HTML项目代码编写规范

    如果本文档中有任何错误的.不符合行规的,敬请斧正. 引言 不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. 若您对本文档中任何内容有不明白的,或者感觉不合行规的,请您按以下格式 ...

  6. 机器人图形变变变_幼儿园全景数学特色课程

    图形变变变 引入:今天老师给小朋友们请来了一位小客人,大家猜猜是谁?把制作好的机器人从袋子里拿出来粘贴到白板上.幼儿回答是机器人,教师提问机器人是由什么组成的?幼儿回答由图形组成的. 请小朋友帮助老师 ...

  7. 哆啦a梦简单图画python编程_哆啦a梦怎么画简单画法,哆啦a梦简笔画带颜色,超可爱...

    有着神奇口袋的蓝胖子给我们的童年留下了深刻的记忆,哆啦A梦的口袋中总是能掏出各种神奇的道具帮助大雄解决遇到的困难,你是不是曾经也幻想有一个这样万能的朋友呢?今天我们为大家整理了一些哆啦A梦简笔画大全可 ...

  8. 陪伴型机器人主场到来:热衷跳舞的波士顿“狗”开始搬砖、Sophia量产恐怖谷效应显现、与人类互动的机器狗来了 | 硅谷速递...

    1969 年,经典漫画<哆啦A梦>在漫画家藤子·F·不二雄的笔下诞生,他创造出了一个随时都能从神奇口袋里掏出道具的猫型机器人形象.在此后的半个世纪,这个专门负责照顾儿童的机器人风靡全球,深 ...

  9. 007 UseGCLogFileRotation NumberOfGCLogFiles GCLogFileSize

    你假笨JVM参数分享全整理系列 微信小程序:JVMPocket - JVM参数交流平台,Javaer的神奇口袋 序号:007 时间:2017-08-10 参数: -XX:UseGCLogFileRot ...

  10. 把开发者宠上天的节奏?恐怕也只有华为云啦!——记首次探访华为云“一日游”

    不久之前,华为云首次举行媒体开放日,也是小编第一次探访传说中的华为总部,并同时感受坂田园区与松山湖园区截然不同的奇特,先上几张照片领略下吧! 绵绵细雨.逼真城堡.亲人的黑天鹅--一路走来,遍赏美景,不 ...

最新文章

  1. 【NLP】用BERT进行机器阅读理解
  2. VTK:几何对象之Quad
  3. linux下php安装redis,Linux下php安装redis和phpredis库
  4. C#中开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨
  5. 1bit和1byte_1byte等于( )bit_学小易找答案
  6. java package public_Java中的public,protected,package-private和private有...
  7. Cesium工作笔记001---地理位置信息js展示框架_Cesium介绍
  8. linux nfs iscsi,对比平台--iSCSI和NFS之间的区别
  9. 狡兔死,良弓藏-每个王朝都一样
  10. 【无标题】手机扩容或更换字库后的指纹. 基带. 账号 .解锁等故障分析
  11. Android识别图片中的颜色
  12. Unity制作历史记录气泡
  13. 闵行区电动自行车上牌地址
  14. 王垠:如何掌握程序语言
  15. 如何成为一名白帽子?
  16. python中shelf对象_Python对象持久化存储工具pickle
  17. mmsegmentation 训练自制数据集
  18. 白话解读“中台”技术
  19. 单元测试——Unittest(测试报告)
  20. 记一次美版苹果手机购买经历

热门文章

  1. 计算机组装大赛初赛成功举办,第一届计算机组装大赛方案
  2. (2015省赛系列--团体热身赛第二场)
  3. 20岁生日 nyoj 312(闰年算法)
  4. python 人脸识别活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测
  5. android 编译api,Android逆向利器,直接将apk转换为可二次开发Android工程,提供So hook Api,......
  6. python元胞转list_python元胞自动机的简单实现
  7. 【UVA10305】Ordering Tasks(拓扑排序)
  8. TableView全展开实现ContentSizedTableView
  9. 数据集:高考录取分数
  10. c语言通过信号量id获取值_Linux信号量