Light OJ 1064 - Throwing Dice
题目大意:
给你n个骰子, 问点数大于等于x的概率是多少?
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL;
const int INF = 1e9+;
const int MAXN = ; struct node
{
LL a, b;///分子,分母
bool vis;
node (LL a=,LL b=,bool vis=false): a(a), b(b), vis(vis) {}
}dp[MAXN][MAXN];
LL gcd(LL a, LL b)
{
return b == ?a:gcd(b,a%b);
} node DFS(int n,int x)///n个筛子掷的至少点数为x
{
if(x <= n)
return node(,,true);
if(dp[n][x].vis)
return dp[n][x]; if(n == || x > n*)
return dp[n][x] = node(,,true); dp[n][x] = node(,,true); for(int i=; i<=; i++)
{
node P = DFS(n-, x-i);
P.b *= ;
LL a = dp[n][x].a;
LL b = dp[n][x].b;
LL c = P.a, d = P.b;
if(dp[n][x].b == )
dp[n][x] = P;
else
{
LL e = gcd(b,d);
dp[n][x].a = a*(d/e) + c*(b/e);
dp[n][x].b = b/e*d;
LL k = gcd(dp[n][x].a, dp[n][x].b);
dp[n][x].a /= k;
dp[n][x].b /= k;
}
} return dp[n][x];
} int main()
{
int T, n, x, cas = ;
scanf("%d", &T);
while(T --)
{
scanf("%d %d", &n, &x);
node P = DFS(n, x);
printf("Case %d: ", cas ++);
if(P.a == || P.b == )
printf("%lld\n", P.a);
else
printf("%lld/%lld\n", P.a, P.b);
} return ;
}
Light OJ 1064 - Throwing Dice的更多相关文章
- lightoj 1064 Throwing Dice
题意:给你n个骰子,求n个骰子的和不小于x的概率. 刚开始想每给一组数就计算一次~~太笨了- -,看了别人的代码,用dp,而且是一次就初始化完成,每次取对应的数据就行了.WA了好多次啊,首先不明白的就 ...
- Light OJ 1317 Throwing Balls into the Baskets 概率DP
n个人 m个篮子 每一轮每一个人能够选m个篮子中一个扔球 扔中的概率都是p 求k轮后全部篮子里面球数量的期望值 依据全期望公式 进行一轮球数量的期望值为dp[1]*1+dp[2]*2+...+dp[ ...
- Throwing Dice LightOJ - 1064 || (勉强能用的)分数类
Throwing Dice LightOJ - 1064 方法: 设ans[i][j]表示i个骰子点数恰好为j的概率.那么ans[1][1]到ans[1][6]都为1/6. 显然,$ans[i][j] ...
- Throwing Dice(概率dp)
C - Throwing Dice Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Lig ...
- Light OJ 1114 Easily Readable 字典树
题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...
- Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...
- Light OJ 1316 A Wedding Party 最短路+状态压缩DP
题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...
- light oj 1007 Mathematically Hard (欧拉函数)
题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...
随机推荐
- Ext.Net学习笔记09:Ext.Net Store的用法
使用Handler处理分页 首先来创建一般处理程序,我命名为StoreHandler.ashx,然后它的处理过程代码如下: public void ProcessRequest(HttpContext ...
- asp.net:用类来后台绑定数据源
//封装成一个 using System;using System.Collections.Generic;using System.Linq;using System.Web;using Syste ...
- 获取键盘输入或者USB扫描枪数据
/// <summary> /// 获取键盘输入或者USB扫描枪数据 可以是没有焦点 应为使用的是全局钩子 /// USB扫描枪 是模拟键盘按下 /// 这里主要处理扫描枪的值,手动输入的 ...
- UVA 11078 Open Credit System(扫描 维护最大值)
Open Credit System In an open credit system, the students can choose any course they like, but there ...
- c# 与 winform 界面开发
在 windows 下使用 vs2010 开发,未深入研究. c# 与 .net 开发,一堆又一堆的新名词,头晕目眩,比如 CLR / apartments / STA / MTA / COM 吐槽无 ...
- 虚拟机中如何Linux系统如何访问PC硬盘中的文件(如何将windows下的文件夹挂载到linux虚拟机下)
这段时间决定学习嵌入式,变打算安装个Linux系统先熟悉一下Linux系统的使用,但自己电脑上安装的win7系统又不想装双系统,一是闲麻烦,二是由于对Linux系统不熟悉担心会因为自己的误操作而损坏系 ...
- android 开源框架推荐
同事整理的 android 开源框架,个个都堪称经典.32 个赞! 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JS ...
- ubuntu上 安装 基于sphinx 的 coreseek 全文搜索
原生sphinx不支持中文, sphinx-for-chinese匹配中文时也不返回结果 ,真纠结, 最好试了 coreseek,这个能正确返回结果了, 所以记录一下 1 http://www.co ...
- CentOs install oracle instant client
rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm rpm -ivh oracle-instantclient11.2-de ...
- ng表单验证,提交以后才显示错误
只在提交表单后显示错误信息 有时候不想在用户正在输入的时候显示错误信息. 当前错误信息会在用户输入表单时立即显示. 由于Angular很棒的数据绑定特性,这是可以发生的. 因为所有的事务都可以在一瞬间 ...