zoukankan      html  css  js  c++  java
  • NEERC2017 E- Equal Numbers

    Equal Numbers

    标签:Eratosthenes筛法


    题目描述

    You are given a list of n integers a1,...,an. You can perform the following operation: choose some ai and multiply it by any positive integer.
    Your task is to compute the minimum number of different integers that could be on the list after k operations for all 0≤k≤n.

    输入

    The first line of the input contains single integer n (1≤n≤3≤105). The second line of the input contains n integers ai (1≤ai≤106).

    输出

    Output a single line that contains n + 1 integers. The i-th integer should be the minimum possible number of different integers in the list after i-1 operations.

    样例输入

    6
    3 4 1 2 1 2

    样例输出

    4 4 3 3 2 2 1

    分析

    • 贪心的优先修改出现次数较小的元素
    • 对于每个元素可以修改为它在序列中出现的一个倍数,也可以修改为已修改所有数字的(lcm),然后取两种方式的最小值

    代码

    展开 ```cpp #include #include #include #include using namespace std; const int maxn=1000500; int a[maxn],n,M; int b[maxn],ans[maxn]; int main(int argc, char const *argv[]) { scanf("%d", &n); for (int i = 0; i < n; ++i) { int x; scanf("%d", &x); a[x]++; M=(x>M?x:M); } int cnt=0,tot=0; for (int i = 1; i <= M; ++i) { if(!a[i]) continue; tot++; for (int j = i*2; j <= M; j+=i) { if(a[j]){ b[cnt++]=a[i]; break; } } } sort(b,b+cnt); memset(ans,0x3f,sizeof ans); int p=0,sum=0; for (int i = 0; i <= n; ++i) { while(p
  • 相关阅读:
    使用jQuery实现伪分页
    使用jQuery实现option的上移和下移
    理解Flux架构
    React 入门学习笔记1
    ES6新特性6:模块Module
    ES6新特性5:类(Class)和继承(Extends)
    ES6新特性4:字符串的扩展
    ES6新特性3:函数的扩展
    ES6新特性2:变量的解构赋值
    ES6新特性1:let和const
  • 原文地址:https://www.cnblogs.com/sciorz/p/8968954.html
Copyright © 2011-2022 走看看