Permutation and Primes 2023牛客暑期多校训练营8 J
登录—专业IT笔试面试备考平台_牛客网
题目大意:给出一个数n,要求构造一个n的排列,满足相邻两个数的差或和是一个奇质数
2<=n<=1e5
思路:要满足相邻数的差或和是奇质数的话只有三种情况,要么当前数a[i]=a[i-1]+prime[j]或a[i]=a[i-1]-prime[j]或a[i]=prime[j]-a[i-1]。
我们先随意设一个初值,不妨令a[1]=1,然后每一个位置都枚举质数也就是枚举j然后从上面三种情况里选一种,范围在1~n的且没有出现过的,构造一下发现大部分的n都能用此法构造出来,只有如n=12这种极少情况没有合法构造。
那么我们换一下a[1],令a[1]=2,发现n=12时有了合法构造,且发现无论是a[1]=1还是a[1]=2,用到的最大的质数就是13,那么我们猜想可以枚举极少的a[1]和质数就能得到合法答案,所以我们从1~n枚举第一个数,然后遍历后面的每一个位置,从小到大遍历质数,找到合法的数字就填进去,最后检验一下所有数字收否都出现过,如果不合法就换下一个a[1]。
赛后验证了a[1]要么等于1可以有合法构造,1如果不行2就能有合法构造,且用到的质数不超过5个也就是不大于13,时间复杂度O(10n)
#include<bits/stdc++.h>
//#include<__msvc_all_public_headers.hpp>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
const ll MOD = 998244353;
const int INF = 0x7fffffff;
ll n;
ll ans[N];
bool vis2[N];
int prime[2*N], tot = 0;
bool vis[2*N];
void getprime()
{//欧拉线性筛for (int i = 2; i <= 2*N; i++){if (!vis[i]){prime[++tot] = i;}for (int j = 1; j <= tot; j++){if (i * prime[j] >= 2*N)break;vis[i * prime[j]] = 1;if (i % prime[j] == 0)break;}}
}
void init()
{for (int i = 1; i <= n; i++){vis2[i] = 0;}
}
void solve()
{cin >> n;init();for (int ii = 1; ii <= 2; ii++){ans[1] = ii;vis2[ii] = 1;int ma = 0;for (int i = 2; i <= n; i++){for (int j = 2; j <= 6; j++){ma = max(ma, prime[j]);int now1 = ans[i - 1] + prime[j];int now2 = ans[i - 1] - prime[j];int now3 = prime[j] - ans[i - 1];//每个数有三种选择if (now1 <= n && !vis2[now1]){//找一种合法的ans[i] = now1;vis2[ans[i]] = 1;break;}else if (now2 >= 1 && !vis2[now2]){ans[i] = now2;vis2[ans[i]] = 1;break;}else if (now3 <= n && now3 >= 1 && !vis2[now3]){ans[i] = now3;vis2[ans[i]] = 1;break;}}}//cout << ma << endl;//for (int i = 1; i <= n; i++)//{//// if (!vis2[i])// {// cout << i << endl;// }//}bool flag = 1;for (int i = 1; i <= n; i++){//检验有没有没构造出来的数if (!vis2[i]){flag = 0;}vis2[i] = 0;}if (flag)break; }for (int i = 1; i <= n; i++){cout << ans[i] << " ";}cout << endl;
}
int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);int t;cin>>t;getprime();while (t--){solve();}return 0;
}
相关文章:
Permutation and Primes 2023牛客暑期多校训练营8 J
登录—专业IT笔试面试备考平台_牛客网 题目大意:给出一个数n,要求构造一个n的排列,满足相邻两个数的差或和是一个奇质数 2<n<1e5 思路:要满足相邻数的差或和是奇质数的话只有三种情况,要么当前数a[i]a[i-1]pr…...
centos如何配置IP地址?
CentOS如何查看和临时配置IP地址 CentOS系统中,可以通过使用ifconfig命令来查看当前本机的IP地址信息。输入ifconfig即可显示当前网络接口的IP地址、网络掩码和网关信息。如果需要设置临时IP地址,可以使用ifconfig命令后接网卡名称和需要设置的IP地址、网…...

git clone 报错Filename too long
1.使用git clone代码,爆出Filename too long错误 2.原因分析 因为我很少看git clone日志,所以从未想过是clone异常,而且也看到代码clone下来了,所以我就显然以为代码clone成功,但是使用idea打开代码后发现大量代码无法…...

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台3
吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成本的简易机器人呢?也许只需要二十元左右 知识点:轮子(wheel) 中国词语。是用不同材料制成的圆形滚动物体。简…...
redis String类型命令
Redis的String类型是一种简单的键值对数据结构,常用的String类型命令有: SET key value:设置指定key的值为value。GET key:获取指定key的值。DEL key:删除指定key及其对应的值。INCR key:将指定key的值加1…...

Blazor 简单组件(0):简单介绍
文章目录 前言说明环境安装 前言 Blazor 这个技术还是比较新,相关的UI组件还在完善,我这里提供一下我个人的组件开发。 说明 本UI组件是基于BootstrapBlazor(以下简称BB)开发。 BootstrapBlazor 文档 环境安装 C#小轮子:Visual Studio自…...

在vue3+vite项目中使用jsx语法
如果我掏出下图,阁下除了私信我加入学习群,还能如何应对? 正文开始 前言一、下载资源二、利用vite工具引入babel插件总结 前言 最近在为部署人员开发辅助部署的工具,技术栈是vue3viteelectron,在使用jsx语法时&#x…...
HCIA 路由器工作原理 及其 静态路由配置
目录 1、路由器工作原理 2、获取未知网段的方法: 3、静态路由 1)写法: 2)扩展配置 a、环回接口 配置命令: 环回接口的作用: b、手工汇总 手工汇总作用: c、路由黑洞 d、缺省路由 配置…...

【Git】—— git的配置
目录 (一)忽略特殊⽂件 (二)给命令配置别名 (一)忽略特殊⽂件 在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让Git知道呢…...

[git] git基础知识
git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目 git易于学习,性能极快 什么是版本控制? 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况,可以记录文件修改历史…...
【从零学习python 】15.深入了解字符串及字符集编码
文章目录 字符集字符和编码相互转换编码规则 学习目标成员运算符in运算符not in 运算符 进阶案例 字符集 计算机只能处理数字(其实就是数字0和数字1),如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bi…...

【LeetCode】打家劫舍||
打家劫舍|| 题目描述算法分析编程代码 链接: 打家劫舍|| 在做这个题之前,建议大家做一下这个链接: 按摩师 我的博客里也有这个题的讲解,名字是按摩师 题目描述 算法分析 编程代码 class Solution { public:int maxrob(vector<int>nums,int left,…...
【Nginx】Nginx的重定向——location
location 匹配URI location 匹配的规则和优先级;***重点 nginx常用的变量;要求掌握 rewrite 重定向;掌握/理解 location匹配:*** 正则表达式:匹配的是文件内容 常见的正则表达式:…...

每日一题——滑动窗口的最大值
滑动窗口的最大值 题目链接 暴力解法 最容易想到的当然还是通过两层循环来暴力求解:一层循环用来移动窗口,一层循环用来在窗口内找到最大值。这种做法的时间复杂度为O(kN),会超出时间限制,因此,我们要找到更加高效的…...

【使用go开发区块链】之获取链上数据(03)
上篇文章,我们完成了数据库的连接,本章节,我们将完成ethclient的配置以及初始化 1、ethclient配置 1.1、安装go-ethereum 在命令行终端输入下面代码安装: go get github.com/ethereum/go-ethereum1.2、Ethclient配置 1.2.1、新…...
js 动态设置transformOrigin
transformOrigin属性用于指定元素变换的原点。 // 获取要设置的元素 const element document.getElementById(your-element-id);// 设置transformOrigin属性 element.style.transformOrigin 50% 50%; // 以元素中心为原点// 或者使用变量来设置 const x 0; // x坐标 const …...
docker使用tab无法自动补全命令
本文参考链接 一、安装bash-complete 在线安装 yum install -y bash-completion二、刷新文件 source /usr/share/bash-completion/completions/docker source /usr/share/bash-completion/bash_completion...

既然jmeter也能做接口自动化,为什么还需要pytest自己搭框架?
今天这篇文章呢,我会从以下几个方面来介绍: 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 一、pytest框架介绍 pytest 是 python 的第三方单元测试框架&a…...
Objective-C获取变量类型的方法
在Objective-C中,要获取一个对象的类型,可以使用[object class]方法。这将返回一个Class对象,表示该对象的类型。 另外,typeid是C中的关键字,用于获取一个变量的类型信息。在Objective-C中,typeid并不适用于…...
相机可见区域,使用鼠标拖拽模型
知识点 向量射线检测坐标转换 思路 使用射线检测获取射线检测点与模型对象之间的偏移量 (世界空间)使用相机的坐标转换获取检测点与鼠标位置之间的偏移量 (屏幕空间)拖拽时,更新模型位置 代码示例 using UnityEng…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...