首页 > 其他分享 >bzoj3612平衡

bzoj3612平衡

时间:2022-10-03 15:57:13浏览次数:46  
标签:正整数 int 跷跷板 d% 砝码 bzoj3612 平衡

题意:

给定有\(2*n+1\)个刻度的尺子,再中间位置有一个支撑点,这样就成了一个跷跷板,每个刻度位置放一个砝码,所以跷跷板平衡。问拿走\(k\)个砝码仍然平衡的方案数。
\(T\)组数据,答案对\(p\)取模
$T <= 20,1 <= n <= 10000,1 <= k <= 10,2 <= p <= 10000,且 k <= 2n+1。 $


动态规划
明显取走砝码和空尺子上放砝码是一样的。
刚开始想到的是
f[i][j][k]:表示前i个点,放j个砝码,得到k力矩的方案数。
f[i][j][k]=f[i-1][j][k]+f[i-1][j-1][k-i]
利用背包同样的方式可以把第一维去掉,节省空间。但是时间复杂度没什么影响,超时。

然后,换个角度想,跷跷板的一侧放i个砝码,产生j的力矩。由于每个砝码等重,实际上就是把i个砝码的距离相加,注意距离都不相等。那么也就是把i个不等的正整数想买得到j的方案数。还有一个重要的条件,每个距离都不大于n。
所以,f[i][j]表示把i分成j个不同的正整数,且每个正整数不超过n的方案数。
f[i][j]=(f[i-j][j]+f[i-j][j-1]-((i>=n+1)?f[i-n-1][j-1]:0))%p;


#include<bits/stdc++.h>
using namespace std;
const int maxn=10010;
int t,n,p,k; 
int f[maxn*11][12];

int main()
{
	freopen("3612.in","r",stdin);
	freopen("3612.out","w",stdout); 
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d%d",&n,&k,&p);
		f[0][0]=1;
		for(int j=1;j<=k;++j)
			for(int i=j;i<=n*k;++i)
				f[i][j]=(f[i-j][j]+f[i-j][j-1]-((i>=n+1)?f[i-n-1][j-1]:0))%p;
				
		long long ans=0;
		for(int j=0;j<=k;++j)
			for(int i=j;i<=n*k;++i)
			ans=(ans+f[i][j]*(f[i][k-j]+f[i][k-j-1]))%p;
		printf("%lld\n",ans);
	}
		
	return 0;
}

标签:正整数,int,跷跷板,d%,砝码,bzoj3612,平衡
From: https://www.cnblogs.com/gryzy/p/16750610.html

相关文章

  • 【学习笔记】fhq_treap 无旋平衡树
    推一个视频引入Treap平衡树原型:基于旋转实现的BST+Heap,通过随机索引和堆使得BST的单次复杂度稳定在\(O(\logn)\)。fhqtreap则是将treap改造了一下,变成了基于分裂与......
  • AcWing 算法提高课 treap平衡树
    1、基本性质tree+heap=treap平衡树包含treap红黑树splaysbtAVL等等splay比较常用treap=①BST二叉搜索树+②heap2、set不能做的操作  ⑤和⑥这种与排名相......
  • 平衡二叉树(AVL)的插入和删除
    在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是......
  • 平衡树学习笔记
    平衡树平衡树是一类二叉查找树,因为普通的二叉查找树可能会因为特殊的数据的构造变成链,导致原本应该是\(\mathcalO(\logn)\)的查找速度退化成为\(\mathcalO(n)\),损失......
  • 平衡二叉树 -java实现
     packagetree;/***@author:tianhaichao*@date:2022/9/2215:38*@description:平衡二叉树AVL*1、每个节点的左右子树的高度差不大于1--->|left.height......
  • 【学习笔记】平衡树 Treap
    平衡树旋转Treap一个重要的等式treap=tree+heap解释:treap,即树堆,顾名思义,就是树+堆,而一般的,此处的树指BST(二叉搜索树)也就是说,treap是一棵BST,也是一个二叉堆,但二者的......
  • 样本不平衡问题
    样本不平衡(ImbalancedData),也尝尝成为类别不平衡,是指各个类别的样本数目相差悬殊的情况。下面以多数类表示有很多样本的类别,少数类表示样本数目很少的类别。样本不平衡的......
  • 平衡树做题记录
    板子就不说了。P2786英语1(eng1)-英语作文红黑树map随便做,用一个map存下字符串对应的值,一个字符一个字符读入,然后判断,如果不是数字并且不是字母,说明空格或者符号,处......
  • 海洋中的热收支和水平衡
                我们现在卫星测量海温就是根据辐射以及该公式推算得知。     注意,由于太阳照射角度对辐射能量影响较大,此外日地距离,大气......
  • Splay 平衡树模板
    OI-wiki写的非常好,所以在这里加以自己的注释理解存一下模板qwq。#include<bits/stdc++.h>#definerep(i,a,b)for(inti=(a);i<=(b);++i)#defineRep(i,a,b)for(inti=......