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;
}

最新文章

  1. 按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第
  2. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
  3. 64位Eclipse运行时提示&ldquo;Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll&rdquo;的一个解决方案
  4. WAMP环境下访问PHP提示下载PHP文件
  5. 9月18日,SQL学习基础1
  6. 使用 fn 标签 解决字数过多时用省略号代替 .............................
  7. MySQL数据库my.cnf配置文件注释详解
  8. Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)
  9. 好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效button
  10. android浏览器开发小技巧集锦(转)
  11. 一键部署mono 免费空间
  12. Windows Socket 组件 HP-Socket v2.2.3
  13. discuz管理员登录进入后台管理马上跳转到登录界面
  14. Laravel5 创建自定义门面(Facade)
  15. dedecms模板中 if else怎么写
  16. FFmpeg封装格式处理4-转封装例程
  17. Spring中四种实例化bean的方式
  18. Python之路 - 网络编程之粘包
  19. 百度图片http://img[0-9]\.imgtn.*?g此形式的链接图片下载方式
  20. ADNI以及study design简介

热门文章

  1. 0014 基于DRF框架开发(02 基类视图 GenericAPIView)
  2. java9小工具jshell
  3. CTS、CLS、CLR
  4. Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式
  5. python 集合运算交集&amp;并集&amp;差集
  6. LeetCode Two Sum&Two Sum II - Input array is sorted&3Sum&4Sum 一锅煮题解
  7. SpringBoot整合WEB开发--(十)配置AOP
  8. 栈和队列----将单链表的每K个节点之间逆序
  9. vue实现网页简单计算器实例代码
  10. P问题,NP问题,NPC问题学习笔记