LightOJ-1064-dp
来源:互联网 发布:vb winsock 编辑:程序博客网 时间:2024/05/17 06:53
题目大意:抛一个质地均匀的筛子n次,问最后总得分至少为x的概率是多少;
题目解析:定义dp[i][j]表示抛了i次,总得分为j的次数,枚举时dp[i][j]+=dp[i-1][j-k];接下来算一下gcd就ok了;
AC代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>using namespace std;typedef long long ll;ll cnt[160],dp[26][160];ll gcd(ll a,ll b){if(b==0)return a;return gcd(b,a%b);}ll pow(int t){ll ans=1;int i; for(i=1;i<=t;i++)ans*=6;return ans;} int main(){int cas,c,i,j,k,n,x;scanf("%d",&cas);for(c=1;c<=cas;c++){scanf("%d%d",&n,&x);memset(dp,0,sizeof(dp));for(i=1;i<=6;i++)dp[1][i]=1;for(i=2;i<=n;i++){for(j=2;j<=(6*i>x?x:6*i);j++){for(k=1;k<=6;k++)if(j-k>=i-1)dp[i][j]+=dp[i-1][j-k];}}ll ans=0;for(i=n;i<x;i++)ans+=dp[n][i];ll m=pow(n);ll g=gcd(m,m-ans);if(ans==0){printf("Case %d: 1\n",c);continue;}if(ans==m){printf("Case %d: 0\n",c);continue;}printf("Case %d: %lld/%lld\n",c,(m-ans)/g,m/g);}return 0;}
0 0
- Lightoj 1064 数位DP
- LightOJ-1064-dp
- LightOJ 1064 Throwing Dice (DP)
- 【LightOJ 1064 】Throwing Dice + dp
- lightoj - 1064 - Throwing Dice - dp / 概率dp
- LightOJ 1064 Throwing Dice 概率DP
- LightOJ 1064 - Throwing Dice (dp)
- LightOJ 1064 - Throwing Dice(概率DP)
- LightOj 1064 Throwing Dice(概率dp)
- lightoj 1064 - Throwing Dice 简单DP
- lightoj 1140 数位DP
- lightoj 1032 数位DP
- lightoj 1068 数位DP
- lightoj 1205 数位DP
- lightoj 1422 区间DP
- Lightoj 1004 DP
- Lightoj 1013 DP
- Lightoj 1017 DP
- IOS 一个继承UINavigationController的子类
- 总结29
- 二叉树的遍历(加深自己的印象)
- Intellij利用Maven创建多Module的Java Web项目
- String(第一篇博客)
- LightOJ-1064-dp
- BZOJ 1008 [HNOI2008] 越狱
- 错题集
- Android之反射机制与JSON解析
- 逻辑门学习笔记
- Linux 实用工具 - Best Trace路由追踪测试Linux版使用
- spring预热(1)——注解
- 第九周 oj训练 大帆玩英雄联盟
- 欢迎使用CSDN-markdown编辑器