去年看错排公式,死都看不懂,基础扎实之后再来看就略懂了。

公式: 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递推式)的更多相关文章

  1. hdu2068 RPG的错排 组合数/递推

    #include<stdio.h> ]; long long c(int a,int b) { ,j; ;i>=a-b+,j<=b;i--,j++) sum=sum*i/j; ...

  2. ACM_错排(递推dp)

    RPG的错排 Time Limit: 2000/1000ms (Java/Others) Problem Description: 今年暑假GOJ集训队第一次组成女生队,其中有一队叫RPG,但做为集训 ...

  3. HDU2068 RPG的错排 —— 错排

    题目链接:https://vjudge.net/problem/HDU-2068 RPG的错排 Time Limit: 1000/1000 MS (Java/Others)    Memory Lim ...

  4. HDU-2068 RPG的错排(组合, 错排)

    RPG的错排 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  5. Hdu2068 RPG的错排 2017-06-27 15:27 30人阅读 评论(0) 收藏

    RPG的错排 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  6. hdu2068 RPG的错排 错排+组合

    RPG的错排 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  7. hdu2068 RPG的错排

    RPG的错排 时间限制:1000/1000 MS(Java / Others)内存限制:32768/32768 K(Java / Others)总提交内容:16421接受的提交内容:6670 问题描述 ...

  8. ACM学习历程—HDU2068 RPG的错排(组合数学)

    Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿 ...

  9. 神、上帝以及老天爷--hdu2048(错排,递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2048 1. N张字条的所有可能排列自然是N!(分母). 现在的问题就是求N张字条的错排数f(N)(分子 ...

随机推荐

  1. 60 网络编程(二)——URL

    认识URI.URL.URN 详细请参考:https://blog.51cto.com/xoyabc/1905492 URI:uniform resource Indent 统一资源标识符 URL:un ...

  2. k8s-Namespace(命名空间)

    k8s-Namespace(命名空间) Namespace(命名空间)是Kubernetes系统中的另一个非常重要的概念,通过将系统内部的对象“分配”到不同的Namespace中,形成逻辑上分组的不同 ...

  3. Introducing KSQL: Streaming SQL for Apache Kafka

    Update: KSQL is now available as a component of the Confluent Platform. I’m really excited to announ ...

  4. Echarts X轴多项百分比的展示

    app.title = '堆叠柱状图'; option = { tooltip : { trigger: 'axis', axisPointer : { // 坐标轴指示器,坐标轴触发有效 type ...

  5. mvc_第一章后入门_第一遍_控制器和视图

    在掌握了数据库访问方法之后,我们来看几个mvc的入门程序,借此熟悉mvc的常见工作方式. 一.创建项目,显示一个最简单的页面. 要点:1.为了突出重点,不使用模版:2.项目类型为mvc,便于获得vs添 ...

  6. vue 鼠标右击事件

    使用@contextmenu.prevent即可 参考:https://www.cnblogs.com/sxz2008/p/6953082.html

  7. 一.B/S架构和C/S架构

    1.B/S架构 Browser-Server,  浏览器和服务器架构.包含客户端浏览器.web应用服务器.数据库服务器的软件系统.用户只需要一个浏览器就可以访问服务.系统更新的时候,只需要更新服务端, ...

  8. HDOJ 6664 Andy and Maze

    HDOJ题目页面传送门 给定一个无向带权图\(G=(V,E),|V|=n,|E|=m\),求边权之和最大的有\(s\)个节点的链的边权之和,即求\(\max\limits_{\forall i\in[ ...

  9. python基础08--迭代器,生成器

    1.1 迭代器 1.可迭代对象:str,list,tuple,set,dict, 迭代器:f(文件),range() 可迭代对象和迭代器都可以for循环 可迭代对象不会计数, 迭代器会计数,上面操作到 ...

  10. C# 后台服务器端 Get 请求函数封装

    请求参数封装 /// <summary> /// 拼接 Get请求参数 /// </summary> /// <param name="parames" ...