nflsoj 20034 #12429. 「NOIP2021模拟赛0915长郡」仪式感
时间:2021-09-20
本文章向大家介绍nflsoj 20034 #12429. 「NOIP2021模拟赛0915长郡」仪式感,主要包括nflsoj 20034 #12429. 「NOIP2021模拟赛0915长郡」仪式感使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
小 L 喜欢仪式感。小 F 喜欢集合。小 L 喜欢有仪式感的集合。定义一个集合 \(S\) 的仪式感为 \(k\) ,当且仅当S中的所有元素的最大公约数恰好为 \(k\) . 现在小F有一个大小为 \(n\) 的集合 \(S\) ,小 L 想请你对于 \(\forall k\in [1,m]\) ,分别求出 \(\min\{|S_0|\}(S_0\in A)\) 和 \(\max\{S_0\}(S_0\in A)\),其中 \(A\) 为 \(S\) 的所有仪式感为 \(k\) 的非空子集组成的集合。即意,分别求出最少/最多能从 \(A\) 中取出多少个数,使它们的 \(gcd=k\) 。
\(1\leq n,m\leq 3\times 10^5,m<\max(S_i)\)
简化版本是 cf1043f .
最小值是可以枚举的,那么,如果对于一个 \(1\leq k\leq m\) ,如果存在最小值,那么最大值就是所有包含 \(k\) 为因数的数的个数.
时间复杂度 : \(O(n\log n)\)
空间复杂度 : \(O(n)\)
code
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
inline int read(){
char ch=getchar();
while(ch<'0'||ch>'9')ch=getchar();
int res=0;
while(ch>='0'&&ch<='9'){
res=res*10+ch-'0';
ch=getchar();
}
return res;
}
inline void print(int res){
if(res==0){
putchar('0');
return;
}
int a[10],len=0;
while(res>0){
a[len++]=res%10;
res/=10;
}
for(int i=len-1;i>=0;i--)
putchar(a[i]+'0');
}
const int inf=1e9+10;
int n,m;
int a[300010];
int cnt[300010];
class num{
public:
int mod;
int f[300010];
int c[300010][10];
void build(){
memset(c,0,sizeof(c));
c[0][0]=1;
for(int i=1;i<300010;i++){
c[i][0]=1;
for(int j=1;j<=min(i,9);j++){
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}
}
}
}h1,h2;
vector<int>v[300010];
int mn[300010],mx[300010];
void work(){
for(int i=1;i<=300000;i++){
for(int j=i;j<=300000;j+=i){
v[j].push_back(i);
}
}
}
void get_cnt(int val){
for(int i=0;i<(int)v[val].size();i++){
cnt[v[val][i]]++;
}
}
int main(){
// freopen("sor.in","r",stdin);
// freopen("sor.out","w",stdout);
h1.mod=998244353;
h2.mod=1000000007;
h1.build();
h2.build();
work();
// cout<<"ok"<<endl;
n=read();m=read();
for(int i=0;i<n;i++)a[i]=read();
for(int i=0;i<n;i++)get_cnt(a[i]);
// for(int i=1;i<=10;i++)cout<<cnt[i]<<" ";
// cout<<endl;
for(int i=0;i<300010;i++)mn[i]=inf;
for(int i=0;i<300010;i++)mx[i]=-inf;
for(int t=1;t<10;t++){
memset(h1.f,0,sizeof(h1.f));
memset(h2.f,0,sizeof(h2.f));
for(int i=300000;i>=1;i--){
h1.f[i]=h1.c[cnt[i]][t];
h2.f[i]=h2.c[cnt[i]][t];
for(int j=i*2;j<=300000;j+=i){
h1.f[i]=(h1.f[i]-h1.f[j]+h1.mod)%h1.mod;
h2.f[i]=(h2.f[i]-h2.f[j]+h2.mod)%h2.mod;
}
// if(h1.f[i]!=0||h2.f[i]!=0)cout<<i<<","<<h1.f[i]<<","<<h2.f[i]<<" ";
if(h1.f[i]!=0||h2.f[i]!=0){
mn[i]=min(mn[i],t);
mx[i]=max(mx[i],cnt[i]);
}
}
}
for(int i=1;i<=m;i++){
if(mn[i]==inf){
putchar('-');
putchar('1');
}
else{
print(mn[i]);
}
putchar(' ');
if(mx[i]==-inf){
putchar('-');
putchar('1');
}
else{
print(mx[i]);
}
putchar('\n');
}
return 0;
}
/*inline? ll or int? size? min max?*/
/*
7 5
30 60 21 42 70 15 30
*/
/*
3 6
2 4 6
*/
原文地址:https://www.cnblogs.com/suadwm/p/15314191.html
- 手把手教你安装大数据开发测试环境手把手教你安装大数据开发测试环境
- Humble Numbers(丑数) 超详解!
- 1284 2 3 5 7的倍数
- 爬虫入门到精通-爬虫之异步加载(实战花瓣网)
- 【爬虫军火库】Chrome F12使用Network分析异步请求
- 1305 Pairwise Sum and Divide
- mysql分布式数据库中间件对比mysql分布式数据库中间件对比
- 爬虫入门到精通-headers的详细讲解(模拟登录知乎)
- 1347 旋转字符串
- 爬虫入门到精通-网页的解析(xpath)
- HDU 2549 壮志难酬
- 爬虫入门到精通-网页的解析(正则)
- 一文读懂非关系型数据库(NoSQL)
- 爬虫入门到精通-网页的下载
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux第三课——目录操作
- Linux基础第四课——文件操作
- Linux基础第五课——用户管理
- Linux基础第六课——grep|awk|sort|uniq
- Python向上取整,向下取整以及四舍五入函数
- 使用requests模块post payload请求
- 解决HTTP status code is not handled or not allowed
- Day8.函数那些事儿
- mac下更改Jupyter notebook工作目录
- Scrapy中将item字段转为简体or繁体
- Mac OS 安装Fiddler
- Python requests模块解析XML
- python requests提示警告InsecureRequestWarning
- python进程池:multiprocessing.pool
- AttributeError: 'list' object has no attribute 'keys'