省实集训总结 DAY1(深搜+DP+宽搜)

清北学堂集训day1 咳咳。。 先说一些题外话,这么久不更是有原因的,集训+初赛占得时间太多了了 段考都爆炸了 嗯,我居然初赛过了!!??看到今年试卷的时候我还以为要翻车了呢。。。 不说了,下面应该会对清北学堂这些天的集训题目AC一下,会陆续发上来的,嗯,复赛之前发完??(雾) 阅读详情

问题 E: 生成字符串(strs)
【问题描述】
假设字符串只由字符“0”,“1”,“”组成,其中字符“”表示该字符可由字符“0”或“1”替代。
现有一些字符串,根据这些字符串生成所有可生成的字符串。如:
{10,1,0 }可生成{10,01,11,00 }
{101,001,*01}可生成{101,001}
注意后一个例子中“*01”并没有生成新的字符串。
【输入格式】
第一行是两个整数m,n(1≤m≤15,1≤n≤2500)。m表示字符串的长度,n表示字符串的个数。
以下n行每行各有一个字符串。文件中各行的行首、行末没有多余的空格。
【输出格式】
一个整数,表示所能生成的字符串的个数。
【输入样例】
2 3
10
1
0

【输出样例】
4

深搜模版题+二进制
就是有时候会忘掉细节
直接贴标程

#include<bits/stdc++.h>
using namespace std;
int c[40000], ans=0;
int m, n;
char s[20];

int change(char s[]){
	int ret=0;
	for(int i=0; i<strlen(s); i++)
	ret=(ret<<1)+s[i]-'0';
	return ret;
}
void dfs(char s[], int k){
	if(k==m){
		int tt=change(s);
		if(c[tt]==0) ans++, c[tt]=1;
		return;
	} 
	if(s[k]=='*'){
		s[k]='0';
		dfs(s, k+1);
		s[k]='1';
		dfs(s, k+1);
	}else dfs(s, k+1);
}

int main(){
	scanf("%d%d", &m, &n);
	while(n--){
		scanf("%s", s);
		dfs(s, 0);
	}
	printf("%d\n", ans);
	return 0;
}

直接下一题(对,我就是不带解释 )

问题 F: 楼梯(stair)
【问题描述】
有N级楼梯,第i级楼梯的高度是H[i]。ROBIN必须通过一系列的操作来爬楼梯,每一步,ROBIN只能做如下三个选择之一:
1、如果后一级楼梯的高度比ROBIN当前所在楼梯的高度恰好高1,那么ROBIN可以从当前楼梯爬上后一级楼梯。
2、只要ROBIN不是在第1级楼梯,如果ROBIN愿意,ROBIN可以从当前楼梯后退到前一级楼梯。
3、假如ROBIN最近K步都是在后退(不妨假设现在退到了第i级楼梯),那么ROBIN可以从当前的第i级楼梯走一步到达第j级楼梯,其中j > i,而且 满足H[j] – H[i] <= 2K。其中2K表示2的K次方。
ROBIN一开始在第1级楼梯,ROBIN至少要走多少步才能到达第N级楼梯?如果无法到达第N级楼梯,输出-1。
【输入格式】
第一行,一个整数N。(2 <= N <= 50)
第二行,N个整数,第i个整数表示第i级楼梯的高度H[i],高度是升序的。
0 <= H[i] <= 1000000000。H[1]一定等于0。
在这里插入图片描述
典型的dp
第i步有可能从两个地方来:1:从第i-1步(高度相差一)2:从第i-k步(2k>高度差)
代码就出来了(有一个优化:能跳就直接跳)

贴标程

#include<bits/stdc++.h>
using namespace std;
const int INF=200000;
const int N= 50+5;
int f[N], h[N], n;

int main()
{
	cin>> n;
	for(int i=1;i<=n; ++i) cin>> h[i];
	for(int i=1; i<=n; ++i) f[i]=INF;
	f[1]=0;
	for(int i=1; i<=n; ++i)
	{
		if(h[i]-h[i-1]==1) f[i]=min(f[i], f[i-1]+1);
		for(int j=1; j<=i-1; ++j) 
		for(int k=1; k<j; ++k)
			if(h[i]-h[j-k]<=(1<<k)) {
				f[i]=min(f[i], f[j]+k+1);
				break;
			}
	}
	if(f[n]==INF)cout<<-1;
	else cout<< f[n]<< endl;
	return 0;
}

最后一个:(好的我就是这么草率 )(毕竟这些真的没哈子好写的 )
问题 G: 迷宫(migong)
时间限制: 1 Sec 内存限制: 128 MB
提交: 37 解决: 24
[提交][状态][讨论版][命题人:admin]
题目描述

【问题描述】

小刚在迷宫内,他每步只能往上下左右相邻的格子移动一格,且不能走出迷宫范围。他需要从A点出发,按顺序经过B,C,D……,到达最后一个点,再回到A点。迷宫内有些障碍,问至少走几步。

【输入】

输入文件migong.in共n+1行。

第一行有三个数n,m表示迷宫有n行,m列。

第2行到第n+1行,每行m个字符,可能是’A’…’Z’,’2’,’0’ 其中,2表示障碍,0表示可以走。’A’…’Z’也可以走。

【输出】

输出文件migong.out共1行,就是至少走几步可以按规定走完,如果不行,输出“Impossible”
在这里插入图片描述
宽搜+细节(预处理等)(其实真的就是一道裸宽搜 )

#include<bits/stdc++.h>
#include<queue>
using namespace std;
const int N=105;
struct node{
	int x, y;
};
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};
int step[N][N], visit[N][N];
node a[30];
char G[N][N];
int n, m, ans;

int bfs(char st, char ed){
	memset(visit, 0, sizeof(visit));
	memset(visit, 0, sizeof(step));
	queue<node> q;
	node tmp; 
	tmp.x= a[st-'A'].x;
	tmp.y= a[st-'A'].y;
	q.push(tmp);
	visit[tmp.x][tmp.y]=1;
	step[tmp.x][tmp.y]=0;
	while(!q.empty()){
		node now= q.front();
		q.pop();
		for(int i=0; i<4; ++i){
			int nx=now.x+dx[i];
			int ny=now.y+dy[i];
			if(nx<1||nx>n||ny<1||ny>m||visit[nx][ny]||G[nx][ny]=='2') continue;
			step[nx][ny]= step[now.x][now.y]+1;
			tmp.x=nx, tmp.y=ny;
			visit[nx][ny]=1;
			q.push(tmp);
			if(nx==a[ed-'A'].x&&ny==a[ed-'A'].y) return step[nx][ny];
		}
	}
	return -1;
}

char maxa;


int main(){
	cin>> n>> m;
	for(int i=1; i<=n; ++i)
	for(int j=1; j<=m; ++j)
	{
		cin>> G[i][j];
		if(G[i][j]>='A'&&G[i][j]<='Z'){
			a[G[i][j]-'A'].x= i; 
			a[G[i][j]-'A'].y= j;
			maxa=max(maxa, G[i][j]);
		} 
	}
	for(char st='A'; st<maxa; st++) 
	{
		int tt=bfs(st, st+1);
		if(tt==-1) {
			cout<<"Impossible";
			return 0;
		}
		ans+=tt;
	}
	ans+=bfs(maxa,'A');
	cout<< ans<< endl;
	return 0;
}

好的就酱
其实我蛮想不用queue而直接用一个数组代替(如果空间允许)(毕竟手打的安心点)(就我这水平就想手打STL了 )

雅礼集训2019 day7 Inverse 1≤n≤500,0≤k≤501 ≤ n ≤ 500,0 ≤ k ≤ 501≤n≤500,0≤k≤50, P是一个1到n的排列. 概率dpdpdp好题。 思路: 定义fi,j,kf_{i,j,k}fi,j,k​表示kkk轮变换之后api&gt;apja_{p_i}&gt;a_{p_j}api​​>apj​​的概率。 然后考虑对当前轮翻转的区间[l,r][l,r... 阅读详情

相关推荐

代码源集训复盘Day7

WA5发原因:一开始题面是整场2024 China Unversity of Geosciences (Wuhan) Freshman Contest的题面,然后里面有道题叫文神的序列,我一直在交那一道。种数都要增加到同一个数,可以一起计算。这种情况的复杂度为调和级数。可以发现,字母是什么不重要,重要的是长度。的倍数看起来就没啥意义,所以考虑输出的数字应该是。可以想到相邻质数间隔较小,直接枚举即可。,那么所有数都增加到同一个数,直接。的倍数,剩下的操作次数还需要被。的约数,那么可以考虑让。

chenweizhen2011的博客 820

【2018寒假集训Day 1】【位运算】生成字符串

生成字符串(strs) 【问题描述】 假设字符串只由字符“0”,“1”,“”组成,其中字符“”表示该字符可由 字符“0”或“1”替代。 现有一些字符串,根据这些字符串生成所有可生成的字符串。如: {10,1,0 }可生成{10,01,11,00 } {101,001,*01}可生成{101,001} 注意后一个例子中“*01”并没有生成新的字符串。 【输入格式】strs.in

WSR的安全屋 1135

串口接收完整一帧数据包的3种方法

本文介绍3种使用串口接受一帧完整数据包的方法,串口接收数据是字节接收的,串口每接收1字节数据,产生一个串口中断,我们在中断中将接收到的数据存放到buf中进行保存,但是数据的发送和接收都是按照帧为单位进行传输的,因此我们要在接收数据的同时判断当前接收的数据是否是完整的一帧。 一般串口完整数据帧的定义:帧头(2字节,例如AA、BB) + 数据长度(2字节) + 数据+ CRC16校验(2字节) + 帧尾(2字节) 帧头、帧尾表示一帧数据的开始和结尾,数据长度表示当前数据帧中负载数据大小,CRC16校...

爱吃鱼的猫 6万+

NOIP模拟 生成字符串

  【问题描述】           我们规定涉及的字符串只由字符"0","1","*"组成,其中字符"*"表示该字符可由字符"0"或"1"替代           现有一些固定长度的字符串,根据这些字符串生成所有可生成的相同长度的不重复的字符串。如:           {10,*1,*0}可生成{10,11,01,00}           {101,001,*01}可生成{

Michael_GLF的博客 414

GD32H7 SPI驱动实战:手把手教你用SPI3连接外部Flash(W25Q128)并实现读写

本文详细介绍了基于GD32H7系列MCU的SPI3接口驱动W25Q128外部Flash的全流程开发指南。从硬件设计、引脚配置到SPI3外设深度配置,再到底层通信函数实现和高级功能优化,提供了完整的解决方案。特别针对高速读取、DMA传输和信号完整性等关键环节进行了优化,确保系统在-40℃~85℃范围内稳定工作。

weixin_28729205的博客 380

Python + Google AI 自动修复 Sonar Bug 实践

在工作中总会遇到种种不期而至的需求,比如前段时间突然要修复所有 Sonar Bug,涉及各种琐碎的代码风格问题,包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了,Sonar 上的问题层出不穷,各种问题已经累积到了上万个,手动修复不但费时费力,而且过程异常枯燥。

子洋 Blog 2415

Hidden String 5311 (深搜+字符串)

Hidden String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1476    Accepted Submission(s): 526 Problem Description     Today is

yanghui07216的博客 621

【HALCON 25.11 + C#】 01:2026年工业机器视觉实战详解(从入门到精通)

2026年机器视觉市场规模将突破230亿美元,HALCON 25.11的革命性更新与C#的工业集成优势形成黄金技术栈。本文作为付费专栏开篇序章,聚焦“为什么现在必须学25.11+C#”的核心问题,通过真实工业案例、五项核心技术突破、联合编程架构优势及30篇系统学习路线,全方位论证其投资价值。读者将掌握持续学习、深度OCR加速等关键技能,获得可直接上产线的工业级代码资产与架构设计思维,解决柔性生产、边缘部署等核心痛点,成为具备技术溢价的机器视觉工程师。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1224

问题 E: 【字符串】生成字符串

你的忏悔或许会让你心安,但未必别人如此。 题目描述 假设字符串由字符“0”,“1”,“*”组成,其中字符“*”表示该字符可由字符“0”或“l”替代。 现有一些字符串,根据这些字符串生成所有可生成的字符串。如: {10,*1,0*)可生成{10,01,11,00} {101,001,*01)可生成{10l,001) 注意后一个例子中“*01”并没有生成新的字符串。 输入 第1行是两个整...

0k-ok 1083

52、切换线性动态系统:原理、挑战与高斯和滤波解决方案

本文介绍了切换线性动态系统(SLDS)的基本原理及其在复杂时间序列建模中的应用。SLDS结合了隐马尔可夫模型的离散状态切换与线性动态系统的连续状态演化,适用于系统动态发生跳跃的场景,如化工过程监测和金融市场分析。由于精确推理在计算上不可行,文章重点阐述了高斯和滤波这一近似方法,通过有限高斯混合来逼近后验分布,并详细描述了其递归更新、权重计算与组件合并流程。同时讨论了性能评估、优化策略及常见问题的解决方案,并展望了SLDS与深度学习、在线学习和多模态融合的未来发展方向。

algae的博客 161

【新能源汽车测试工程师必看!DBC文件50条实战技巧,看懂这篇直接封神】

如果你是新能源汽车研发/测试工程师,还在为信号解析错误、报文找不到、DBC看不懂、实车故障复现不了头疼——那这篇文章,你一定要!在整车电控开发里,DBC = CAN总线的官方字典。没有DBC,报文就是一串乱码;读不懂DBC,测试寸步难行;用不好DBC,排查故障全靠猜。本文总结50条全网最实用、最贴近实车、最能解决问题的DBC技巧,从基础语法到新能源专用信号,从工具操作到故障排错,全部来自一线台架、实车、高压平台实战经验。不废话、不空谈、不玄学,全是能直接落地的硬货!

优快云-新能源汽车研发测试专业博主 1370

<OJ_Sicily>生成字符串

回溯算法求解生成字符串

Vipin_Pei的博客 1221

基于matlab不变矩的数字验证码识别系统

随着互联网技术的快速发展和应用,网络给人们提供了丰富的资源和极大的便利,但随之而来的是互联网系统的安全性问题,而验证码正是加强 Web 系统安全性的产物。全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)也是验证码的一个应用程序,可以区分用户是人类还是计算机智能单击对象。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 917

【无标题】NOI省选集训

询问次数为2n,考虑On找到一个诚实的人,再用On−1询问其他人。<=NY因为现在保证了诚实的人数量大于不诚实的人的数量,所以考虑用一个队列维护现在询问过的人,用队列中最靠后的去询问未被询问的人。如果输出N,则删除这两个,否则就加入。这样就保证了队列中的诚实的人数量比不诚实的人的数量多,最后队列中一定会剩下一个诚实的人。所以就做完了。

sbasdas的博客 956

PCL点云库入门(第6讲)——PCL库中Eigen数学工具库的基本使用(持续更新)

Eigen库是一个高性能的C++模板库,专注于线性代数、矩阵和向量运算,以及相关的数值分析和算法。在Eigen库中,所有的矩阵和向量均被视为矩阵模板类的实例。向量可以被看作是特殊形式的矩阵,具体表现为只包含1行或1列。

qq_36812406的博客 1752

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LOJ 6495~6497「雅礼集训 2018 Day1」

. 真是看懂std就秒的三道题,但是看懂就很难啊 (感谢superguymj和memset0两个大佬的代码) 稍微说一下题解 -------------------------------------------------------- 「雅礼集训 2018 Day1」树 这道题的正解被superguymj大佬吊打了,原来O(n⋅2n)O(n·2^n)O(n⋅2n)变成了O(n4)O(n^4)...

扩展の灰(Extended Ash/Cooevjnz) 1562

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

GDOI2021 联合省选及赛前集训 总结

GDOI2021 联合省选及赛前集训 总结 考得不太好,但是T1送了100???CCF用脚造数据 停课训练还是找到了做题的感觉的,也把之前的一部分缺漏的知识点补了(虽然都没用上) Day1 一看题觉得T1可做,想到二分答案然后枚举值域起点,那么就可以在原序列中有一段不翻转,其他都要翻,这个用 前缀/后缀 最小/最大值就可以直接做。感觉上这个做法应该没有什么问题,复杂度 O(nlog⁡n)O(n \log n)O(nlogn)于是就去看后两题了。 T2看到题连暴力都不会写,似乎可以用高斯消元?但是这个的时间复

qq_45202550的博客 243

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

集训队测试总结合集

集训队这两个星期来一些测试的总笔记合集,不含两个 DP 算法专题。

lkb 的小屋 1147

一周编程集训day7:实战DP

一周编程集训day7:实战DP1 任务2 0-1背包问题实现3 leetcode4 参考 1 任务 实战DP:完成0-1背包问题实现(自我实现)及Leetcode上Palindrome Partitioning II(132)。并同时温习前六天内容,做出总结! 2 0-1背包问题实现 该问题已经在一周编程集训day5:递归及DP已经实现。 3 leetcode 1.132. 分割回文串 II ...

qq_30006749的博客 384

2025联合省选游记

感觉这次打得还行,Day2Day\ 2Day2暴力没打满是败笔。感觉T1T1T1不会就开始慌,过了T1T1T1才能进状态的老毛病又犯了,这东西得慢慢改掉。用bitsetbitsetbitset存图都没想到,区间加等差数列写不对,太蠢了,还得练。不管怎样,终究是在一年后迈出了新的一步,前路漫漫,继续努力吧。

mamingzhi_2026的博客 763

集训DAY8之树形 DP与换根DP

树形动态规划(Tree DP)是动态规划在树结构上的具体应用,它充分利用了树的递归特性和层次结构来设计高效的求解策略。作为无环连通图,树的特殊性质为动态规划提供了天然的计算框架。在树形 DP 中,我们通常将问题分解为子树问题:对每个节点计算状态值,然后根据父子关系将这些状态值向上传递。这种自底向上(后序遍历)或自顶向下(前序遍历)的计算方式,与树的遍历顺序完美契合。状态定义通常与子树信息密切相关状态转移依赖于子节点的状态无环特性避免了循环依赖问题计算顺序由树的遍历顺序决定。

Liyankai1523900的博客 845

纪中集训 Day3&Day4

纪中集训 Day3 有点水哦!!开森:) T1: 这是一道常识题啊! 快排+2位小数输出 T2: 一个前缀和搞定 可是为什么我只有50 T3: 本来是用深搜的,可ta不负众望的炸了 后来经kj大佬启发合作,三维的DP竟然过了,哦耶! T4: 一头雾水 蒙点理所当然的0分 T1 sort 题目: 小xxx和小yyy是好朋友。小yyy的成绩很差,以至于 GPAGPAGPA(平均绩点)在系内倒数。系内...

Y的博客 241

2019牛客国庆集训派对day4 H:Highway(树形dp求树上最长路径)

【题意】 给定一棵树,两个结点之间的距离为树上路径的长度,要求构造一棵树上所有边的权值和最大的树并输出权值。 【题解】 我们可以把这个问题转化成,求每个结点的树上最长路径再加入到新构造的树中,注意n个长度求和后要删去最长边,因为最长的路径被重复计数了而我们只需要n-1条边。 那么树上最长路径怎么求呢? 可以看出,离第i个结点最远的距离,是边(v,i)的长度(其中v是i 的父亲)加上第v个...

菜鸡成长史 420

福州市 2025 国庆集训 Day1 前三题题解

集训题解(太菜了只会前三题)

Brilliant_Sky的博客 1062

集训Day2

雅礼集训2017Day2 T1 给你一个水箱,水箱里有n-1个挡板,水遵循物理定律 给你m个条件,表示第i个格子上面y+1高度的地方有或没有水 现在给你无限的水从任意地方往下倒,问最多满足多少条件 n,m 1e5 SOL: 考虑答案的表示方法,肯定是类似于dp["区间1到n"]这种的 “区间1到n”这个东西我们可以状压,就过了20% 另外10%的数据只有“有水”的...

272

集训DAY7之线性dp与前缀优化/stl优化

DP也就是动态规划(Dynamic Programming)是求解决策过程最优化的过程动态规划主要用于求解以时间划分阶段的动态过程的优化问题问题类型典型例子状态维度核心思路单序列优化最长递增子序列、打家劫舍一维依赖前序元素的最优解双序列匹配LCS、编辑距离二维对比两个序列的字符匹配关系区间优化最长回文子序列、矩阵链乘二维按区间长度递增顺序递推路径计数/最值不同路径、最小路径和二维累加或取min/max路径上的状态DP优化策略。

Liyankai1523900的博客 999
上一篇: 省实集训总结 DAY1(离散化+双指针)
C_plus_
博客等级 码龄7年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值