首页 > 其他分享 >Balanced Subsequences

Balanced Subsequences

时间:2024-10-15 21:25:13浏览次数:7  
标签:return int inv Subsequences Balanced binom ll mod

Balanced Subsequences

注意子序列不一定连续。

恰好最长合法括号子序列长度为 \(2k\),那么废掉的 ) 个数为 \(m-k\)。

恰好的方案数 \(f_k\) 不好求,我们可以求 \(g_k\) 表示长度至少为 \(2k\) 的方案数。

( 表示向上走,) 表示向下走,\(g_k\) 即为从 \((0,0)\) 走到 \((n+m,n-m)\),且废掉的右括号数 \(-y\le m-k\),即不超过直线 \(y=k-m\)。

\(g_k=\binom{n+m}{n}-\binom{n+m}{k-1}\)。

\(f_k=g_k-g_{k+1}=\binom{n+m}{k}-\binom{n+m}{k-1}\)。

注意判无解 \(k> \min(n,m)\)。

时间复杂度 \(O(n+m)\)。

Code

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
using namespace std;
typedef long long ll;
const int N=2e3+5,mxx=N<<2,mod=1e9+7;
int t;
ll jc[mxx+5],inv[mxx+5];
ll ksm(ll a,ll b){
	ll s=1;
	while(b){
		if(b&1){
			s=s*a%mod;
		}
		a=a*a%mod;
		b>>=1;
	}
	return s;
}
void init(){
	jc[0]=1;
	for(int i=1;i<=mxx;i++){
		jc[i]=jc[i-1]*i%mod;
	}
	inv[mxx]=ksm(jc[mxx],mod-2);
	for(int i=mxx-1;i>=0;i--){
		inv[i]=inv[i+1]*(i+1)%mod;
	}
}
int n,m,k;
ll C(ll n,ll m){
	if(m>n) return 0; 
	return jc[n]*inv[n-m]%mod*inv[m]%mod;
}
int main(){
	init();
	sf("%d",&t);
	while(t--){
		sf("%d%d%d",&n,&m,&k);
		if(k>min(n,m)) {
			pf("0\n");
			continue;
		}
		pf("%lld\n",(C(n+m,k)-C(n+m,k-1)+mod)%mod);
	}
}

标签:return,int,inv,Subsequences,Balanced,binom,ll,mod
From: https://www.cnblogs.com/liyixin0514/p/18468480

相关文章

  • Paper Reading: Deep balanced cascade forest: An novel fault diagnosis method for
    目录研究动机文章贡献本文方法混合采样新型平衡森林DBCF整体流程实验结果数据集和实验设置对比故障诊断方法对比基于决策树的方法对比不平衡分类方法模型效率的比较优点和创新点PaperReading是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的......
  • [CVPR2024]CDMAD Class-Distribution-Mismatch-Aware Debiasing for Class-Imbalanced
    Introduction在不平衡数据集上训练的分类器往往对头部类(majorityclasses)有偏好。在半监督学习(semi-supervisedlearning,SSL)设置下,生成伪标签的算法由于生成带偏置的伪标签,往往会进一步加剧偏置。带偏置的伪标签会降低表征学习质量。特别的,如果有标签集合和无标签集合的分布差异......
  • Balanced Subsequences
    首先知道结论:折现图上最低点的纵坐标为\(k-m\)。简单证明:考虑贪心这匹配过程(左括号+1,右括号-1),每次如果遇到向下的小于0的段,我们把其抹平,然后让后面所有点都+上某个值,最后一直这样操作,答案就是在y正轴上面的右括号/-1/下降个数。感性理解就是对于那个最低的在y负半轴......
  • 使用 LoadBalancerClient 和 @LoadBalanced 注解需要注意的事项
    使用LoadBalancerClient负责均衡客户端时:情况一:@BeanpublicRestTemplaterestTemplate(){returnnewRestTemplate();}@RestControllerpublicclassConsumerController{@AutowiredprivateRestTemplaterestTemplate;@Autowired......
  • P3067 [USACO12OPEN] Balanced Cow Subsets G
    我的天,折半搜索(meetinthemiddle),依稀记得我学过,但是真的不记得。。。。从状态图上起点和终点同时开始进行宽度/深度优先搜索,如果发现相遇了,那么可以认为是获得了可行解。这道题,每一个元素会有3种状态,分别是在第一个集合或者第二个集合亦或者不在集合中。如果直接暴力去搜的......
  • 洛谷题单指南-常见优化技巧-P2880 [USACO07JAN] Balanced Lineup G
    原题链接:https://www.luogu.com.cn/problem/P2880题意解读:在若干个不定长区间里,求区间最大值与最小值之差解题思路:对于区间求最值,通常有几种方式:1、暴力法,通过枚举所有的区间来计算区间最值2、单调队列,针对区间长度固定的情况3、ST表,针对区间长度不固定且元素不会发生改变的......
  • CF1621G Weighted Increasing Subsequences 题解
    题目链接点击打开链接题目解法这种题就感觉每一步都不难想,但串在一起就不会显然考虑位置\(x\)作为\(lis\)的一部分,合法的\(lis\)的个数合法的约束是:令\(lis\)的最后一个位置为\(last\),满足\(\max\{a_{last+1},...,a_n\}>a_x\)不难发现,合法的\(last\)是一段区间......
  • Strings, Subsequences, Reversed Subsequences, Prefixes
    题目大意给定两个字符串s和t,求出在s里面有多少个本质不同的子序列,使得该序列的前缀包含t,且该序列的反串也包含t即s的子序列=t+x+反t‘首先要确定是否有,就是判断我的S字符串中有没有包含T字符串for(l=0;l<n;l++){ if(s[l]==t[num])num++; if(num==m)bre......
  • Balanced String
    这道题目真的不知道怎么总结了,这技巧太新了见这篇题解为什么最开始要引入这个子问题呢?实际上,我们假设我们已经得到了最终的交换后的答案,设为\(t\),\(s\)就是题目给的原串,从\(s\)到\(t\)的最小交换次数当然就是从\(t\)到\(s\)的最小交换次数,于是考虑从\(t\)到\(s\)的最小交换次数,......
  • [CVPR2022]DASO Distribution-Aware Semantics-Oriented Pseudo-label for Imbalanced
    问题的背景设置:半监督学习下,labeleddata和unlabeleddata的分布不同,且存在类别不平衡。文章提出了一种新的伪标签生成方法:DistributionAwareSemantics-Oriented(DASO)Pseudo-label。首先生成语义伪标签和线性为标签,然后将它们混合实现互补。另外作者的方法不需要估计无标签数......