把x1~xn当成是1~n, 答案是不会变的. 然后直接模拟就行了......

P.S 双倍经验... BZOJ1416 && BZOJ1498

-------------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
 
using namespace std;
 
const int maxn = 20009;
 
int a[maxn], t, n, d, tot;
int p[maxn], pn, cnt0[maxn], cnt1[maxn];
bool F[maxn];
 
void Init() {
memset(F, 0, sizeof F);
pn = 0;
for(int i = 2; i < maxn; i++) {
if(!F[i])
p[pn++] = i;
for(int j = 0; i * p[j] < maxn; j++) {
F[i * p[j]] = true;
if(i % p[j] == 0) break;
}
}
}
 
int buf[10000];
void calc(int h[]) {
memset(buf, 0, sizeof buf);
buf[0] = 1;
int L = 1;
for(int i = 0; i < pn; i++)
for(int j = 0; j < h[i]; j++) {
for(int k = 0; k < L; k++) buf[k] *= p[i];
for(int k = 0; k < L; k++) if(buf[k] > 9) {
buf[k + 1] += buf[k] / 10;
buf[k] %= 10;
}
for(; buf[L] > 0; L++) if(buf[L] > 9) {
buf[L + 1] += buf[L] / 10;
buf[L] %= 10;
}
}
while(L--)
putchar(buf[L] + '0');
}
 
void mult(int x, int h[]) {
for(int i = 0; i < pn; i++) if(x % p[i] == 0)
for(; x % p[i] == 0; x /= p[i]) h[i]++;
}
 
int main() {
Init();
scanf("%d%d%d", &t, &n, &d);
for(int i = 1; i <= t; i++) {
scanf("%d", a + i);
tot += a[i];
}
while(n--) {
int x, y;
scanf("%d%d", &x, &y);
mult(a[y], cnt0);
mult(tot, cnt1);
tot += d, a[y] += d;
}
for(int i = 0; i < pn; i++) if(cnt1[i] >= cnt0[i])
cnt1[i] -= cnt0[i], cnt0[i] = 0;
else if(cnt1[i] < cnt0[i])
cnt0[i] -= cnt1[i], cnt1[i] = 0;
calc(cnt0);
putchar('/');
calc(cnt1);
return 0;
}

-------------------------------------------------------------------------------

1416: [NOI2006]神奇的口袋

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 410  Solved: 268
[Submit][Status][Discuss]

Description

Input

Output

 0/1,概率为1 应输出1/1。

Sample Input

input 1
2 3 1
1 1
1 1
2 2
3 1

input 2
3 1 2
1 1 1
5 1

Sample Output

output 1
1/12

output 2
1/3

HINT


1≤t,n≤1000, 1≤ak ,d≤10, 1≤x1

Source

BZOJ 1416: [NOI2006]神奇的口袋( 高精度 )的更多相关文章

  1. ●BZOJ 1416 [NOI2006]神奇的口袋

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1416题解: Pòlya瓦罐模型: 给定罐子里每种颜色的球的个数A[i],按题目要求随机操作若 ...

  2. Bzoj1498&1416: [NOI2006]神奇的口袋

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

  3. 【BZOJ1416/1498】【NOI2006】神奇的口袋(数论,概率)

    [BZOJ1416/1498][NOI2006]神奇的口袋(数论,概率) 题面 BZOJ1416 BZOJ1498 洛谷 题面都是图片形式是什么鬼.. 题解 考虑以下性质 1.\(x[1],x[2]. ...

  4. BZOJ 1006 [HNOI2008] 神奇的国度(简单弦图的染色)

    题目大意 K 国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即 AB 相互认识,BC 相互认识,CA 相互认识,是简洁高效的.为了巩固三角关系,K 国禁止四边关系,五边关系等 ...

  5. 神奇的口袋(dp)

    有一个神奇的口袋,总的容积是40,用这个口袋可以变出一 些物品,这些物品的总体积必须是40. John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2……an.John可 ...

  6. [codeup] 2044 神奇的口袋

    题目描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2--an.John可以从这些物品中选 ...

  7. dp 神奇的口袋

    有一个神奇的口袋,总的容积是40,用这个口袋可以变出一 些物品,这些物品的总体积必须是40.  John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2--an.Joh ...

  8. 九度OJ 1114:神奇的口袋 (DFS、DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:948 解决:554 题目描述: 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个 ...

  9. 九度oj 题目1114:神奇的口袋

    题目描述: 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an.John可以从这些物品中 ...

随机推荐

  1. swift锁屏播放,音乐进度更新,专辑,歌手名显示

    我自己用的音乐播放器是自带的AVPlayer 导入头文件#import <MediaPlayer/MediaPlayer.h> 远程控制事件接收与处理- (void)viewWillApp ...

  2. windows平台HTTP代理server搭建(CCproxy)

    HTTP代理(CCproxy) 一.拓扑图 二.CCproxy的安装和配置 1.安装CCproxy (1)下载CCproxy无线破解版(没破解的都仅仅支持最多三个用户同一时候连接). (2)按说明安装 ...

  3. 傅老师课堂:Java高级应用之Struts2+Spring2+Hibernate3大集成

    开篇一笑:一对情侣,非常恩爱,但男友喜欢说脏话,一天女友提出要带男友回家吃个饭,见见家长,千叮万嘱让男友别说脏话,男友在家憋了一晚上没说一句脏话,天气寒冷,到走的时候女友家长要出来送他们,男友客气的说 ...

  4. uva 10366 Faucet Flow

    题意: 给出l和r,然后从l坐标到r坐标每隔两个位置有一个档板,给出挡板的高度,然后想(-1, 1)中间加水,问什么时候会溢出. 分析: 两边先找到距离(-1,1)最近的最大值L和R.接着比较两个L和 ...

  5. 使用 HttpWebRequest 发送模拟 POST 请求

    使用HttpWebRequest发送模拟POST请求  网页中,如果form的method="POST",这时点击submit按钮可以给服务器发送了一个POST请求,如果metho ...

  6. Smarty3配置

    下载Smarty压缩包并解压,复制其中的libs文件夹到我们的PHP工程目录下(可将其改名为smarty).同时,在工程目录下新建三个文件夹,分别取名为templates.templates_c和sm ...

  7. 新手讲树:证明任意二叉树度为零的节点n0,永远比度为2的节点n2多1个

    证明:   设度为1的节点个数为n1,因为二叉树的所有节点的度都小于等于2, 所以n=n0+n1+n2; 又因为二叉树中,除了根节点所有的节点都有一个进入节点的分支,假设B为所有的分支,那么n=B+1 ...

  8. [C语言练习]万年历加强版

    /** * @copyright 2011 Chunhui Wang * * wangchunhui@wangchunhui.cn */ #include<stdio.h> int mai ...

  9. struts2的对象工厂(ObjectFactory)

    ObjectFactory,是xwork中很重要的一个类,是产生action的地方.单独使用xwork的时候,action都是这个类创建的.struts2包装了ObjectFactory,自成了一个S ...

  10. android中利用view画出一条竖线

    在android中有时候需要通过线条来分割控件.最常见的情形就是在底部选项卡的多个button中间,通过加入一条竖线加以区分或者是在头部导航添加 竖线,将返回键和其他内容区分开来.一般会通过image ...