这题就是一个素数筛再加上一个线段树。首先数据素数筛将每个最小素因子的倍数标记最小素因子(简单来讲就是把每个数最小素因子标记出来)然后再遍历每个数。线段树标记1-x-1中最小素因子小于当前最小素因子的数量。最后数组里就是1-x-1中符合标准的数字,最后输入再查询即可。这道题关键在于预先处理,处理好了这道题就很简单了。以下为A代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ffi;
const int maxn=1000005;
ffi node[maxn<<2];
ffi a[maxn],flag[maxn];
void pushup(int nd)
{node[nd]=node[nd<<1]+node[nd<<1|1];
}
void build(int l,int r,int nd)
{if(l==r){node[nd]=0;return;}int mid=(l+r)>>1;build(l,mid,nd<<1);build(mid+1,r,nd<<1|1);pushup(nd);
}
void update(int pos,int l,int r,int nd)
{if(l==r){node[nd]+=1;return;}int mid=(l+r)>>1;if(mid<pos)update(pos,mid+1,r,nd<<1|1);else update(pos,l,mid,nd<<1);pushup(nd);
}
ffi query(int s,int e,int l,int r,int nd)
{if(s<=l&&e>=r){return node[nd];}ffi ans=0;int mid=(l+r)>>1;if(s<=mid)ans+=query(s,e,l,mid,nd<<1);if(e>mid)ans+=query(s,e,mid+1,r,nd<<1|1);return ans;
}
void getsum()
{build(1,maxn,1);update(1,1,maxn,1);memset(a,0,sizeof(a));memset(flag,0,sizeof(flag));for(ffi i=2;i<=sqrt(maxn);i++){for(ffi j=i;j<maxn;j+=i)if(!flag[j]){a[j]=i;flag[j]=1;}}for(ffi i=2;i<maxn;i++){if(a[i]==0)a[i]=i;ffi tep=a[i];a[i]=query(1,a[i],1,maxn,1);update(tep,1,maxn,1);}
}
int main()
{int t;scanf("%d",&t);getsum();while(t--){ffi x;scanf("%lld",&x);printf("%lld\n",a[x]);}
}

以下为标准题解

选拔赛A题“一个部族,一个民族,一个弗雷尔卓德。”相关推荐

  1. “一个部族,一个民族,一个弗雷尔卓德。”

    http://csustacm.com:4803/contest/27/problem/A 这是一道线段树套素数筛的题 深思熟虑了两天后在快睡着的时候突然想到了解法 我好菜啊 首先要枚举素数 对于每个 ...

  2. A.一个部族,一个民族,一个弗雷尔卓德(素数筛+线段树)

    "一个部族,一个民族,一个弗雷尔卓德." Time limit1000 ms 题目链接https://csustacm.fun/problem/1083 Description 寒 ...

  3. A“一个部族,一个民族,一个弗雷尔卓德。”(素数筛,逆序对,树状数组)

    "一个部族,一个民族,一个弗雷尔卓德." Description 寒冰射手艾希新学会了一个技能,艾希通过这个技能成为了一名声名远扬的神箭手,从此再也无人敢侵犯弗雷尔卓德! 这个技能 ...

  4. A“一个部族,一个民族,一个弗雷尔卓德。”(素数筛,逆序对,树状数组)...

    "一个部族,一个民族,一个弗雷尔卓德." Description 寒冰射手艾希新学会了一个技能,艾希通过这个技能成为了一名声名远扬的神箭手,从此再也无人敢侵犯弗雷尔卓德! 这个技能 ...

  5. java里冒泡排序编程案例_java编程题:用Java实现一个冒泡排序算法

    /** * java编程题:用Java实现一个冒泡排序算法 */ public class Test12 { public static void main(String[] args) { int[ ...

  6. 蓝桥杯Java历年真题与答案_蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的)...

    蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的) 1蓝桥杯 java 历年真题及答案整理(闭关一个月,呕心沥血整理出来的)1. 算法是这样的,如果给定 N 个不同字符,将这 N 个 ...

  7. Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt(100)方法显示0到100之间的前50个随机整数

    Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt方法显示0到100之间的前50个随机整数 题目 赘述 代码 题目 ...

  8. Java黑皮书课后题第8章:*8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1。让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了

    *8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1.让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了 题目 题目描述与运行示例 破题 代码 题目 题 ...

  9. Java黑皮书课后题第8章:*8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1

    *8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1 题目 题目描述 破题 代码 题目 题目描述 8.22(偶数个1)编写一个程序,产 ...

  10. Java黑皮书课后题第8章:*8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和。编写一个程序,读取一个4*4的矩阵,显示主对角线和

    *8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和.编写一个程序,读取一个4*4的矩阵,显示主对角线和 题目 题目描述与运行示例 破题 ...

最新文章

  1. 淘宝特价版给拼多多送芒果,网友:这是什么操作?
  2. python基础7 (来自廖雪峰的官方网站)
  3. Python视频编辑库:MoviePy
  4. mysql html 转义_HTML/Mysql/XML 转义字符,备查
  5. composer php 打包图片,composer 打包到 packagist
  6. Android studio Mac 版  Plugin Error Plugin “GsonFormat4DataBinding“ is incompatible
  7. 教你如何申请CCNP的电子证书
  8. Java知识导航总图
  9. 零基础带你学习MySQL—多表查询笛卡尔集(二十)
  10. jQuery文档处理
  11. arcgis导出地图分辨率多少合适_地图册制作:ArcGIS分幅制图——以深圳地铁线路图为例...
  12. 启动Kettle时报错找不到文件javaw.exe
  13. windows NT的安全性
  14. mysql 日期减号_MySQL表字段名包含减号的问题
  15. UI设计师求职中常被问到的13个面试题及答案总结
  16. 为什么大容量的服务器SAS硬盘普遍都只有7200rpm的转速?
  17. 2022年最全快手市场研报合集(共61份)
  18. 输入你的密码来连接到_手机无线网络可以连接但上不了网如何解决【详解】
  19. 鼎捷APS助力茶花家居实现智能高效生产排程
  20. uniapp 旅游_uni-app旅游类跨平台APP制作实战教程

热门文章

  1. VPS SPS PPS
  2. Oracle中动态拼接参数怎么传,急oracle 动态游标传日期参数是如何传的呢,请赐教,多谢...
  3. IntelliJ IDEA 安装和使用
  4. 数据越多,AI决策模型越脆弱
  5. python爬虫 requests+lxml爬取前程无忧网之模拟浏览器登录
  6. 百度正式推出外链工具beta版本
  7. java spark一元(多元)线性回归
  8. Linux操作系统的基本使用(ubuntu)
  9. css什么是hack,CSS中hack是什么意思
  10. 无孔不入的广告,亦是恶龙的化身