JSOI2017 代码

\(\text{JSOI2017 day1t1 代码}\)

题解

\(d_i\)表示长度为\(i\)的库函数数量,\(h_i\)表示长度为\(i\)的可编译代码的数量,\(f_{i,j}\)表示寄存器初始值为\(j\)、终值为\(0\)的代码数量,\(F_{i,j}\)表示寄存器初值为\(0\)、终值为\(j\)的代码数量,\(g_{i,j}\)表示长度为\(i\)可以加上\(j\)的一个真约数、不包含括号的代码数量
\(d,h,g\)易求,考虑\(f,F\)怎样转移
对于\(f\),首先有一个最简单的转移,在开头加上\(+\)\(-\)

\[f_{i-1,j-1}+f_{i-1,j+1}\rightarrow f_{i,j} \]

在开头加上库函数

\[\sum_{k=2}^{i}f_{i-k,j}d_k\rightarrow f_{i,j} \]

在开头加上括号
\(j=0\),括号中可以是任何可编译代码

\[\sum_{k=2}^{i}f_{i-k,j}h_{k-2}\rightarrow f_{i,j} \]

\(j\not =0\),括号中代码需要再一次或若干次执行后将\(j\)变为\(0\)

\[\sum_{k=2}^{i}f_{i-k,j}(g_{k-2,j}+f_{k-2,j})\rightarrow f_{i,j} \]

这里也可以意识到前面将\(g\)定义为真约数是为了避免算重
\(F\)的转移类似,不过由于定义不同,考虑在结尾加东西

\[F_{i-1,j-1}+F_{i-1,j+1}\rightarrow F_{i,j} \]

\[\sum_{k=2}^{i}F_{i-k,j}d_k\rightarrow F_{i,j} \]

\(j=0\),考虑在结尾加括号

\[\sum_{k=2}^i[F_{i-k,0}h_{k-2}+\sum_{w\not =0}F_{i-k,w}(g_{k-2,w}+f_{k-2,w})]\rightarrow F_{i,j} \]

答案即为\(\sum_{i}F_{n,i}\)

\(\text{code}\)

#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int N=3e2+10,C=1e2+50;
const ll mod=1e9+7;
int n,k,d[N+10];
ll h[N+10],g[N+10][N+10],f[N+10][N+10],F[N+10][N+10];
void Add(ll &a,ll b){a+=b,a%=mod;}
int main()
{freopen("code.in","r",stdin);freopen("code.out","w",stdout);scanf("%d %d",&n,&k);for(int i=1,l=1;l<=k;i++,l=l*10) d[i+1]=min(9*l,k-l+1);
//	for(int i=1;i<=n;i++) printf("%d ",d[i]);puts("");h[0]=1;for(int i=1;i<=n;i++){h[i]=h[i-1]*2%mod;for(int j=2;j<=i;j++)Add(h[i],h[i-j]*h[j-2]%mod),Add(h[i],h[i-j]*d[j]%mod);}
//	for(int i=1;i<=n;i++) printf("%lld ",h[i]);puts("");g[0][0+C]=1;for(int i=1;i<=n;i++)for(int j=-n+C;j<=n+C;j++){g[i][j]=g[i-1][j-1]+g[i-1][j+1],g[i][j]%=mod;for(int k=2;k<=i;k++)Add(g[i][j],g[i-k][j]*d[k]%mod);}
//	printf("%lld\n",g[3][3+C]);
//	return 0;for(int i=1;i<=n;i++){for(int j=-n;j<0;j++){for(int k=2;-n<=j*k;k++)Add(g[i][j*k+C],g[i][j+C]);g[i][j+C]=0;}for(int j=n;j>0;j--){for(int k=2;j*k<=n;k++)Add(g[i][j*k+C],g[i][j+C]);g[i][j+C]=0;}}
//	printf("%lld\n",g[3][3+C]);
//	return 0;f[0][0+C]=1;for(int i=1;i<=n;i++)for(int j=-n+C;j<=n+C;j++){Add(f[i][j],f[i-1][j-1]);Add(f[i][j],f[i-1][j+1]);for(int k=2;k<=i;k++) Add(f[i][j],f[i-k][j]*d[k]%mod);if(j==C){for(int k=2;k<=i;k++)Add(f[i][j],f[i-k][j]*h[k-2]%mod);}else{for(int k=2;k<=i;k++)Add(f[i][j],f[i-k][C]*f[k-2][j]%mod),Add(f[i][j],f[i-k][C]*g[k-2][j]%mod);}}
//	printf("%lld\n",f[3][0+C]);
//	return 0;F[0][0+C]=1;for(int i=1;i<=n;i++)for(int j=-n+C;j<=n+C;j++){Add(F[i][j],F[i-1][j-1]);Add(F[i][j],F[i-1][j+1]);for(int k=2;k<=i;k++) Add(F[i][j],F[i-k][j]*d[k]%mod);if(j==C){for(int k=2;k<=i;k++){Add(F[i][j],F[i-k][j]*h[k-2]%mod);for(int w=-n+C;w<=n+C;w++)if(w!=C)Add(F[i][j],F[i-k][w]*g[k-2][w]%mod),Add(F[i][j],F[i-k][w]*f[k-2][w]%mod);}}}
//	printf("%lld %lld %lld %lld\n",F[3][0+C],F[3][1+C],F[3][2+C],F[3][3+C]);ll ans=0;for(int i=-n+C;i<=n+C;i++) Add(ans,F[n][i]);printf("%lld\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/737081.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1s内控制向某个请求请求的次数

背景 有的时候后端提供的接口对相同的IP进行限制,在某个时间内不能发送超过X条的请求,一旦超过指定的请求数会导致后续请求接口会出现异常。 效果需求 比如:在1s内最多同时发送2个请求,多出来的请求在后续的1s或者后续的Ns中发起 代码 <template><div class="…

电脑hold escape key to prevent startlsback怎么处理?

电脑出现hold escape key to prevent StartlsBack from,一般遇到这种问题之后,一直按住ESC键就没有了。但是还需彻底的解决掉这个问题。 首先我们按下“ctrl +alt +del”组合键打开任务管理器,左上角“运行新任务”,输入“control”并确定,就可以打开控制面板,查看方式为…

7.3日RTOS自学心得

我现在用的单片机主要是裸机系统,轮询系统和前后台系统(中断处理),但是为了以后的职业发展肯定还是要学习下操作系统的,也就是多任务系统FreeRTOS,在看野火的资料【[野火]uCOS-III 内核实现与应用开发实战指南】,学习到了第六章,任务的定义与任务切换的实现。 总结如下…

fisher线性判别分析和多分类问题探究

本文继续来讨论另一种分类模型————fisher线性判别分析 目录一、模型思想二、SPSS的实现1.参数设置(1)定义范围(2) 统计(3)保存与分类2.结果分析(1)典则判别函数系数(2)分类结果(3)分类函数系数(4)保存预测结果四、多分类问题 一、模型思想 我们以二分类问题举例…

[Paper Reading] GAIA-1: A Generative World Model for Autonomous Driving

GAIA-1: A Generative World Model for Autonomous Driving GAIA-1 时间:23.09 机构:Wayve TL;DR 本文介绍一种生成世界模型,该模型利用视频、文本和动作输入来生成逼真的驾驶场景,同时提供对自身车辆行为和场景特征的细粒度控制。 Method模型输入 训练过程输入video/text(…

进度报告1

(1)1.在黑马程序员中找到java的教学网课,初步学习了Java语言的概述以及完成了java的开发环境搭建,成功安装了jdk并且利用命令行窗口顺利验证java和javac是否正常安装并且能使用。2.编写入门代码helloworld代码:public class HelloWorld{ public static void main(String[]…

模拟集成电路设计系列博客——8.4.2 时间-数字转换器

8.4.2 时间-数字转换器 在上一节我们介绍了TDC的一种典型实现,即单延时链TDC,通过\(2^N\)的延迟单元和D触发器可以实现N bit的时间数字转换功能,但这种结构的分辨率受到延迟单元的最小延迟时间限制,即: \[LSB=\tau_{delay}=\frac{T}{2^N} \tag{8.4.10} \]其中\(T\)为TDC的…

聊一聊领域驱动与贫血模型

写在前面 前段时间跟领导讨论技术债概念时不可避免地提到了代码的质量,而影响代码质量的因素向来都不是单一的,诸如项目因素、管理因素、技术选型、人员素质等等,因为是技术债务,自然就从技术角度来分析,单纯从技术角度来看代码质量,其实又细分很多原因,如代码设计、代码…

《智能计算系统》第五章 编程框架原理(上)课程笔记

《智能计算系统》第五章 编程框架原理(上)课程视频链接:https://www.bilibili.com/video/BV1Ei421i7Rg 本文源自于B站国科大计算所 智能计算系统课程官方账号 所公开上传的视频,在原有视频之上,提取了关键帧、将音频转成了文字并进行了校正,以便学习使用。在此,也感谢国…

点云分割网络---Point Transformer V2

PDF: 《Point Transformer V2: Grouped Vector Attention and Partition-based Pooling》 CODE: https://github.com/Gofinge/PointTransformerV2 一、大体内容 前面一篇文章介绍了Point Transformer,这一篇在其基础上进行改进,提出了强大且高效的Point Transformer V2模型,…

【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法

一、介绍 坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实(杏仁, 巴西坚果, 腰果, 椰子, 榛子, 夏威夷果, 山核桃, 松子, 开心果, 核桃)等图片数据集进行训练,得到一个识别精度较高的模型文件,让后使用Django搭建Web网页端…

MRCTF 2022 EzJava

MRCTF 2022 EzJava 题目分析 下载附件得到一个 jar 包和一个 waf 配置文件。如果只是为了本地搭建环境,直接启动 jar 包就行了,但是如果需要进行远程调试就需要进行一些配置(这个网上教程很多),这个调试也要看具体需求,能直接打通的话就不需要调试。 但是不管怎么说,第一…

逻辑回归求解二分类问题以及SPSS的实现

分类问题就是给出物质的属性,判断其属于什么成分,本文将讲述逻辑回归求解二分类问题 本文着重于模型的实现,对于推导只是概括性的叙述 目录一、问题提出二、逻辑回归函数logistic1.线性线性概率模型2.sigmod函数3.求解方法————极大似然估计4.分类原则三、SPSS实现———…

线上的一次fullgc排查过程

线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力。同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验。过去半年时间里,我们的广告系统出现了多次和GC相关的线上问题,有Full GC过于频繁的,有Young G…

基于GWO灰狼优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真

1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印):2.算法涉及理论知识概要LDPC码是一种线性错误修正码,以其接近香农极限的优良性能而被广泛应用于现代通信系统中。NMS译码是一种基于最小平方误差准则的软判决译码方法,其目标是找到一个最可能的码字,使得接…

k8s-核心组件

核心组件组成 Kubernetes 主要由以下几个核心组件组成: - etcd :保存整个集群的状态 - API Server:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制 - Controller Manager:负责维护集群的状态,如故障检测、自动扩展、滚动更新等 - Scheduler:…

学习笔记485—Excel技巧:一键将文本数字转换为数值

Excel技巧:一键将文本数字转换为数值在使用Excel进行数据处理时,经常会遇到数据格式不匹配的问题。特别是当从外部导入数据或手动输入数据时,数字可能会被误识别为文本格式,这在进行数据计算和分析时会带来诸多不便。幸运的是,Excel提供了一些便捷的方法,可以帮助我们一键…

使用IDEA给项目打jar包

使用IDEA给项目打jar包参考地址:https://www.cnblogs.com/blog5277/p/5920560.html 感谢作者一、准备一个Java项目并先看看效果 ​ 只想打包,就跳过这一步: 一、准备一个Java项目并先看看效果。 ​ 如果启动jar包遇到报错:无法找到/加载主类就去看看第二步开头。 1、找一…

MCU点灯

MCU点灯 芯片型号:STM32F407ZET6 4个LED灯,网络标号分别为LED0 ,LED1,FSMC D10,FSMC D11。对应的引脚号分别为PF9,PF10,PE12,PE13。原理图//1.定义变量 GPIO_InitTypeDef GPIO_InitStructureF;//F端口 GPIO_InitTypeDef GPIO_InitStructureE;//E端口 int main()//中文注释 …

电子计算机类比赛的“武林秘籍”-电赛光电设计大赛计算机设计大赛嵌入式芯片与系统设计竞赛,你要的都在这里!

本文主要介绍了工科类学生参加比赛的必要性和益处、电子计算机类比赛的基本思路等内容电子计算机类比赛的“武林秘籍”-电赛光电设计大赛计算机设计大赛嵌入式芯片与系统设计竞赛,你要的都在这里! 为什么需要参加电子计算机类比赛 对于实现短期目标而言: 电子计算机类学科竞…