首页 > 其他分享 >dp选做

dp选做

时间:2024-03-16 15:22:54浏览次数:19  
标签:200 选做 int 正面 连续 dp

连续正面的可能性

题目链接

设\(f[i][j][k]\)表示i枚硬币最多连续j面朝上且最末尾有k面朝上的方法数

则:

(1) k=0 那前n-1位可以是任意数,\(f[i][j][0]=\Sigma_{k=0}^jf[i-1][j][k]\)
(2) 0<k<j 那么j枚连续朝上的面一定不出现在最后面,所以\(f[i][j][k]=f[i-1][j][k-1]\)
(3) k=j 那么有两种可能:只有最后面j位连续正面是唯一最多的,和前面已经有j位连续正面,最后面又有j位连续正面,所以\(f[i][j][j]=f[i-1][j-1][j-1]+f[i-1][j][j-1]\)

目前只想到\(O(n^3)\)的dp,看起来似乎可以\(O(n^2)\)(?)

#include <stdio.h>

int n,m,ans;
int f[200][200][200];

int main(void) { 
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i) f[i][0][0]=f[i][i][i]=1;
    for(int i=2;i<=n;++i)
    {
    	for(int j=1;j<i;++j)//unnecessery to check j==1 and j==i
    	{
    		for(int k=0;k<=j;++k)
    			f[i][j][0]+=f[i-1][j][k];
    		for(int k=1;k<j;++k)
    			f[i][j][k]+=f[i-1][j][k-1];
			f[i][j][j]+=f[i-1][j-1][j-1]+f[i-1][j][j-1];
		}
	}
	for(int k=0;k<=m;++k) ans+=f[n][m][k];
	printf("%d\n",ans);
	/*
	for(int i=0;i<=n;++i)
		for(int j=0;j<=i;++j)
			for(int k=0;k<=j;++k)
				printf("f[%d][%d][%d]=%d\n",i,j,k,f[i][j][k]);
	*/
	return 0;
}

标签:200,选做,int,正面,连续,dp
From: https://www.cnblogs.com/w-official/p/18077113

相关文章

  • UDP比TCP快的原理
    1.工作位置:在OSI七层模型中,TCP和UDP工作在传输层,使源端主机和目标主机上提供端到端的会话,也就是常说的端口号,因为ip协议可能分组经过不同的路由路径传输,因此主机的ip层不保证顺序,也不保证一定收到,因此在传输层就需要做到一些事情:提供端到端的数据传递顺序保证可靠性保证2.T......
  • Qt 线程池 QThreadPool
    一.Qt线程池QThreadPool介绍Qt线程池是一种管理多个线程的并发编程模型,通过使用线程池可以提高性能、控制并发度、提供任务队列和简化线程管理。在Qt中,线程池的使用主要涉及以下几个步骤:创建任务类:需要定义一个任务类,该类继承自QRunnable和QObject,以便于能够在线程中运行......
  • 【计算机网络】传输层——传输层概念&UDP协议
    传输层概述主要学TCP和UDP协议,为应用层提供通信服务,使用网络层的服务只有主机才有的层次(路由器到网络层就没了)传输层功能1.提供进程与进程之间的通信2.复用和分用3.传输层对收到的报文进行差错检测。4.传输层的两种协议。TCPUDP差异面向连接的传输控制协议T......
  • 谢老师2024春 - Day2:期望DP
    Day2:期望DP​​A-CF148DBagofmice设\(dp_{i,j}\)表示还剩下\(i\)只白鼠,\(j\)只黑鼠A的胜率。大家都没有拿到白鼠,那么B赢,\(dp_{0,0}=0\)​。没有白鼠了,那么B赢,\(dp_{0,j}=0\)。全是白鼠了,那么A赢(A先抓),\(dp_{i,0}=1\)​。然后转移,有这几种情况:第一次就......
  • 树形DP 01
    树形DP1、没有上司的舞会(选或不选)题目描述某大学有\(n\)个职员,编号为\(1\ldotsn\)。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数\(r_i\),但是呢,如果某个职......
  • dp 练习题 2024.3.14
    ARC070ENarrowRectangles题意:平面上有\(n\)个矩形,左下角点坐标为\((l_i,i-1)\),右上角点坐标为\((r_i,i)\)。每次把一个矩形沿着横轴方向移动一个长度单位,求移动多少次使得任意两个相邻矩形存在交点。\(1\len\le10^5,\space1\lel_i<r_i\le10^9\)考虑最简单的dp,设\(......
  • 高维前缀和(SOS DP)
    引入方法在讨论高维前缀和前,不妨先回顾以下二维前缀和,一种写法是:for(inti=1;i<=w;i++) for(intj=1;j<=w;j++)sum[i][j]+=sum[i][j-1]for(inti=1;i<=w;i++) for(intj=1;j<=w;j++)sum[i][j]+=sum[i-1][j]推广......
  • 插头 dp 小记
    这里默认各位都会轮廓线dp。引入Luogu5074EattheTrees题意:给出\(n\timesm\)的方格,有些格子不能铺线,其它格子必须铺,可以形成多个闭合回路。问有多少种铺法?\(2\len,m\le12\)考虑如果每个格子和相邻格子(包括边缘)的衔接都合法,最终一定能形成若干个闭合回路,因此我们只......
  • TCP和UDP
    计算机网络的七层协议计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。七层协议的功能:物理层:负责处理网络通信的物理传输和传输介质的细节。物理层的主要任务是将比特流(bitstream)从发送方传输到接收方,确保数据能够在网络中进行可靠的物理传输。......
  • 序列 DP
    (1)LOJP507接竹竿有\(n\)张牌排成一排,每张牌有属性\((c_i,v_i)\)。保证\(c_i\lek\)。每次操作选择两张牌\(l,r\)满足\(c_l=c_r\),删除\(l\simr\)中的所有牌,并获得\(\sum_{i=l}^rv_i\)的收益。求最大的收益。\(n,k\le10^6\)。设状态\(f_i\)表......