首页 > 其他分享 >AGC045C Range Set

AGC045C Range Set

时间:2024-07-28 11:51:13浏览次数:7  
标签:Set int texttt 合法 AGC045C Range 01 长度 DP

考虑怎样的 \(x\) 合法,由于之后的操作会覆盖先前的操作,所以正着考虑很复杂,那么正难则反,相当于将长度为 \(a\) 的 0 串覆盖成 ? 表示选择 01 都是合法的

而目标为 0? 组成的串,那么此时一定可以将其覆盖为 ?,那么 01 对称,不妨设 \(a\le b\)

可以发现如果覆盖了一个长度 \(b\) 的 1 段,那么原字符串一定合法,那么合法条件为将每一个长度至少 \(a\) 的 0 段变成 1 后,有长度大于等于 \(b\) 的 1

但是此类存在性计数不好 \(\texttt{DP}\),那么考虑求出不合法的方案数,也就是长度小于 \(a\) 的 0 段将字符串划分成了长度小于 \(b\) 的 01 混合串,且其中 0 的长度大于等于 \(a\),且两种段的相接点为 1,考虑 \(\texttt{DP}\) 套 \(\texttt{DP}\),先求出一个 \(f_{i,0/1}\) 表示长度为 \(i\) 的第二种段末尾为 \(0/1\) 的方案数,以此来辅助求出不合法的串,记 \(g_{i,0/1}\) 表示长度为 \(i\) 的不合法串末尾为第一/二种段的方案数,特殊处理一下开头和结尾即可

#include<bits/stdc++.h>
using namespace std;
int n,a,b;
long long s=1,f[5001][2],g[5001][2];
const int mod=1e9+7;
int main(){
	scanf("%d%d%d",&n,&a,&b);
	for(int i=1;i<=n;i++) s=s*2%mod;
	if(a>b) swap(a,b);
	f[0][0]=f[0][1]=g[0][0]=g[0][1]=1;
	for(int i=1;i<b;i++){
		for(int j=0;j<i;j++){
			if(i-j>=a) f[i][0]=(f[i][0]+f[j][1])%mod;
			f[i][1]=(f[i][1]+f[j][0])%mod;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<i;j++){
			if(i-j<b) g[i][1]=(g[i][1]+g[j][0]*(i-j-1-(i!=n&&j!=0)<=0?1:f[i-j-1-(i!=n&&j!=0)][0]+f[i-j-1-(i!=n&&j!=0)][1]))%mod;
			if(i-j<a) g[i][0]=(g[i][0]+g[j][1])%mod;
		}
	}
	printf("%lld",(s-g[n][0]-g[n][1]+mod*2)%mod);
	return 0;
}

标签:Set,int,texttt,合法,AGC045C,Range,01,长度,DP
From: https://www.cnblogs.com/zyxawa/p/18328053

相关文章

  • CF585C Alice, Bob, Oranges and Apples
    感觉和辗转相除相似,考虑证明正确性设当前Alice的橙子、苹果数为\(a_0,a_1\),Bob同理,考虑构造状态矩阵\(\begin{pmatrix}a_0&b_0\\a_1&b_1\\\end{pmatrix}\),那么初始状态\(I\)为\(\begin{pmatrix}1&0\\0&1\\\end{pmatrix}\),那么\(A\)操作相当于\(\times......
  • ABC 364 F - Range Connect MST 题解
    一副扑克牌,去掉1到K,剩下就是我,赛后十秒过,我是joker。......
  • Audio Effects Settings
    前言        每一个音频输出节点都可以通过附加音频效果来改变最终声音输出的结果,该结果可能会受到效果附加顺序的影响。EffectsLow/HighPass(低通滤波器)属性说明Cutofffreq(截止频率)在Lowpass中,只会输出赫兹小于Cutofffreq的声波在Highpass中,只会输出赫兹大于......
  • 【C++/STL】map和set介绍
    ......
  • k8s Deployment与StatefulSet:深入理解两种控制器的区别
    Kubernetes(k8s)是一个强大的容器编排平台,它提供了多种资源对象来管理容器化应用。在这些资源对象中,Deployment和StatefulSet是两种常见的控制器,它们用于不同场景下的容器应用管理。本文将深入探讨这两种控制器的区别,帮助你更好地理解它们在Kubernetes中的应用和选择。一、Kuber......
  • [AGC056D] Subset Sum Game
    [AGC056D]SubsetSumGame题面翻译一块黑板上写着\(n\)个整数。第\(i\)个整数记作\(a_i\)。保证\(n\)是偶数。此外,给定\(L,R\)。Alice和Bob在玩一个游戏。他们轮流操作,Alice先手。在每一轮中,玩家需要选择一个写在黑板上的数,并擦掉它。游戏会在\(n\)轮后结束。......
  • 【待做】【AI+安全】数据集:HTTP DATASET CSIC 2010
    HTTPDATASETCSIC2010HTTPDATASETCSIC2010包含已经标注过的针对Web服务的请求。该数据集由西班牙最高科研理事会CSIC在论文ApplicationoftheGenericFeatureSelectionMeasureinDetectionofWebAttacks中作为附件给出的,是一个电子商务网站的访问日志,包含36000......
  • Android开发 - 滑动条监听进度setOnSeekBarChangeListener方法解析
    setOnSeekBarChangeListener方法的参数是一个SeekBar.OnSeekBarChangeListener类型的对象,该对象中包含了三个方法:onProgressChanged(SeekBarseekBar,intprogress,booleanfromUser):当SeekBar的进度发生变化时就会调用这个方法。在这个方法中,我们可以获取SeekBar滑动条的当......
  • X-Frame-Options may only be set via an HTTP header sent along with a documen
    X-Frame-OptionsmayonlybesetviaanHTTPheadersentalongwithadocumen_百度搜索(baidu.com)X-Frame-Options-盼星星盼太阳-博客园(cnblogs.com)vue项目中iframe嵌套其他项目,iframe父子页面传值-盼星星盼太阳-博客园(cnblogs.com)......
  • 在K8S中,replicaset 和deploy有何区别?
    在Kubernetes(K8S)中,ReplicaSet和Deployment是两种非常重要的资源对象,它们都用于管理Pod的副本数量。尽管它们有一些相似之处,但在功能和用途上还是存在显著差异。下面详细介绍它们之间的区别:1.ReplicaSet定义:ReplicaSet是一种确保运行指定数量的Pod副本的Kuber......