BJ集训 5.5 amazed

基于MATLAB的太阳能光伏电力仿真,模拟每日太阳能发电,可视化功率曲线,并通过数值积分计算总能量输出。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

题意:

给出一个分段一次函数fff。

f的定义域和值域都是[0…m]

形式如下:
给出m,c[0…m]

f就是依次连接(i,c[i])和(i+1,c[i+1])(0<=i<m)的线段所形成的函数

定义:
fk(x)=fk−1(f(x))f^k(x)=f^{k-1}(f(x))fk(x)=fk−1(f(x))
f1(x)=f(x)f^1(x)=f(x)f1(x)=f(x)

求fn(x)=xf^n(x)=xfn(x)=x的x的个数,若有无穷个,输出-1。

m<=70,1<=n<=1e6

题解:

首先思考清楚复合的过程是什么:
[i,i+1]变成[c[i],c[i+1]]
然后继续分,当然有可能翻转区间。

那么若干次复合后一个区间就会分成若干个小区间(有可能是一个点)

然后我们先不考虑端点的情况,fn(x)=xf^n(x)=xfn(x)=x的条件是什么,那就是[i,i+1]变回了[i,i+1]

那么不妨设f[i][j]f[i][j]f[i][j]表示走了若干步,[i,i+1][i,i+1][i,i+1]到[j,j+1][j,j+1][j,j+1]区间的方案数。

这个用矩阵乘法搞搞就好了。

再思考端点。

一个段点走了若干次能走回来要算一次。

但是我们可能在前面的区间就算过这个点了。

如果这个点向左走一点点,最后回到了[i−1,i][i-1,i][i−1,i],那么就会计算到这个点,右边同理。

这些也可以用倍增维护。

再看无解,即一个区间复合后唯一对应它自己(注意其他点都不能有),这个之前的f[i][j]f[i][j]f[i][j]由于考虑不到点的情况,所以要重新计算。

即严格控制每次的abs(c[i]−c[i−1])=1abs(c[i]-c[i-1])=1abs(c[i]−c[i−1])=1,这样的去走,再倍增一下就好了。

Code:

#include<bits/stdc++.h>
#define fo(i, x, y) for(int i = x, B = y; i <= B; i ++)
#define ff(i, x, y) for(int i = x, B = y; i <  B; i ++)
#define fd(i, x, y) for(int i = x, B = y; i >= B; i --)
#define ll long long
#define pp printf
#define mem(a) memset(a, 0, sizeof a)
using namespace std;

const int N = 81;

int T, n, m, c[N];

const int mo = 998244353;

struct jz {
	ll a[N][N];
} a, s;

jz operator *(jz a, jz b) {
	jz c; memset(c.a, 0, sizeof c.a);
	ff(k, 0, m) ff(i, 0, m) if(a.a[i][k])
		ff(j, 0, m) c.a[i][j] += a.a[i][k] * b.a[k][j] % mo;
	ff(i, 0, m) ff(j, 0, m) c.a[i][j] %= mo;
	return c;	
}

int f[2][N], g[N], o;
int u[2][2][N], v[2][N];
int p[N * 2], q[2][N * 2];

int main() {
	scanf("%d", &T);
	fo(ii, 1, T) {
		scanf("%d %d", &n, &m);
		fo(i, 0, m) scanf("%d", &c[i]);
		fo(i, 0, m) fo(j, 0, m) s.a[i][j] = a.a[i][j] = 0;
		ff(i, 0, m) {
			int x = c[i], y = c[i + 1];
			if(x > y) swap(x, y);
			ff(j, x, y) a.a[i][j] ++;
		}
		ff(i, 0, m) s.a[i][i] = 1;
		ll ans = 0;
		{
			int y = n;
			for(; y; y /= 2, a = a * a)
				if(y & 1) s = s * a;
			ff(i, 0, m) ans += s.a[i][i];
		}
		{
			mem(u[!o]);
			fo(i, 0, m) {
				f[o][i] = c[i], g[i] = i;
				
				if(i == 0 || c[i - 1] == c[i]) u[o][0][i] = 2; else
				u[o][0][i] = c[i - 1] > c[i];
				
				if(i == m || c[i + 1] == c[i]) u[o][1][i] = 2; else
				u[o][1][i] = c[i + 1] > c[i];
				
				v[0][i] = 0; v[1][i] = 1;
				
				if(i != 0 && abs(c[i - 1] - c[i]) == 1)
					q[o][i] = c[i] + (c[i - 1] > c[i]) * (m + 1); else
					q[o][i] = 2 * m + 2;
				if(i != m && abs(c[i + 1] - c[i]) == 1)
					q[o][i + m + 1] = c[i] + (c[i] < c[i + 1]) * (m + 1); else
					q[o][i + m + 1] = 2 * m + 2;
				p[i] = i; p[i + m + 1] = i + m + 1;
			}
			p[2 * m + 2] = q[o][2 * m + 2] = 2 * m + 2;
			int y = n;
			for(; y; y /= 2) {
				if(y & 1) {
					fo(i, 0, 1) fo(j, 0, m) {
						if(v[i][j] == 2) continue;
						v[i][j] = u[o][v[i][j]][g[j]];
					}
					fo(i, 0, m) g[i] = f[o][g[i]];
					fo(i, 0, 2 * m) p[i] = q[o][p[i]];
				}
				o = !o;
				fo(i, 0, m) f[o][i] = f[!o][f[!o][i]];
				fo(i, 0, 1) fo(j, 0, m) {
					if(u[!o][i][j] == 2) {
						u[o][i][j] = 2;
						continue;
					}
					u[o][i][j] = u[!o][u[!o][i][j]][f[!o][j]];
				}
				fo(i, 0, 2 * m + 2) q[o][i] = q[!o][q[!o][i]];
			}
		}
		int ye = 0;
		ff(i, 0, m) {
			if(p[i + m + 1] == i + m + 1) {
				ye = 1; break;
			}
		}
		if(ye) { pp("-1\n"); continue;}
		fo(j, 0, m) if(g[j] == j) {
			ans ++;
			ans -= !v[0][j];
			ans -= v[1][j] == 1;
		}
		pp("%lld\n", ans % mo);
	}
}
【电力负荷预测】项目介绍 MATLAB实现基于BO-Transformer-LSTM贝叶斯优化算法(BO)优化Transformer-LSTM组合模型进行居民用户多步电力负荷预测(含模型描述及部分示例 内容概要:本文介绍了一个基于BO-Transformer-LSTM的组合模型,用于实现居民用户多步电力负荷预测的完整项目实例。该模型融合Transformer的全局注意力机制与LSTM的局部时序记忆能力,构建能够捕捉长时依赖与周期性特征的深度学习架构,并引入贝叶斯优化(BO)自动搜索最优超参数组合,提升预测精度与训练效率。项目涵盖从原始数据清洗、特征工程、滑动窗口样本构建、模型设计到超参数优化、反归一化及多步误差评估的全流程,强调时间顺序划分以防止信息泄露,并通过周期编码、外生变量融合等方式增强数据表达能力。文中提供了详细的MATLAB代码示例,包括数据预处理、网络搭建、贝叶斯优化配置和预测结果评估等关键步骤。 适合人群:具备一定机器学习和时间序列分析基础,熟悉MATLAB编程环境,从事电力系统预测、智能电网、负荷管理等相关领域的研究人员、工程师及研究生。 使用场景及目标:①应用于居民级或多用户聚合负荷的短期至中期多步预测(如未来24小时);②服务于配电系统运行调度、需求响应基线设定、家庭能源管理系统优化、分布式能源协调控制等实际工程场景;③为科研提供可复现的深度学习+贝叶斯优化的技术路线参考。 阅读建议:此资源以实际项目为导向,建议读者结合提供的代码逐步实现并调试模型,重点关注数据质量控制、时间特征编码、组合网络结构设计与贝叶斯优化稳定性之间的协同关系,在实践中深入理解多步预测中的误差累积机制与超参数敏感性问题。 立即下载

相关推荐

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【GDOI三校联考】积木游戏

Description: Bessie的玩具箱里有N种(编号1至N)不同颜色的积木,第i种颜色的积木有a[i]个。每个积木就是一个1×1×1的正方体。刚开始,地板上没有任何的积木,Bessie每次从箱子里挑出一个积木(选择顺序由Bessie决定),然后有两种选择: 1、把这个积木直接放在地板上; 2、把这个积木叠放在之前已经放置好的某个积木正上方。 Bessie最终会把玩具箱里所有的积木全...

Cold_Chair的博客 951

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

【NOIP2017提高A组模拟7.13】第K小数

题目大意:有两个正整数数列,元素个数分别为N和M。从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少。 1<=n,m<=2∗1052*10^5 , 1<=k<=n*m题解:先将两个数组排序。 二分答案Ans。 对于a[i]找到最大的j使得a[i]*b[j]<=Ans。 那么对于a[i+1]的j一定小于对于a[i]的j,这个我们暴力扫一遍,就是O(n+

Cold_Chair的博客 885

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

准静态电磁场

叠加法 缺点:对于连续分布的电荷,叠加法的计算比较困难 虚位移法 概念 广义坐标:确实系统中导体形状、尺寸与位置的一组独立几何量。 广义力:企图改变某一广义坐标的力。 功:广义力乘上由它引起的广义坐标的改变量。 公式 ...

qq_35912930的博客 1860

【HNOI2016模拟4.1】神奇的字符串

Description: (1<=n<=109,1<=m<=105)(1<=n<=10^9, 1<=m<=10^5)题解:这道题是真的复杂。直接考虑不太好想。 我们可以考虑每个s所能影响的开头是哪些。First:我们假设把j按照c[j]的大小排了序(0<=jSecond:s_i = 0,和排好序后的p ~ (n - 1)相反。 s_i = 1,和排好序后的0~(p - 1)相反。这是一个有序的

Cold_Chair的博客 794

双向全桥隔离DC-DC变换器(DAB)的调制优化与挑战解析

本文深入解析了双向全桥隔离DC-DC变换器(DAB)的核心调制技术及其面临的挑战。文章从基础的相移调制(SPS)入手,逐步探讨了扩展相移(EPS)、双重相移(DPS)等进阶策略,并重点分析了电流优化与零电压开通(ZVS)等硬核优化技巧。针对DAB在实际应用中存在的建模困难、多模块并联及数字实现等挑战,提供了实用的应对策略与设计思路,旨在帮助工程师在性能、复杂度与成本之间找到最佳平衡。

weixin_29271053的博客 571

【gdoi2018 day2】木板

题目大意:随机、随机、随机题解:维护l,r分别表示每块木板向走向右第一个比它高的。修改x,l,r无变化。修改y1.拔高: 按原来的l,r往左右跳,维护一下。2.降低: 如果x-1的高度小于x,则从x-1开始,一直跳l,同时维护它们的r。右边的同理。查询: 结论是答案一定在x的r链和y的l链上,用个单调栈维护一下,复杂度为链长。由于是随机数据,所以链长期望是log的,因此总复杂度为O(n log

Cold_Chair的博客 715

告别误唤醒!S32K3xx低功耗设计避坑指南:Fast Standby模式与WISR寄存器操作详解

本文深入解析了NXP S32K3xx系列MCU在低功耗设计中常见的误唤醒问题,并提供了基于Fast Standby模式的解决方案。文章重点剖析了DCMRWF5寄存器的配置方法、WISR/WISR_64唤醒中断状态寄存器的标志位处理策略,以及如何利用32KB Standby SRAM保存唤醒状态,从而帮助开发者构建稳定可靠的汽车电子低功耗系统。

weixin_29163857的博客 362

2017–2024年中国10米/20米分辨率水稻种植分布数据集

摘要:本数据集提供2017-2024年中国23个省级行政区的水稻种植分布数据,包含单季稻和双季稻分类(GeoTIFF格式,WGS84坐标系)。5个省份分辨率为20米,其余为10米,基于Sentinel卫星数据和TWDTW方法生成。数据公开共享(7.99GB),使用需注明来源并引用相关文献(DOI:10.12199/nesdc.ecodb.rs.2025.012)。涉及学科包括遥感、生态学和地理学,研究成果需发送至国家生态科学数据中心备案。

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 1383

【NOIP2013模拟11.4A组】善良的精灵

题目大意:给出一个无向图,求每条边能否删去。一条边能被删掉,当且仅当删掉它以后,剩余图没有奇环。题解:1.全图无环或只有一个偶环,每条边都可以删。 2.图内又有奇环,又有偶环。能删掉一条边,当且仅当它被所有的奇环覆盖,且不被任何偶环覆盖。引理1易得。 引理2的第一个条件也容易知道,至于第二个条件,见图:现在问题变成了求一条边被多少个奇环和偶环覆盖。我们可以见一颗dfs树,环边会在上面形成反阻边,

Cold_Chair的博客 706

修复zookeeper未授权访问漏洞

【代码】修复zookeeper未授权访问漏洞。

qq_28392947的博客 4068

洛谷 P4704 太极剑

原题链接. 这题是THUSC2018 D2 T1 的弱化版。 题解: 对于一条边给边的两个点染色相同的颜色。 考虑在圆当中放若干个点,是相邻的两个点之间没有一种颜色出现超过一次。 答案=点数/2+1 最显然的做法是暴枚起点,然后扫一遍,复杂度O(n2)O(n2)O(n^2)。 题解说找到距离最短的相同颜色的点,设距离为d,枚举它们之间的点为起点,然后我们就知道后面至少隔d个才会出现相...

Cold_Chair的博客 584

《UE4游戏开发》之 《查cook资源失败,问题记录》

当项目打包时,cook出错,但是从原始引擎提供的信息中,没有提示具体的那个资源出错,要查到出错资源,还是非常麻烦。 下面就材质cook出错,增加一些日志,方便查找问题做简单记录 材质cook的一个阶段,是收集MaterialShaderMap,如果在这个阶段收集的信息出错,将会在FShaderMapContent::GetOutdatedTypes函数中,因为Shaders指针指向的内存有问题而出错,通过断点发现,FShaderMapContent这个类对象指针为null,而这个类对象的来源于AllMat.

qq_21919621的博客 2580

手把手教你用海康威视相机+DLP4500搭建双目结构光系统(附避坑指南)

本文详细介绍了如何使用海康威视相机和DLP4500搭建双目结构光三维测量系统,涵盖硬件选型、系统搭建、双目标定及三维重建等关键步骤。特别针对预算有限的开发者和实验室团队,提供实用的避坑指南和优化技巧,帮助实现0.02mm的高精度测量。

weixin_42526087的博客 462

【gdsoi2018 day3】基地

题目大意: 一看就会但是不敢打的题… 题解: 这题让人非常难受,因为很难找到一种简便的打法,我的做法用了2800bytes,你要知道这是一道数学题。 我的做法有两个核心的函数: 1.求一个点的子树大小。 2.求一个点的子树内的点到它的代价。 注意这两个函数不用考虑删除,就是原来的树,删除的影响可以直接用hash表搞掉。 首先我们设n到1的路径上的点为特殊点,特殊点的子树大小需要特殊...

Cold_Chair的博客 529

Open3D(C++) 读取、可视化并保存点云【2025最新版】

博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 4617

Samjia Contest 12.22

传送门: https://floj.tech/contest/449 题解: 注意到每次只会把一段往前copy,那么一个点每次都会只会向前走,假设现在x∈[yi,yi+1),hi&amp;amp;gt;0,那么x一次向左会跳yi-hi的距离,直到跳到yi左边。 这个可以直接除一下来得到跳出这段后的位置,倒着扫,x最终会定在一个点上。 如果两个点最终汇聚在一个点上,它们就是一样的。 时间复杂度O((a+q)b)O(...

Cold_Chair的博客 512

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Codeforces 966D Aztec Catacombs

原题链接. 题解: 若直接BFS出的距离小于等于3,则直接输出路径。 要么就是: 1.1-&gt;x-&gt;y-&gt;1-&gt;n 其中y-&gt;1本来没有边。 2.1-&gt;x-&gt;y-&gt;z-&gt;x-&gt;n 同理。 要优化一下完全图。 复杂度O(m)O(m)O(m) 证明太累了,不想写。 Code: #include&lt;cstdio&g...

Cold_Chair的博客 461

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【NOI2013模拟】秘密任务

Description: 对于 10 0% 的数据: 2 ≤ N ≤ 400, 1 ≤ M ≤ 4 00 0,1 ≤ T ≤ 5,1 ≤ Ai, c ≤ 10^9。无向图可能 有重边 。 题解: 首先建出最短路图,显然第二问就是跑个最小割吗? 第一问相当于问是否有大于一个最小割。 先跑一遍最大流,残量网络就分为三个部分: 1.超级源S能够走到的点。 2.能够走到超级汇T的点。...

Cold_Chair的博客 435

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

2019年华南理工大学程序设计竞赛(春季赛)H Parco_Love_GCD

传送门. 题解: 首先要想到显而易见的结论: 当右端点r固定时,gcd[l…r]不同的值只有log值域log值域log值域个。 假设l一开始在r上,不断向左移,当gcd变化时,gcd至少/2,所以最多除以log次。 那么不难得到一个暴力的做法: 右端点向右扫 维护gcd发生变化的左端点 右端点右移时,变化点的gcd对a[r]取gcd,再加上r为变化点,unique一下即可。 复杂度:O(nlog2...

Cold_Chair的博客 419

Codeforces 949E Binary Cards

传送门. 题解: 观察1: 一个序号x不会选超过一个。 假设选了x、x,可以通过选2x、-x替代 观察2: 选了序号x,就不会选-x,反过来也成立。 假设选了x,-x,可以通过选2x、-x替代 *lj样例就是来迷惑人的。 接下来怎么办呢? 暴力。 如果没有奇数,那么肯定不用1或者-1 用奇数的话,就枚举1还是-1,继续递归这个过程。 记得去重,这样的复杂度是T(n)=2∗...

Cold_Chair的博客 408

Codeforces Round #485 (Div. 1) E. Prince's Problem

原题链接. 题目大意: 给出一棵树。 每个点有一个值a。 每次询问给出u,v,x,问∏p在u到v的路径上&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcd(a[p],x)∏p在u到v的路径上&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcd(a[p],x)\prod_{p在u到v的路径上}~~~~~~gcd(a[p],x) 题解...

Cold_Chair的博客 349

Codeforces Round #485 (Div. 1) C. AND Graph

原题链接. 题目大意: 给出m个小于2^n的数。 若u&amp;amp;v=0,则u,v之间有边。 问联通块个数。 1&amp;lt;=n&amp;lt;=22 题解: 考虑从一个点出发,找到与它&amp;amp;=0的。 假设它是x。 则可行点y的集合是x的所有子集的补集。 这样的话建一些辅助点,打个记忆化标记一下,就可以遍历联通块了。 复杂度O(2n∗n)O(2n∗n)O(2^n*n)。 Code...

Cold_Chair的博客 294
上一篇: GDSOI2019混混记
下一篇: 【北大信息学夏令营模拟2019.5.21】神犇
Cold_Chair
博客等级 码龄11年 158粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值