D. Mahmoud and Ehab and another array construction task 因子分界模板+贪心+数学
2024-10-08 09:54:27
D. Mahmoud and Ehab and another array construction task 因子分解模板
题意
给出一个原序列a 找出一个字典序大于a的序列b,使得任意 \(i!=j\),\(gcd(a[i],a[j])==1\),现在要你找出这样的序列b,并且满足所有合法序列中输出字典序最小的那个
思路
维护一个set,set里面装所有当前可以取的合法元素,先把所有的数字放进set里面,因为要求字典序最小的序列b,并且b的字典序要大于a,当构造的b到当前位置截止时和a相同时,每次在set里面二分找第一个大于等于当前位置a的值,当不相同时,直接每次取set的最小的元素也就是首元素以满足构造的b字典序最小
因子分界模板 (听说是nlog(n),有空证一下)
void init(){
for(int i=2;i<maxn;i++){
if(!vis[i]){
vis[i]=1;
for(int j=i;j<maxn;j+=i){
vis[j]=1;
v[j].pb(i);
}
}
}
}
AC代码
#include<bits/stdc++.h>
#define pb push_back
#define F first
#define S second
#define pii pair<int,int>
using namespace std;
const int maxn=2e6+200;
bool vis[maxn+5];
set<int>s;
vector<int>v[maxn];
void init(){
for(int i=2;i<maxn;i++){
if(!vis[i]){
vis[i]=1;
for(int j=i;j<maxn;j+=i){
vis[j]=1;
v[j].pb(i);
}
}
s.insert(i);
}
}
bool vis2[maxn];
int main(){
int n;
init();
scanf("%d",&n);
int tmp;
int flag=1;
for(int i=1;i<=n;i++){
scanf("%d",&tmp);
int now=*s.begin();
if(flag){
now=*s.lower_bound(tmp);
if(now!=tmp)flag=0;
}
//s.erase(now);
printf("%d ",now);
for(int &x:v[now]){
for(int j=x;j<maxn;j+=x){
if(!vis2[j]){
vis2[j]=1;
s.erase(j);
}
}
}
}
// for(int i=1;i<=n;i++)printf("%d ",ans[i]);
return 0;
}
最新文章
- 按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
- 64位Eclipse运行时提示&ldquo;Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll&rdquo;的一个解决方案
- WAMP环境下访问PHP提示下载PHP文件
- 9月18日,SQL学习基础1
- 使用 fn 标签 解决字数过多时用省略号代替 .............................
- MySQL数据库my.cnf配置文件注释详解
- Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)
- 好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效button
- android浏览器开发小技巧集锦(转)
- 一键部署mono 免费空间
- Windows Socket 组件 HP-Socket v2.2.3
- discuz管理员登录进入后台管理马上跳转到登录界面
- Laravel5 创建自定义门面(Facade)
- dedecms模板中 if else怎么写
- FFmpeg封装格式处理4-转封装例程
- Spring中四种实例化bean的方式
- Python之路 - 网络编程之粘包
- 百度图片http://img[0-9]\.imgtn.*?g此形式的链接图片下载方式
- ADNI以及study design简介
热门文章
- 0014 基于DRF框架开发(02 基类视图 GenericAPIView)
- java9小工具jshell
- CTS、CLS、CLR
- Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式
- python 集合运算交集&;并集&;差集
- LeetCode Two Sum&Two Sum II - Input array is sorted&3Sum&4Sum 一锅煮题解
- SpringBoot整合WEB开发--(十)配置AOP
- 栈和队列----将单链表的每K个节点之间逆序
- vue实现网页简单计算器实例代码
- P问题,NP问题,NPC问题学习笔记