Acwing2024蓝桥杯回溯

AcWing 167. 木棒

 dfs+剪枝:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=70;
int n,a[N],flag[N],sum,len;
//a:每个木棍长度,flag:状态数组
//len:木棒的长度,sum:所有木棍的总长度
//cnt:当前正在拼第几根木棒,curlen:当前木棒中已拼木棍的总长度,start:从哪个位置开始枚举木棍
bool dfs(int cnt,int curlen,int start){//木棒数量*木棒长度==所有木棍的总长度,找到答案if(cnt*len==sum) return true;//当前木棒已被木棍拼好,dfs下一木棒if(curlen==len) return dfs(cnt+1,0,0);//剪枝2:排除冗余:递增枚举木棍的编号for(int i=start;i<n;i++){//如果当前木棍用过了,则跳过if(flag[i]) continue;//如果当前木棍拼上该长度没超过len,继续dfsif(curlen+a[i]<=len){flag[i]=true;//标记选中if(dfs(cnt,curlen+a[i],i+1)) return true;flag[i]=false;//回溯//到此为当前木棍搜索失败//剪枝3:如果第一根木棍或者最后一根木棍搜索失败,则一定搜不到方案if(!curlen||a[i]+curlen==len) return false;//剪枝4:如果当前木棍没有搜到方案,则跳过所有长度相等的木棍int j=i;while(j<n&&a[j]==a[i]) j++;i=j-1;}}return false;
}
int main(){//多组测试数据直至0截止输入while(cin>>n,n){//清空数组a,flagmemset(a,0,sizeof a);memset(flag,0,sizeof flag);//初始化更新sum,lensum=0,len=0;//求出sum,len(>=数组a中的max)for(int i=0;i<n;i++){cin>>a[i];sum+=a[i];len=max(len,a[i]);}//剪枝1:优化搜索顺序,木棍长度从大到小排序sort(a,a+n,greater<int>());//循环一定会退出,最坏情况下所有木棍拼一根木棒while(true){//找到答案if(sum%len==0&&dfs(0,0,0)){cout<<len<<endl;break;}//没找到答案,len自增len++;}}return 0;
}

AcWing 843. n-皇后问题

dfs每一行: 

#include<iostream>
using namespace std;
const int N=10;
int n;
char mapp[N][N];
bool col[N],dg[2*N],udg[2*N];
//col:列,dg:主对角线(y=x+b)->(b=y-x)->(b=y-x+n),udg:反对角线(y=-x+b)->(b=x+y)
void dfs(int row){//row:行if(row==n+1){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<mapp[i][j];}cout<<endl;}cout<<endl;return ;}for(int i=1;i<=n;i++){//枚举全部的列if(!col[i]&&!dg[n-row+i]&&!udg[row+i]){mapp[row][i]='Q';col[i]=dg[n-row+i]=udg[row+i]=true;dfs(row+1);col[i]=dg[n-row+i]=udg[row+i]=false;mapp[row][i]='.';}}return ;
}
int main(){cin>>n;for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) mapp[i][j]='.';dfs(1);return 0;
}

dfs每一个格子:

#include<iostream>
using namespace std;
const int N=10;
int n;
char mapp[N][N];
bool row[N],col[N],dg[2*N],udg[2*N];
//row:行,col:列,dg:主对角线(y=x+b)->(b=y-x)->(b=y-x+n),udg:反对角线(y=-x+b)->(b=x+y)
void show(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<mapp[i][j];}cout<<endl;}cout<<endl;
}
void dfs(int x,int y,int cnt){if(y==n+1) x++,y=1;if(x==n+1){if(cnt==n){show();}return ;}//不放皇后dfs(x,y+1,cnt);//放皇后if(!row[x]&&!col[y]&&!dg[n+y-x]&&!udg[x+y]){mapp[x][y]='Q';row[x]=col[y]=dg[n+y-x]=udg[x+y]=true;dfs(x,y+1,cnt+1);row[x]=col[y]=dg[n+y-x]=udg[x+y]=false;mapp[x][y]='.';}return ;
}
int main(){cin>>n;for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) mapp[i][j]='.';dfs(1,1,0);return 0;
}

AcWing 1243. 糖果(第十届省赛)

暴力dfs (超时未AC 50points):

#include<iostream>
#include<cstring>
using namespace std;
const int N=10;
int n,m,k;
int a[105][25],flag[25];
bool row[105],key;
bool check(){for(int i=1;i<=n;i++){if(row[i]){for(int j=1;j<=k;j++){flag[a[i][j]]++;}}}for(int i=1;i<=m;i++) if(flag[i]==0) return false;return true;
}
void dfs(int x,int cnt,int sum){if(cnt==sum){if(check()){cout<<sum<<endl;key=true;}memset(flag,0,sizeof flag);return ;}for(int i=x;i<=n;i++){if(!row[i]){row[i]=true;dfs(x+1,cnt+1,sum);if(key) return ;row[i]=false;}}return ;
}
int main(){cin>>n>>m>>k;for(int i=1;i<=n;i++) for(int j=1;j<=k;j++) cin>>a[i][j];for(int i=(m/k)+(bool)(m%k);i<=n;i++){memset(row,0,sizeof row);memset(flag,0,sizeof flag);dfs(1,0,i);if(key) break;}if(!key) cout<<"-1"<<endl;return 0;
}

AcWing 4957. 飞机降落(第十四届省赛)

dfs(AC):

注意:dfs代码中,取较大值这个细节:

max(alltime,timee[i].startt)+timee[i].needd
#include<iostream>
#include<cstring>
using namespace std;
int T,n;
bool flag[12],key;
struct TIME{int startt,lastt,needd;
}timee[12];
void dfs(int cnt,int alltime){if(cnt==n){key=true;return ;}for(int i=1;i<=n;i++){if(!flag[i]&&alltime<=timee[i].startt+timee[i].lastt){flag[i]=true;dfs(cnt+1,max(alltime,timee[i].startt)+timee[i].needd);flag[i]=false;}}
}
int main(){cin>>T;while(T--){cin>>n;key=false;memset(flag,0,sizeof flag);for(int i=1;i<=n;i++) cin>>timee[i].startt>>timee[i].lastt>>timee[i].needd;dfs(0,0);if(key) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

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

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

相关文章

[C++核心编程-01]----C++内存四区详解

前言 结构体&#xff08;Struct&#xff09;是C中一种用户定义的复合数据类型&#xff0c;用于存储不同类型的数据项。结构体可以包含不同类型的数据成员&#xff0c;这些数据成员可以是基本类型&#xff08;如int、float、char等&#xff09;&#xff0c;也可以是数组…

Xcode 对应的 macOS、SDK 版本

最低要求和支持的 SDK 本表截取于 2024-05-04&#xff0c;更多更新可见&#xff1a;https://developer.apple.com/cn/support/xcode/ Xcode 版本要求的最低 OS 版本SDK架构部署目标模拟器SwiftXcode 15.3macOS Sonoma 14iOS 17.4 macOS 14.4 tvOS 17.4 watchOS 10.4 DriverKi…

spring高级篇(八)

本篇对Spring MVC 的执行流程做一个简单总结 MVC执行流程总结 当浏览器发送一个请求&#xff0c;例如http://localhost:8080/hello&#xff0c;请求到达服务器后&#xff0c;一般会进行如下操作&#xff1a; 1、首先会经过DispatcherServlet&#xff0c;默认映射路径为 /&…

GRU模块:nn.GRU层的输出state与output

在 GRU&#xff08;Gated Recurrent Unit&#xff09;中&#xff0c;output 和 state 都是由 GRU 层的循环计算产生的&#xff0c;它们之间有直接的关系。state 实际上是 output 中最后一个时间步的隐藏状态。 GRU 的基本公式 GRU 的核心计算包括更新门&#xff08;update gat…

用于密集预测任务的通道知识蒸馏——关键字:蒸馏

摘要 https://arxiv.org/pdf/2011.13256 知识蒸馏(KD)已被证明是训练紧凑密集预测模型的简单有效工具。通过从大型教师网络转移而来的额外监督来训练轻量级学生网络。大多数先前的针对密集预测任务的KD变体都在空间域中对学生网络和教师网络的激活图进行对齐,通常是通过在每…

【Linux】进程间通信 - 管道

文章目录 1. 进程间通信介绍1.1 进程间通信目的1.2 进程间通信发展1.3 进程间通信分类 2. 管道2.1 什么是管道2.2 匿名管道2.3 用 fork 来共享管道原理2.4 站在文件描述符角度 - 深入理解管道2.5 站在内核角度 - 管道本质2.6 管道读写规则2.7 管道特点 3. 命名管道3.1 匿名管道…

linux代码实操——信号的使用

信号的基本概念 信号是系统响应某个条件而产生的事件&#xff0c;进程接收到信号会执行相应的操作。 与信号有关的系统调用在“signal.h”头文件中有声明 常见信号的值&#xff0c;及对应的功能说明&#xff1a; 修改信号的响应方式 – signal() 我们来做个小实验: 在键盘上…

推荐书单|提升境界、思维能力

1、《别做正常的傻瓜》 豆瓣评分&#xff1a;8.1 通过揭示人们在日常生活中常见的非理性行为&#xff0c;引导读者认识并克服这些行为&#xff0c;从而做出更明智的决策。 2、《活法》 豆瓣评分&#xff1a;8.1 稻盛和夫分享其人生哲学和经营哲学的著作&#xff0c;强调了正确…

软设之段页式存储

页式存储&#xff1a;将程序与内存划分为同样大小的块&#xff0c;以页为单位将程序调入内存。 比如说每页是1M&#xff0c;不管是内存还是程序&#xff0c;每页都是1M 高级程序语言使用逻辑地址&#xff0c;比如C语言用的指针。 运行状态时&#xff0c;内存中使用物理地址。…

【C++】模板初阶:泛型编程的起点

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

富文本编辑器CKEditor4简单使用-08(段落首行缩进插件 + 处理粘贴 Microsoft Word 中的内容后保持原始内容格式(包括首行缩进))

富文本编辑器CKEditor4简单使用-08&#xff08;段落首行缩进插件 处理粘贴 Microsoft Word 中的内容后保持原始内容格式&#xff08;包括首行缩进&#xff09;&#xff09; 1. 缩进&#xff0c;特殊方式处理——修改原工具栏里的增加缩进量2 缩进&#xff0c;插件处理2.1 下载…

并查集~~

值为v的数封为Node型的节点&#xff0c;除了nodes中保存了V和Node的对应关系外&#xff0c;并查集相关的parents&#xff0c;sizeMap都是用Node来关联的。 #include<iostream> #include<map> #include<vector> #include<stack> using namespace std;t…

建一个wordpress外贸独立站的费用构成与分析

外贸独立站因为独特的优势&#xff0c;越来越被做外贸的跨境电商所青睐。简站主题经常接到做外贸的老板咨询&#xff0c;建一个wordpress外贸独立站大约多少钱&#xff0c;也是被问的最多的问题之一。下面小简就从几个方面讲一下&#xff0c;决定一个wordpress外贸独立站的费用…

TypeScript的使用:可以谈谈TypeScript的优点以及如何在实际项目中引入和使用TypeScript,包括一些基本的语法和编程技巧。

TypeScript是JavaScript的一个超集&#xff0c;它主要提供了类型系统和对ES6的兼容。下面是一些TypeScript的主要优点&#xff1a; 静态类型检查&#xff1a;这是TypeScript最主要的功能&#xff0c;它可以在编译阶段发现和报告错误&#xff0c;帮助开发者提前找到问题。更好的…

TensorFlow轻松入门(二)——小案例:ANN构建一个或运算的模型

或运算&#xff1a; 位与位进行比较&#xff0c;如果有任一个是1&#xff0c;结果为1&#xff1b;两个都为0&#xff0c;结果则为0。 实现步骤 构建Feature与Label数据 创建顺序模型 指定模型的第一层&#xff0c;线性模型 添加一层激活函数 模型编译 模型训练 模型预测…

GitHub 异常——无法连接22端口:Connection timed out

GitHub 异常——无法连接22端口&#xff1a;Connection timed out 问题描述原因分析&#xff1a;解决方案&#xff1a;参考 问题描述 正常配置并使用使用SSH方式&#xff0c;使用以下命令git clone、git pull、git push&#xff0c;报错如下&#xff1a; ssh: connect to host …

C语言-链表实现贪吃蛇控制台游戏

使用C语言和链表实现贪吃蛇游戏 一、引言 贪吃蛇游戏是一个经典的游戏&#xff0c;它的玩法简单而富有挑战性。在这个博客中&#xff0c;我将分享如何使用C语言和链表数据结构来自主实现贪吃蛇游戏。我会详细介绍游戏的设计思路、编码过程、遇到的问题及解决方案&#xff0c;…

翻译《The Old New Thing》 - Why does the CreateProcess function do autocorrection?

Why does the CreateProcess function do autocorrection? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050623-03/?p35213 Raymond Chen 在 2005 年 6 月 23 日 为什么 CreateProcess 函数会进行自动更正&#xff1f; 译注&#xff…

【华为OD机试C卷D卷】符号运算(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 给定一个表达式,求其分数计算结果。 表达式的限制如下: 所有的输入数字皆为正整数(包括0) 仅支持四则运算(+-*,/)和括号 结果为整数或分数,分数必须化为最简格…

13_Scala面向对象编程_伴生对象

文章目录 1.伴生对象1.1 scala的一个性质&#xff0c;scala文件中的类都是公共的&#xff1b;1.2 scala使用object关键字也可以声明对象&#xff1b; 3.关于伴生对象和类4.权限修饰符&#xff0c;scala仅有private;5.伴生对象可以访问伴生类中的私有属性&#xff1b;6.案例7.伴…