绝了场上居然没做这一题

题目大意:给你一个数$x=\Pi_{i=1}^{n}a_i!$。

你需要将x表示为$x=\Pi_{i=1}^{m}(c_i!)^{d_i}p$

满足$p$无法再分解,且$(c_1,d_1,c_2,d_2,...,c_m,d_m)$的字典序最大。

数据范围:$1≤n,a_i≤10^5$。

我们考虑预处理出$10^5$内的质数。

读入数列$a$后,我们对数列$a$进行一些处理。令$sum[i]$表示数列$a$中出现了多少个质因子$p[i]$,其中$p[i]$表示第i个质数。

然后,我们从大到小枚举$c_i$,然后再判断$d_i$是否可行。

这么搞复杂度貌似是$O(\dfrac{n^2}{\ln\ n})$的,然而实际上它跑得飞快?

 #include<bits/stdc++.h>
#define M 100010
#define L long long
using namespace std; int pri[M]={},las[M]={},id[M]={},use=;
void init(){
for(int i=;i<M;i++){
if(!las[i]) id[pri[++use]=i]=use,las[i]=;
for(int j=;j<=use&&i*pri[j]<M;j++){
las[i*pri[j]]=i;
if(i%pri[j]==) break;
}
}
} L a[M]={},sum[M]={},now[M]={};
int ansx[M]={},ansy[M]={},cnt=,top=;
bool cmp(){
for(int i=top;i;i--)
if(sum[i]<now[i]) return ;
return ;
} int main(){
init(); top=use;
int n; scanf("%d",&n);
for(int i=n,x;i;i--) scanf("%d",&x),a[x]++;
for(int i=M-;i;i--) a[i]+=a[i+];
for(int i=M-;i;i--){
for(int j=i;j>;j=las[j]){
int p=id[j/las[j]];
sum[p]+=a[i],now[p]++;
}
}
for(int i=M-;i>;i--){
if(cmp()){
L mns=M;
for(int j=top;j;j--) if(now[j]) mns=min(mns,sum[j]/now[j]);
for(int j=top;j;j--) sum[j]-=now[j]*mns;
cnt++; ansx[cnt]=i; ansy[cnt]=mns;
}
for(int j=i;j>;j=las[j]){
int p=id[j/las[j]];
now[p]--;
}
while(top&&now[top]==) top--;
}
printf("%d\n",cnt);
for(int i=;i<=cnt;i++) printf("%d %d\n",ansx[i],ansy[i]);
}

【xsy2815】净空 大暴力的更多相关文章

  1. 大暴力——[HAOI]2012音量调节

    题目:[HAOI]2012音量调节 描述: 问题描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经做好了一个列表,里 ...

  2. BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】

    1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1689  Solved: 1335[Submit][St ...

  3. 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?

    开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...

  4. bzoj 3489: A simple rmq problem k-d树思想大暴力

    3489: A simple rmq problem Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 551  Solved: 170[Submit][ ...

  5. Vijos P1786 质因数分解【暴力】

    质因数分解 背景 NOIP2012普及组第一题 描述 已知正整数n是两个不同的质数的乘积试求出较大的那个质数. 格式 输入格式 输入只有一行包含一个正整数n. 输出格式 输出只有一行包含一个正整数p, ...

  6. CDOJ 1292 卿学姐种花 暴力 分块 线段树

    卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...

  7. [OpenJudge8786][暴力DP]方格取数

    方格取数 总时间限制: 1000ms 内存限制: 65536kB [描述] 设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): ...

  8. 美团2018年CodeM大赛-资格赛 分数 暴力模拟

    链接:https://www.nowcoder.com/acm/contest/138/D来源:牛客网 小胖参加了人生中最重要的比赛——MedoC资格赛.MedoC的资格赛由m轮构成,使用常见的“加权 ...

  9. thusc2016游记&&滚粗记&&酱油记

    #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/w ...

随机推荐

  1. 使用hibernate从一方获取多方信息时报错:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role

    引起原因:hibernate加载关联对象的方式有懒加载方式和立即加载方式. 如果在多对一的配置中没有指定加载方式,而一对多的配置中指定了懒加载方式,因此在获取一方是可获取到值,而获取多方时sessio ...

  2. verilog中的多维数组

    reg  arrayb [7:0] [0:255] ;//二维数组.

  3. Java理论学时第三节。课后作业。

    如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算? 运行结果. 根据我的总结,它们三个的优先级是:构造方法 > 字段初始值 > 初始化块. 当多个类之间有继承关系 ...

  4. Java案例:随机点名器

    案例介绍: 随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息.需具备以下3个内容:1)存储所有同学姓名2)总览全班同学姓名3)随机点名其中一人,打印到控制台 案例需求分析: 全班同 ...

  5. POJ3104--Drying(Binary Search)

    It is very hard to wash and especially to dry clothes in winter. But Jane is a very smart girl. She ...

  6. 【MySQL】死锁问题分析

    1.MySQL常用存储引擎的锁机制: MyISAM和MEMORY采用表级锁(table-level locking)   BDB采用页面锁(page-level locking)或表级锁,默认为页面锁 ...

  7. Lombok自定义annotation扩展含Intellij插件

    Lombok简介 Lombok(https://projectlombok.org/)  提供了以注解的形式为java对象增加属性和方法,这使得原来冗长的java源文件变的简洁(不需要再使用ide去生 ...

  8. USTC《现代软件工程》春季学期——第一次个人作业:词频统计

    截止日期 2018年3月29日23:59 要求 1. 对源文件(*.txt,*.cpp,*.h,*.cs,*.html,*.js,*.java,*.py,*.php等,文件夹内的所有文件)统计字符数. ...

  9. C语言中:static与extern对变量和函数的作用

    1.两者对全局变量 static对全局变量,表示定义一个内部变量 extern对全局变量,表示声明一个外部变量 说明: 1.内部变量:定义的变量只能在本文件中访问,不能被其他文件访问. 2.不同文件中 ...

  10. 《mysql必知必会》学习_第五章_20180730_欢

    使用的工具是wamp的Mysql. P29 select prod_name from products;  #在表products中选列prod_name,顺寻不是纯粹的随机,但是没有说明排列顺序, ...