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

话不多说,直接看题:

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.mzph.cn/news/791436.shtml

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

相关文章

【Servlet】Servlet入门

文章目录 一、介绍二、入门案例导入servlet-api的解决办法 一、介绍 概念&#xff1a;server applet&#xff0c;即&#xff1a;运行在服务器端的小程序 Servlet就是一个接口&#xff0c;定义了Java类被浏览器访问到&#xff08;tomcat识别&#xff09;的规则。 将来我们定义…

【项目新功能开发篇】开发编码

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

mysql 磁盘空间100%

MySQL大事务可能会导致过多的占用临时文件&#xff0c;导致磁盘空间撑满的问题 本例说明下binlog cache产生的临时文件 案例复现 调小binlog_cache_size&#xff0c;让DML使用临时文件 使用存储过程模拟大事务 创建表 create table t1( id int AUTO_INCREMENT, name varchar…

Rust---复合数据类型之字符串与切片(2)

目录 字符串操作删除 (Delete)连接 (Concatenate) 字符串转义 前情回顾: Rust—复合数据类型之字符串&#xff08;1&#xff09; 字符串操作 删除 (Delete) 删除方法仅适用于 String 类型&#xff0c;分别是&#xff1a; pop()&#xff0c;remove()&#xff0c;truncate()&a…

【Redis系列】Redis安装与使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

保研线性代数复习3

一.基底&#xff08;Basis&#xff09; 1.什么是生成集&#xff08;Generating Set&#xff09;&#xff1f;什么是张成空间&#xff08;Span&#xff09;&#xff1f; 存在向量空间V(V&#xff0c;&#xff0c;*)&#xff0c;和向量集&#xff08;xi是所说的列向量&#xff…

大模型prompt技巧——思维链(Chain-of-Thought)

1、Zero-shot、One-shot、Few-shot 与fintune prompt的时候给出例子答案&#xff0c;然后再让模型回答。 2、zero-shot-CoT “Let’s think step by step”有奇迹效果 3、多数投票提高CoT性能——自洽性&#xff08;Self-consistency&#xff09; 多个思维链&#xff0c;然后取…

WordPress 6.5 “里贾纳”已经发布

WordPress 6.5 “里贾纳”已经发布&#xff0c;其灵感来自著名爵士小提琴家Regina Carter的多才多艺。雷吉娜是一位屡获殊荣的艺术家和著名的爵士乐教育家&#xff0c;以超越流派而闻名&#xff0c;她在古典音乐方面的技术基础和对爵士乐的深刻理解为她赢得了大胆超越小提琴所能…

修改element-ui table组件展开/收起图标、支持点击行展开/收起、隐藏不可展开行得图标

Element中table默认支持的&#xff0c;展开和收起功能&#xff0c;如下&#xff1a; 针对表格的展开收起&#xff0c;本文改造的主要有3点&#xff1a; 1、修改展开/收起的图标&#xff1b; 2、对于不支持展开/收起的行&#xff0c;隐藏图标&#xff1b; 3、点击行&#xff0…

windows10 上安装 docker

windows 10 上安装 docker 官方目前给的方案是利用 Docker Desktop 来安装 docker 环境 一、安装前准备工作 1.1 检查系统要求 Windows 10 64 位&#xff1a;Home 或 Pro 2004&#xff08;内部版本 19041&#xff09;或更高版本&#xff0c;或者 Enterprise 或 Education 1…

Redis中的复制功能(四)

复制功能 步骤2:建立套接字连接 在SLAVEOF命令执行之后&#xff0c;从服务器将根据命令所设置的IP地址和端口&#xff0c;创建连向主服务器的套接字连接&#xff0c;如图所示。如果从服务器创建的套接字能成功连接(connect)到主服务器&#xff0c;那么从服务器将为这个套接字…

软考109-上午题-【计算机网络】-网络设备

一、网络设备 1-1、物理层的互联设备 物理层的设备&#xff1a;中继器、集线器 1、中继器 中继器&#xff0c;可以使得两个链路在物理层上互联。 可以使得信号再生&#xff0c;信号增强。因此&#xff0c;中继器使得接受用户&#xff0c;收到衰减很小的原始信号 2、集线器&a…

【Java EE】关于Maven

文章目录 &#x1f38d;什么是Maven&#x1f334;为什么要学Maven&#x1f332;创建⼀个Maven项目&#x1f333;Maven核心功能&#x1f338;项目构建&#x1f338;依赖管理 &#x1f340;Maven Help插件&#x1f384;Maven 仓库&#x1f338;本地仓库&#x1f338;私服 ⭕总结 …

Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10)

原文&#xff1a;Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10) - 知乎 阿里的FunAsr对Whisper中文领域的转写能力造成了一定的挑战&#xff0c;但实际上&#xff0c;Whisper的使用者完全可以针对中文的语音做一些优化的措施&#xff0c;换句话说&#xff0c;…

前端:登录界面

效果 代码 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

SpringBoot整合ELK8.1.x实现日志中心教程

目录 背景 环境准备 环境安装 1.JDK安装 2.安装Elasticsearch 3.安装zookeeper 4.安装Kafka 5.安装logstash 6.安装file beat 解决方案场景 1.日志采集 1.1 应用日志配置 1.1.1 创建logback-spring.xml文件 1.1.2 创建LoggerFactory 1.1.3 trace日志的记录用法 …

Linux上管理文件系统

Linux上管理文件系统 机械硬盘 机械硬盘由多块盘片组成&#xff0c;它们都绕着主轴旋转。每块盘片上下方都有读写磁头悬浮在盘片上下方&#xff0c;它们与盘片的距离极小。在每次读写数据时盘片旋转&#xff0c;读写磁头被磁臂控制着不断的移动来读取其中的数据。 所有的盘片…

实操:Dropzone.js实现文件上传

&#x1f3e0;官网 点我前往 &#x1f953;依赖 <script src"https://unpkg.com/dropzone5/dist/min/dropzone.min.js"></script> <link rel"stylesheet" href"https://unpkg.com/dropzone5/dist/min/dropzone.min.css" type&…

手搓链表(java)(不完整)

手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09; 文章目录 手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09;前言一、代码1.MyLinkedList类&#xff1a;2.测试类&#xff1a; 总结 前言 提示&#xff1a;以下是本篇文章正文内容&…