洛谷题单_搜索

P1219 [USACO1.5] 八皇后 Checker Challenge - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <bits/stdc++.h>
using namespace std;
const int N=14;
int n,ans=0;
int a[N][N]={},vis[N][N]={};
vector<int>rcd(n+1);
void dfs(int dep){if(dep==n+1){if(ans<=2){for(int i=1;i<=n;i++)cout<<rcd[i]<<" \n"[i==n];}ans++;return ;}//此时该搜索第n+1行说明前n行已经排列完成了 for(int i=1;i<=n;i++){if(vis[dep][i])continue;//如果出现过就直接跳过rcd[dep]=i;for(int _i=1;_i<=n;_i++)vis[_i][i]++;//这一列都是0for(int _i=dep,_j=i;_i>=1&&_j>=1;--_i,--_j)vis[_i][_j]++;//左上for(int _i=dep,_j=i;_i>=1&&_j<=n;--_i,++_j)vis[_i][_j]++;//右上for(int _i=dep,_j=i;_i<=n&&_j<=n;++_i,++_j)vis[_i][_j]++;//右下for(int _i=dep,_j=i;_i<=n&&_j>=1;++_i,--_j)vis[_i][_j]++;//左下dfs(dep+1);//搜索下一行//回溯for(int _i=1;_i<=n;_i++)vis[_i][i]--;//这一列都是0for(int _i=dep,_j=i;_i>=1&&_j>=1;--_i,--_j)vis[_i][_j]--;//左上for(int _i=dep,_j=i;_i>=1&&_j<=n;--_i,++_j)vis[_i][_j]--;//右上for(int _i=dep,_j=i;_i<=n&&_j<=n;++_i,++_j)vis[_i][_j]--;//右下for(int _i=dep,_j=i;_i<=n&&_j>=1;++_i,--_j)vis[_i][_j]--;//左下}
}
int main(){cin>>n;dfs(1);//从第一行开始搜索cout<<ans;return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N=16;
int a[N];//表示第i行皇后放在a[i]列
int n,cnt;
// int vis[N][N];
vector<int>ans;
int nd=3;
bool check(int x){//输入行,不与每一行的皇后成关系就行
//检查x行 a[x]列的皇后是否可以放for(int i=1;i<x;i++){//遍历之前的所有行if(a[i]==a[x]||a[i]-i==a[x]-x||a[x]+x==a[i]+i)return 0;}//主对角线行-列=行-列 副对角线上行+列=行+列
//若位于同一列 或位于同一主对角线上或者位于同一副对角线上就不行return 1;
}
void dfs(int dep){if(dep==n+1){cnt++;//该搜索第n+1行了就说明前n行已经拍好了if(nd-->0){for(int i=0;i<n;i++){cout<<ans[i]<<" \n"[i==n-1];}}return ;}for(int i=1;i<=n;i++){a[dep]=i;//遍历假设放在了(dep,a[dep])位置if(!check(dep))continue;//如果不行 跳ans.push_back(i);//存起来放在了第i列dfs(dep+1);//搜索下一行ans.pop_back();//回溯a[dep]=0;//数组的a[dep]按理也得恢复现场}}
int main(){cin>>n;dfs(1);cout<<cnt;return 0;
}

 P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<bits/stdc++.h>
using namespace std;
int a[5],i,j,k,sum,t,homework[21],dp[2501];
//dp[j]表示只考虑前面几个商品 在总时间为j的条件下所能得到的最大价值(最大时间)
int main(){for(i=1;i<=4;i++)cin>>a[i];for(i=1;i<=4;i++){sum=0;	for(j=1;j<=a[i];j++){cin>>homework[j];//输入sum+=homework[j];}//总时间累加
//最快洗车时间的问题for(j=1;j<=a[i];j++)for(k=sum/2;k>=homework[j];k--)//只要是总和的一半dp[k]=max(dp[k],dp[k-homework[j]]+homework[j]);//01背包t+=sum-dp[sum/2];//累加为另一个脑子memset(dp,0,sizeof(dp));}cout<<t;//输出return 0;
}

 P1443 马的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <bits/stdc++.h>
#define int long long
#define PII pair<int,int>
using namespace std;
const int N=406;
int xx[]={2,2,-2,-2,1,-1,1,-1};
int yy[]={1,-1,-1,1,2,-2,-2,2};//八个方向
int mp[N][N];int cnt=0;int n,m;void bfs(int x,int y,int c){//广度优先搜索模板queue<PII>q;q.push({x,y});mp[x][y]=c;while(!q.empty()){auto cur=q.front();q.pop();int cx=cur.first;int cy=cur.second;for(int i=0;i<8;i++){int tx=cx+xx[i];int ty=cy+yy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&mp[tx][ty]==-1){mp[tx][ty]=mp[cx][cy]+1;//从上一个的转移一次 所以要在上一次的基础上+1q.push({tx,ty});}}}
}void solve(){cin>>n>>m;int x,y;cin>>x>>y;memset(mp, -1, sizeof(mp));// mp[x][y]=0;bfs(x,y,0);for(int i=1;i<=n;i++){//一定要看好时从(0,0)开始还是从(1,1)开始for(int j=1;j<=m;j++){printf("%-5d",mp[i][j]);//-5是每一行开头的那个元素不产生占位5 4 3 2 这样//5是每一行从开头就产生占位 5 4 3 2这样}cout<<'\n';}
}signed main(){int t=1;while(t--)solve();return 0;
}
#include <iostream>
#include <queue>
using namespace std;
int k[205], n; // k[i] 表示在i楼能向上或向下走多少步struct node { // 定义一个结构体int point, step; // point是现在在哪一楼,step是现在点了几次按钮到达这一楼
};bool vis[205]; // 记录之前是否到达过(或者可以到达)这个楼数,那么下一次的统计的步数肯定大于等于这一楼记录过的最少步数,不更新这一楼的答案。int BFS(int a, int b) {queue < node > q;q.push(node{a, 0});while (q.size()) { // 队列里还有元素就用队头元素尝试更新node p = q.front();if (p.point == b) { // 到了目标楼层return p.step; // 返回步数}q.pop();if (p.point + k[p.point] >= 1 && p.point + k[p.point] <= n && ! vis[p.point + k[p.point]]) { // 往上走,符合条件(在1~n层之间)且没被访问过(说明是第一次入队,也就是这次被访问就是最短的步数)q.push((node){p.point + k[p.point], p.step + 1});vis[p.point + k[p.point]] = 1;}if (p.point - k[p.point] >= 1 && p.point - k[p.point] <= n && ! vis[p.point - k[p.point]]) { // 往下走q.push((node){p.point - k[p.point], p.step + 1});vis[p.point - k[p.point]] = 1;}}return -1; // 无解
}int main() {int a, b;cin >> n >> a >> b;for (int i = 1; i <= n; i++) cin >> k[i];//每个电梯的能量值cout << BFS(a, b);
}

P1135 奇怪的电梯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

#include <iostream>
#include <queue>
using namespace std;
int k[205], n; // k[i] 表示在i楼能向上或向下走多少步struct node { // 定义一个结构体int point, step; // point是现在在哪一楼,step是现在点了几次按钮到达这一楼
};bool vis[205]; // 记录之前是否到达过(或者可以到达)这个楼数,那么下一次的统计的步数肯定大于等于这一楼记录过的最少步数,不更新这一楼的答案。int BFS(int a, int b) {queue < node > q;q.push(node{a, 0});while (q.size()) { // 队列里还有元素就用队头元素尝试更新node p = q.front();if (p.point == b) { // 到了目标楼层return p.step; // 返回步数}q.pop();if (p.point + k[p.point] >= 1 && p.point + k[p.point] <= n && ! vis[p.point + k[p.point]]) { // 往上走,符合条件(在1~n层之间)且没被访问过(说明是第一次入队,也就是这次被访问就是最短的步数)q.push((node){p.point + k[p.point], p.step + 1});vis[p.point + k[p.point]] = 1;}if (p.point - k[p.point] >= 1 && p.point - k[p.point] <= n && ! vis[p.point - k[p.point]]) { // 往下走q.push((node){p.point - k[p.point], p.step + 1});vis[p.point - k[p.point]] = 1;}}return -1; // 无解
}int main() {int a, b;cin >> n >> a >> b;for (int i = 1; i <= n; i++) cin >> k[i];cout << BFS(a, b);
}

P2895 [USACO08FEB] Meteor Shower S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

P1036 [NOIP2002 普及组] 选数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <bits/stdc++.h>
using namespace std;
int n,k;
const int N=26;
int a[N],vis[N]={0};
int ans=0;
typedef long long ll;
bool isprime(int x){for(int i=2;i<=x/i;i++){if(x%i==0)return 0;}return 1;
}
void dfs(int m, int sum, int startx){//最重要的递归
//m代表现在选择了多少个数
//sum表示当前的和
//startx表示升序排列,以免算重if(m == k){//如果选完了的话if(isprime(sum))ans++;//ans加一return ;}for(int i = startx; i < n; i++)//往后找dfs(m + 1, sum + a[i], i + 1);//递归//步数要加一,和也要加//升序起始值要变成i+1,以免算重return ;//这一个步骤下,所有的都枚举完了//直接返回去
}
int main(){scanf("%d%d",&n,&k);//输入for(int i = 0; i < n; i++)scanf("%d",&a[i]);//循环读入dfs(0,0,0);//调用函数printf("%d\n",ans);//输出答案return 0;//结束程序
}
//另一种思路错的原因是因为可能出现 1 2 1 1 3 6 7这样的情况

P2036 [COCI2008-2009 #2] PERKET - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

#include<bits/stdc++.h>		//非常稳健的万能头
using namespace std;
long long int s[20],b[20],f[20];	//s表示酸度,b表示甜度,f记录是否查找
long long int n,j,c=1,y=0,ans=99999999999;		//ans记录最小值
void dfs(int x){if(x>n)return ;		//最多选n种调料,超过不做操作for(int i=1;i<=n;i++){if(f[i]==0)		//没有查找过的才操作{c*=s[i];y+=b[i];ans=min(ans,abs(c-y));	//取最小值f[i]=1;		//记录dfs(x+1);f[i]=0;		//回溯c/=s[i];y-=b[i];}}
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>s[i]>>b[i];}dfs(1);cout<<ans;
}

 

#include <btis/stdc++.h>
using namespace std;
int a[15],b[15],n,ans=1<<30; //a表示酸度,b表示甜度,ans为最终答案。
void dfs(int i,int sj,int th){if(i>n){if(!th)return ; //如果没有选任何一种材料。ans=min(ans,abs(sj-th)); //否则更新答案。return ;}dfs(i+1,sj,th); //选dfs(i+1,sj*a[i],th+b[i]); //不选
}
int main(){int i;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d %d",&a[i],&b[i]);dfs(1,1,0);  //搜索,注意酸度初始值一定为1,甜度初始值一定为0.printf("%d",ans);return 0;
}

 

 

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

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

相关文章

有道QAnything背后的故事---关于RAG的一点经验分享

近日&#xff0c;我们开源了有道自研的RAG&#xff08;Retrieval Augmented Generation) 引擎QAnything。该引擎允许用户上传PDF、图片、Word、Excel、PowerPoint等多种格式的文档&#xff0c;并实现类似于ChatGPT的互动问答功能&#xff0c;其中每个答案都能精确追溯到相应的文…

了解Spring中Bean:配置与作用域

作为一名对技术充满热情的学习者&#xff0c;我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代&#xff0c;我远非专家&#xff0c;而是一位不断追求进步的旅行者。通过这篇博客&#xff0c;我想分享我在某个领域的学习经验&#xff0c;与大家共同探讨、共…

递归回溯剪枝-括号生成

LCR 085. 括号生成 - 力扣&#xff08;LeetCode&#xff09; 一. 根据题意&#xff0c;分析出符合要求的括号组合需要满足以下两个条件&#xff1a; 1. 左括号数或者右括号数都不能超过 n&#xff1b; 2. 从最左侧开始的每一个子集&#xff0c;不可以出现右括号数大于左括号数&…

CF 1934B

冗长的代码&#xff08;枚举解法&#xff09; #include<bits/stdc.h>using namespace std;void solve() {int n;cin>>n;if(n1||n3||n6||n10||n15){cout<<1<<endl;return;}int cnt0;if(n>100){int tempn/15;if(temp>6){n-(temp-6)*15;cnttemp-6;…

算法复习之前缀和【备战蓝桥杯】

一维前缀和 S[i] a[1] a[2] ... a[i] a[l] ... a[r] S[r] - S[l - 1]二维前缀和 S[i, j] 第i行j列格子左上部分所有元素的和 以(x1, y1)为左上角&#xff0c;(x2, y2)为右下角的子矩阵的和为&#xff1a; S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] S[x1 - 1, y1 - …

中国电子学会(CEIT)2020年06月真题C语言软件编程等级考试四级(含详细解析答案)

中国电子学会&#xff08;CEIT&#xff09;考评中心历届真题&#xff08;含详细解析答案&#xff09; C语言软件编程等级考试四级 2020年06月 编程题四道 总分:100分一、最长上升子序列&#xff08;25分&#xff09; 一个数的序列bi&#xff0c;当b1 < b2< … &l…

长期可用的文件二维码怎么做?在线制作可修改的文件活码

怎么做一个可以长期使用的文件二维码呢&#xff1f;现在通过二维码来传递文件是很流行的一种方式&#xff0c;将文件生成二维码后印刷上墙或者分享给他人都可以快速完成文件的传播&#xff0c;所以在下发通知、资料等方面用途较多。那么文件二维码该如何生成呢&#xff1f; 想…

Linux内存地址空间

目录 一、虚拟地址空间 1.虚拟地址空间的定义 2.虚拟地址空间的布局 二、内存壁垒 1.内存壁垒的定义​编辑 2.段错误 三、内存映射的建立与解除 &#xff08;1&#xff09;mmap &#xff08;2&#xff09;munmap &#xff08;3&#xff09;堆内存的分配和释放 1.sbrk …

Android13 设置固定热点ip地址192.168.43.1

Android13 设置固定热点ip地址192.168.43.1 文章目录 Android13 设置固定热点ip地址192.168.43.1一、前言二、设置固定ip地址实现1、Android13 代码中的实现&#xff1a;添加属性写法&#xff1a; 2、Android11 或者更旧的代码中的实现&#xff1a; 三、其他1、Android 代码获连…

Python中学习调试requests模块时出现的大坑(1)

为防止迷路: 学习机械相关,请关注公众号:南大盛联 学习软件,硬件,请关注公众号号:一训微课 cmd模式下 不知道上面这行的话,需要补课。 pip install requests 这个不知道的话,也要补课 pip是python的安装工具。 install是安装的意思 requests是我们需要安装的模…

HTML超链接去下划线

当在HTML中创建超链接时&#xff0c;默认情况下会显示为带有下划线的蓝色文本。如果想要去掉下划线&#xff0c;可以使用CSS样式来实现。 示例代码&#xff1a; <!DOCTYPE html> <html> <head> <style> a {text-decoration: none;color: blue; /* 设…

微信小程序 --- 事件处理

事件处理 一个应用仅仅只有界面展示是不够的&#xff0c;还需要和用户做交互&#xff0c;例如&#xff1a;响应用户的点击、获取用户输入的值等等&#xff0c;在小程序里边&#xff0c;我们就通过编写 JS 脚本文件来处理用户的操作 1. 事件绑定和事件对象 小程序中绑定事件与…

sora会是AGI的拐点么?

©作者|谢国斌 来源|神州问学 OpenAI近期发布的Sora是一个文本到视频的生成模型。这项技术可以根据用户输入的描述性提示生成视频&#xff0c;延伸现有视频的时间&#xff0c;以及从静态图像生成视频。Sora可以创建长达一分钟的高质量视频&#xff0c;展示出对用户提示的精…

PoC免写攻略

在网络安全领域&#xff0c;PoC&#xff08;Proof of Concept&#xff09;起着重要的作用&#xff0c;并且在安全研究、漏洞发现和漏洞利用等方面具有重要的地位。攻击方视角下&#xff0c;常常需要围绕 PoC 做的大量的工作。常常需要从手动测试开始编写 PoC&#xff0c;再到实…

vue项目电商

这个项目功能有首页&#xff0c;分类&#xff0c;商品详情&#xff0c;购物车&#xff0c;用户注册、登录等等的实现&#xff0c;并且可以在手机上进行展示。 git仓库地址&#xff1a;https://gitee.com/BisShen/project.git

应用层http协议包解析与https加密策略解析

文章目录 一.应用层协议--http协议基础认知二.https协议加密策略解析加密策略1--通信双方只使用对称加密加密策略2--通信双方使用单方非对称加密加密策略3--通信双方都使用非对称加密加密策略4--非对称加密与对称加密配合使用中间人攻击数据签名与CA证书HTTPS数据安全认证的本质…

二维码门楼牌管理系统技术服务的分类与应用

文章目录 前言一、二维码门楼牌管理系统的分类二、二维码门楼牌管理系统的应用优势三、结论 前言 随着城市管理的精细化和智能化&#xff0c;二维码门楼牌管理系统成为了现代城市管理的重要工具。该系统将传统的门牌、楼牌、户牌与二维码技术相结合&#xff0c;实现了信息的快…

如何优化一个运行缓慢的SQL查询?有哪些常见的优化技巧?

如何优化一个运行缓慢的SQL查询&#xff1f; 当面对一个运行缓慢的SQL查询时&#xff0c;优化是提升数据库性能的关键步骤。优化查询不仅可以减少查询执行时间&#xff0c;还可以降低系统资源消耗&#xff0c;提高整体的系统吞吐量。以下将详细探讨如何优化一个运行缓慢的SQL查…

MySQL:常用的SQL语句

提醒&#xff1a;设定下面的语句是在数据库名为 db_book执行的。 一、创建表 1. 创建t_booktype表 USE db_book; CREATE TABLE t_booktype(id INT AUTO_INCREMENT, bookTypeName VARCHAR(20),bookTypeDesc varchar(200),PRIMARY KEY (id) );2. 创建t_book表 USE db_book; C…

[笔记] wsl 禁用配置 win系统环境变量+代理

wsl 配置禁用 win系统环境变量 进入 wsl 的 /etc/wsl.conf 目录&#xff0c;增加以下配置&#xff1a; [interop] enabledfalse appendWindowsPathfalse然后退出wsl&#xff0c;并且执行关闭正在运行的 wsl&#xff0c;执行命令 wsl --shutdown 最后重新进入wsl 即可。 参考…