备战蓝桥杯--数论与搜索刷题2

news/2024/5/19 15:14:48/文章来源:https://blog.csdn.net/cocoack/article/details/137365401

话不多说,直接看题:

1.辗转相减法

我们不妨假设原等比数列a,a*(q/p),a*(q/p)^2....

那么x1,,,,xn就是其中的n项,xi/x1=(q/p)^b,假设最大比例为(q/p)^k,,那么一定有(q/p)^(k*s)=(q/p)^b,即k是b的因子,这样子问题就成了求b1,...bn的gcd,那么我们如何求?

我们直接求b的gcd?但是我们知道(q/p)^b但不知道里面各个量是多少,因此无法求。

我们不妨先拆成q^b/p^b,就是求q^b的gcd,我们令f[q^b1][q^b2]=q^(b1,b2).

由(a,b)=(b,a-b)知f[q^b1][q^b2]=f[q^b2][q^b1/q^b2],这样递推即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=110;
int n;
LL a[N],b[N],x[N];
LL gcd(LL a,LL b){return b ? gcd(b,a%b) : a;
} 
LL gg(LL a,LL b){if (a < b) swap(a, b);if (b == 1) return a;return gg(b, a / b);
}
int main(){cin>>n;for(int i=0;i<n;i++) cin>>x[i];sort(x,x+n);int cnt=0;for(int i=1;i<n;i++){if(x[i]==x[i-1]) continue;LL d=gcd(x[i],x[0]);a[cnt]=x[i]/d;b[cnt]=x[0]/d;cnt++;}LL up=a[0],down=b[0];for(int i=1;i<cnt;i++){up=gg(up,a[i]);down=gg(down,b[i]);}cout<<up<<"/"<<down;
}

2.扩展欧几里得:

转化一下就是:

解最小的正数x,xC-y*2^k=B-A

我们记C=a,2^k=b,那么x=x0+k*b/d;

这样我们把值%b/d+b/d即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL exgcd(LL a,LL b,LL &x,LL &y){if(b==0){x=1,y=0;return a;}LL d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}
int main(){LL a,b,c,k;while(cin>>a>>b>>c>>k,a||b||c||k){LL x,y;LL z=1ll<<k;LL d=exgcd(c,z,x,y);if((b-a)%d) cout<<"FOREVER"<<endl;else{x*=(b-a)/d;z/=d;cout<<(x%z+z)%z<<endl;}}
}

3.递归

a|b表示选a或选b,括号即定义顺序,我们令&表示相连。

我们先看一下递归树,对于样例,有:

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int k;
string s;
int dfs(){int res=0;while(k<s.size()){if(s[k]=='('){k++;res+=dfs();k++;//跳过)}else if(s[k]=='|'){k++;res=max(res,dfs());}else if(s[k]==')') break;else{res++;k++;}}return res;
}
int main(){cin>>s;cout<<dfs();
}

4.重复覆盖问题:

先形象一下:

我们先看1,1要被覆盖,必选1,2,3,6(至少选一个),然后我们就枚举递归

我们考虑一下优化:

1.迭代加深:枚举下答案(答案1行不,不行的话2可以吗?)

2.我们先枚举选择最少的点(如4,只有5满足)

3.可行性剪枝:

先判断一下最少还要多少(相当于在1时把1236全选),将他与剩余的行数比较

4.位运算

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=110,M=1<<20;
int n,m,k;
vector<int> col[N];//每一列包含哪几行
int logg2[M];
int lowbit(int x){return x&-x;
}
int h(int state){//最少几行int res=0;for(int i=(1<<m)-1-state;i;i-=lowbit(i)){int c=logg2[lowbit(i)];res++;for(auto row:col[c]) i&=~row;}return res;
}
bool dfs(int dep,int state){if(!dep||h(state)>dep) return state==(1<<m)-1;//只有state满时才可能//找到选择minint t=-1;for(int i=(1<<m)-1-state;i;i-=lowbit(i)){int c=logg2[lowbit(i)];if(col[c].size()<col[t].size()||t==-1) t=c;}for(auto row:col[t]){if(dfs(dep-1,state|row)) return 1;}return 0;
}
int main(){cin>>n>>m>>k;for(int i=0;i<m;i++) logg2[1<<i]=i;for(int i=0;i<n;i++){int state=0;for(int j=0;j<k;j++){int c;scanf("%d",&c);state|=1<<(c-1);}for(int j=0;j<m;j++){if(state>>j&1){col[j].push_back(state);}}}for (int i = 0; i < m; i ++ ){sort(col[i].begin(), col[i].end());col[i].erase(unique(col[i].begin(), col[i].end()), col[i].end());//unique把重复元素放后,返回第一个重复的迭代器;}int dep=0;while(dep<=m&&!dfs(dep,0)) dep++;//迭代加深,层数就是选的糖果数if(dep>m) dep=-1;cout<<dep;
}

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

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

相关文章

面试算法-160-合并两个有序链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 解 class Solution {public ListNode mergeTwoLists(ListNode li…

【QT入门】 Qt代码创建布局综合运用:仿写腾讯会议登陆界面

往期回顾&#xff1a; 【QT入门】 Qt代码创建布局之水平布局、竖直布局详解-CSDN博客 【QT入门】 Qt代码创建布局之栅格布局详解-CSDN博客 【QT入门】 Qt代码创建布局之分裂器布局详解-CSDN博客 【QT入门】 Qt代码创建布局综合运用&#xff1a;仿写腾讯会议登陆界面 一、界面分…

vmware 一打开虚拟机就蓝屏重启

按照正常步骤安装完镜像后&#xff0c;点击 开启此虚拟机 &#xff0c;直接出现下图所示蓝屏&#xff0c;然后重启。 解决的办法是通过修改 启用或关闭windows功能 里的选项&#xff0c;如下图&#xff0c;勾选上 Windows虚拟机监控程序平台 和 虚拟机平台 两项。然后重启电脑…

超越常规:用PHP抓取招聘信息

在人力资源管理方面&#xff0c;有效的数据采集可以为公司提供宝贵的人才洞察。通过分析招聘网站上的职位信息&#xff0c;人力资源专员可以了解市场上的人才供给情况&#xff0c;以及不同行业和职位的竞争状况。这样的数据分析有助于企业制定更加精准的招聘策略&#xff0c;从…

工厂水表计量监测管理系统

在工业生产中&#xff0c;水资源作为重要的生产要素之一&#xff0c;其使用效率直接关系到企业的生产成本和环境保护。因此&#xff0c;对工厂的水使用进行精确的计量与监测是至关重要的。工厂水表计量监测管理系统正是在这样的背景下应运而生&#xff0c;它融合了信息技术与自…

书生·浦语大模型实战营(第二期):书生·浦语大模型趣味Demo

目录 部署InternLM2-Chat-1.8B模型进行对话环境配置下载InternLM2-Chat-1.8B模型运行cli_demo基础作业&#xff1a;使用 InternLM2-Chat-1.8B 模型生成 300 字的小故事&#xff08;需截图&#xff09; 部署实战营优秀作品 八戒-Chat-1.8B 模型下载运行Chat-八戒 Demo 使用 Lage…

多维 HighCharts

1&#xff1a;showHighChart.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><!-- js脚本都是官方的,后两个是highchart脚本 --><script type"text/javascript" src"jquery1.7.1.mi…

电商大数据采集|电商API接口|自动化采集|人工采集

大数据采集是指从海量、异构、分散、动态的网络环境中收集、提取和存储数据的过程。大数据采集主要分为两种方式&#xff1a;自动化采集和人工采集。 1.自动化采集 电商API自动化采集是利用爬虫技术和API等方式&#xff0c;通过编写程序实现对网站或者应用程序中的数据进行自…

轻量级web开发框架:Flask本地部署及实现公网访问界面

目录 前言 1. 安装部署Flask 2. 安装Cpolar内网穿透 3. 配置Flask的web界面公网访问地址 4. 公网远程访问Flask的web界面 前言 本篇文章讲解如何在本地安装Flask&#xff0c;以及如何将其web界面发布到公网上并进行远程访问。 Flask是目前十分流行的web框架&#xff0c;采…

用html写早安,晚安动画

<!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>早安、晚安动画</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.c…

赛氪网|2024中国翻译协会年会“AI科技时代竞赛与就业”分论坛

在2024年中国翻译协会年会期间&#xff0c;赛氪网与中西部翻译协会共同体多边合作平台共同承办&#xff0c;于3月30日下午在长沙成功举办了“AI科技时代竞赛与就业分论坛”。该论坛汇聚了众多翻译界、科技界和教育界的专家学者&#xff0c;共同探讨科技、实践、就业与竞赛人才培…

uni-app项目创建方式

原生小程序与uni-app的区别 创建uni-app的方式 1.通过HBuilderX创建 2.通过命令行创建 vue3ts版&#xff1a;npx degit dcloudio/uni-preset-vue#vite-ts 项目名称 用vscode开发uni-app项目 安装命令&#xff1a;npm i -D types/wechat-miniprogram uni-helper/uni-app-typ…

自动驾驶硬件-GNSS

自动驾驶硬件-GNSS 高精度全局定位系统本质上可以看做一个级联的定位系统&#xff0c;先通过GNSS系统提供一个可能的位置范围&#xff0c;再利用激光雷达(Lidar)系统、视觉定位系统等方法进行局部环境的搜索匹配&#xff0c;从而实现厘米级的定位精度。由于需要由GNSS为高精度…

JR-SMD201网络直播解码器

详细介绍&#xff1a; JR-SMD201网络直播解码器&#xff0c;支持AVS/H.265/H.264/MPEG2解码&#xff0c;支持IP输入&#xff0c;支持1080P/1080I/720P/576I/480I多种分辨率&#xff0c;支持DRA/AC3/EAC3/AAC/MPEG等音频。 产品特点 支持多种输入方式IP 接口丰富&#xff0c;CV…

docker-ce部署

目录 1. 更新软件包列表 2. 安装必要的软件包&#xff0c;以允许 apt 使用 HTTPS 3. 添加 Docker 的官方 GPG 密钥 4. 设置 Docker CE 的稳定存储库 5. 再次更新包索引以及安装 Docker CE 6. 验证 Docker CE 是否正确安装 7. 将当前用户添加到 docker 用户组&#xff0c;…

FreeGPT3.5 开源软件

GPT-3.5不需要付费&#xff0c;也不需要注册用户&#xff0c;可以直接使用了&#xff0c;官方彻底开放了API接口。 该API政策一放开&#xff0c;GitHub很快就已经出现了一个开源项目FreeGPT35&#xff0c;可以自动生成key调用GPT3.5的API接口&#xff0c;再也用不着注册账号和申…

C#使用Selenium驱动Chrome浏览器

1.Selenium库依赖安装 Selenium WebDriver是Selenium项目的一部分&#xff0c;用于模拟用户在Web应用程序中的交互操作。它支持多种浏览器&#xff0c;如Chrome、Firefox、IE等&#xff0c;且与各种编程语言&#xff08;如Java、Python、C#等&#xff09;兼容&#xff0c;具有…

Python实现读取dxf文件的所有字符

Python实现读取dxf文件的所有字符 import ezdxfdef read_dxf_and_print_text(filename):# 加载DXF文件doc ezdxf.readfile(filename)# 遍历所有的实体for entity in doc.entities:# 检查实体是否是TEXT、MTEXT或DIMENSIONif isinstance(entity, ezdxf.entities.Text):print(f…

如何做好产业园运营?树莓集团:响应政府号召,规划,注重大局观

随着经济的发展和产业结构的调整&#xff0c;产业园区的建设和发展已经成为推动地方经济的重要力量。如何做好产业园运营&#xff0c;提高行业竞争力&#xff0c;现已成为了一个亟待解决的问题。树莓集团作为一家有着丰富产业园运营经验的企业&#xff0c;积极响应政府号召&…

蓝桥杯算法题:练功

【问题描述】 小明每天都要练功&#xff0c;练功中的重要一项是梅花桩。 小明练功的梅花桩排列成 n 行 m 列&#xff0c;相邻两行的距离为 1&#xff0c;相邻两列的距离也为 1。 小明站在第 1 行第 1 列上&#xff0c;他要走到第 n 行第 m 列上。小明已经练了一段时间&#xff…