hdu2068-RPG的错排-(dp递推式)
去年看错排公式,死都看不懂,基础扎实之后再来看就略懂了。
公式: dp[ n ] = ( n-1 ) * ( dp[n-1] + dp[n-2] )
解析公式:比如有n个元素,各对应n个正确位置,dp[n]表示这n个元素全部排错的可能。
比如有元素:1 2 3 4 5 ... k ... n
1.假设第n个元素,要它在错误的位置上,则有n-1种情况。
2.对于剩下的n-1个元素,随便取一个位置上的元素k,要它在错误的位置上,则有2种情况
1)它在第n个元素的位置,相当于n和k两个元素交换位置,和其它没有关系,剩余n-2个元素爱怎么排就怎么排,dp[n-2]
2)不在第n个元素的位置,假设把n作为k的正确位置,则1 2 3 4 5...(k)...n,除去正确位置k,就是n-1个元素放在n-1个位置上,dp[n-1]。
初始化:
dp[1]=0;
dp[2]=1;
dp[ n ] = ( n-1 ) * ( dp[n-1] + dp[n-2] );
hdu2068:http://acm.hdu.edu.cn/showproblem.php?pid=2068
题解:
有n个人要猜对一半以上,就是错一半以下,排错公式。
对于这些错的人,也可以互不相同,组合数公式。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; ll ans[];
ll c[][];///C(n,m) = C(n-1,m) + C(n-1,m-1) void init()
{
memset(ans,,sizeof(ans));
memset(c,,sizeof(c));
ans[]=;///一个都没有错只有1种
ans[]=;
ans[]=;
ans[]=;
for(ll i=;i<;i++)
ans[i] = (i-) * ( ans[i-]+ans[i-] ); for(int i=;i<;i++)
c[i][]=;
for(int i=;i<;i++)
for(int j=;j<=i;j++)
c[i][j] = c[i-][j] + c[i-][j-]; } int main()///hdu2068 RPG错排
{
init();
int n;
while(scanf("%d",&n) && n)
{
ll res=;
for(int i=;i<=n/;i++)
res += ans[i] * c[n][i];
printf("%lld\n",res);
}
return ;
}
hdu2049:http://acm.hdu.edu.cn/showproblem.php?pid=2049
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; ll ans[];
ll c[][];///C(n,m) = C(n-1,m) + C(n-1,m-1) void init()
{
memset(ans,,sizeof(ans));
memset(c,,sizeof(c));
ans[]=;///一个都没有错只有1种
ans[]=;
ans[]=;
ans[]=;
for(ll i=;i<;i++)
ans[i] = (i-) * ( ans[i-]+ans[i-] ); for(int i=;i<;i++)
c[i][]=;
for(int i=;i<;i++)
for(int j=;j<=i;j++)
c[i][j] = c[i-][j] + c[i-][j-]; } int main()///hdu2049 考新朗
{
init();
int n,t;
scanf("%d",&t); while( t-- )
{
int n,m;
scanf("%d%d",&n,&m);
ll res=;
res = ans[m] * c[n][m];
printf("%lld\n",res);
} return ;
}
hdu2068-RPG的错排-(dp递推式)的更多相关文章
- hdu2068 RPG的错排 组合数/递推
#include<stdio.h> ]; long long c(int a,int b) { ,j; ;i>=a-b+,j<=b;i--,j++) sum=sum*i/j; ...
- ACM_错排(递推dp)
RPG的错排 Time Limit: 2000/1000ms (Java/Others) Problem Description: 今年暑假GOJ集训队第一次组成女生队,其中有一队叫RPG,但做为集训 ...
- HDU2068 RPG的错排 —— 错排
题目链接:https://vjudge.net/problem/HDU-2068 RPG的错排 Time Limit: 1000/1000 MS (Java/Others) Memory Lim ...
- HDU-2068 RPG的错排(组合, 错排)
RPG的错排 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- Hdu2068 RPG的错排 2017-06-27 15:27 30人阅读 评论(0) 收藏
RPG的错排 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- hdu2068 RPG的错排 错排+组合
RPG的错排 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- hdu2068 RPG的错排
RPG的错排 时间限制:1000/1000 MS(Java / Others)内存限制:32768/32768 K(Java / Others)总提交内容:16421接受的提交内容:6670 问题描述 ...
- ACM学习历程—HDU2068 RPG的错排(组合数学)
Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿 ...
- 神、上帝以及老天爷--hdu2048(错排,递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2048 1. N张字条的所有可能排列自然是N!(分母). 现在的问题就是求N张字条的错排数f(N)(分子 ...
随机推荐
- 如何从0搭建node服务
第一步 首先要搭一个node服务 基于 express 来快速构建node服务 npm install express 安装express 新建一个项目 myapp npm install expre ...
- 算法设计与分析(李春保)练习题答案v1
1.1第1 章─概论 1.1.1练习题 1.下列关于算法的说法中正确的有(). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模 ...
- Java中Integer和ThreadLocal
一. Integer 1.引子 在开始之前,我还是需要吐槽下自己,我是真的很菜! 他问:**两个Integer对象==比较是否相等? 我答:对象==比较,是引用比较,不相等! 他问:IntegerCa ...
- 在ASP.NET Core中获取客户端和服务器端的IP地址(转载)
随着ASP.NET的发展,有不同的方式从请求中访问客户端IP地址.WebForms和MVC Web应用程序只是访问当前HTTP上下文的请求. var ip = HttpContext.Current. ...
- c#按指定长度分解数组
在操作数据库时,我们需要注意一点,就是in查询的参数不能超过1000个,否则会报错,所以我们在进行in查询的时候需要对参数数量进行控制: 用于分解数组的扩展方法: /// <summary> ...
- C#读写设置修改调整UVC摄像头画面-焦点
有时,我们需要在C#代码中对摄像头的焦点进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...
- 解决老大难疑惑:指针 vs 引用
▶疑问描述 1. 引用reference的本质: 常指针 ——> 什么时候用指针?= 就按Java中的引用变量那样用? ——> 什么时候用引用? ①函数的入参/返回值时 ②T&am ...
- SAP CO-PA(盈利能力分析)
为了在这个现代和动态的环境中保持和发展,快速和及时的决策对于做出正确的决策更为重要.组织盈利能力是评估设计组织目标,目标和实现目标的核心参数.在本博客中,我将讨论SAP ERP中包含的工具,以分析组织 ...
- 【转载】C#中ArrayList集合类使用Remove方法指定元素对象
ArrayList集合是C#中的一个非泛型的集合类,是弱数据类型的集合类,可以使用ArrayList集合变量来存储集合元素信息,任何数据类型的变量都可加入到同一个ArrayList集合中,在Array ...
- XML简述
XML简述 本文主要内容都是在中国大学MOOC上学习的,这里做个记录. 课程:Java核心技术(进阶),华东师范大学 陈良育老师 感谢陈良育老师,在他的慕课上受益匪浅. XML基本概念 XML(eXt ...